Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								a1359d7f64 
								
							 
						 
						
							
							
								
								passes: small code cleanup  
							
							
							
						 
						
							2018-08-30 22:54:44 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								734b0cb6bc 
								
							 
						 
						
							
							
								
								Implement runtime functions for reflect  
							
							... 
							
							
							
							The reflect package isn't supported yet. But at least the Go
parser/typechecker can now deal with it. 
							
						 
						
							2018-08-30 22:53:34 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								b13cfc5255 
								
							 
						 
						
							
							
								
								Be able to deal with anonymous functions  
							
							
							
						 
						
							2018-08-30 22:52:00 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								674b506bb2 
								
							 
						 
						
							
							
								
								Replace compiler hack for sync package with //go:linkname  
							
							
							
						 
						
							2018-08-30 22:38:45 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								74bd378c29 
								
							 
						 
						
							
							
								
								Replace _llvm_* workaround in the scheduler with //go:linkname  
							
							... 
							
							
							
							This also removes the need for the _llvm_ special case in the compiler.
And it makes the scheduler code a whole lot nicer! 
							
						 
						
							2018-08-30 22:30:16 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								771f23e320 
								
							 
						 
						
							
							
								
								Implement //go:linkname pragma  
							
							
							
						 
						
							2018-08-30 22:27:19 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								906e061e37 
								
							 
						 
						
							
							
								
								Replace own dummy syscall with standard library syscall  
							
							... 
							
							
							
							This makes it easier to support other standard library packages. 
							
						 
						
							2018-08-30 05:58:54 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								e01259ba77 
								
							 
						 
						
							
							
								
								interpreter: string concatenation  
							
							... 
							
							
							
							Sometimes strings are concatenated in a way that isn't const-propagated
by the SSA transformation (e.g. the result of a function call).
Concatenate them during init() interpretation. 
							
						 
						
							2018-08-30 05:54:40 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								16cdffc367 
								
							 
						 
						
							
							
								
								Try to interpret simple function calls in init() functions  
							
							... 
							
							
							
							This is useful for example for globals like these:
    import "errors"
    var MyError = errors.New("mymodule: something went wrong!") 
							
						 
						
							2018-08-30 05:53:22 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								15f62b29cf 
								
							 
						 
						
							
							
								
								Add runtime.GOOS  
							
							
							
						 
						
							2018-08-30 05:48:16 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								82d0d70ba2 
								
							 
						 
						
							
							
								
								Add (hardcoded) runtime.GOROOT()  
							
							... 
							
							
							
							Necessary for the time package. 
							
						 
						
							2018-08-30 05:41:48 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								cfd20c7a12 
								
							 
						 
						
							
							
								
								Add a number for the "error" type by default  
							
							
							
						 
						
							2018-08-30 05:40:11 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								a5252d07f0 
								
							 
						 
						
							
							
								
								Support zero-initialized pointers in globals  
							
							
							
						 
						
							2018-08-30 05:38:27 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								5edf94ea10 
								
							 
						 
						
							
							
								
								Fix named structs inside global named structs  
							
							
							
						 
						
							2018-08-30 05:36:44 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								7956ca2f29 
								
							 
						 
						
							
							
								
								Function pointers in global variables  
							
							
							
						 
						
							2018-08-30 05:36:09 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								a4fd096393 
								
							 
						 
						
							
							
								
								Add dummy channel support  
							
							
							
						 
						
							2018-08-30 05:32:18 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								6e0c60a7a1 
								
							 
						 
						
							
							
								
								Some extra header docs  
							
							
							
						 
						
							2018-08-30 02:36:13 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								0b372ba5bd 
								
							 
						 
						
							
							
								
								Support initialized map values in another global  
							
							
							
						 
						
							2018-08-30 02:32:35 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								42711c11e9 
								
							 
						 
						
							
							
								
								Be able to print maps to some degree  
							
							... 
							
							
							
							Print the number of elements, or nil if it is a nil map. 
							
						 
						
							2018-08-30 02:26:48 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								d930a9ba16 
								
							 
						 
						
							
							
								
								Implement print() for interface values  
							
							
							
						 
						
							2018-08-30 02:20:36 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								25344bc08f 
								
							 
						 
						
							
							
								
								Reorder Program.interpret cases  
							
							
							
						 
						
							2018-08-30 02:09:02 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								75477eb14e 
								
							 
						 
						
							
							
								
								Implement global .data-initalized interfaces  
							
							
							
						 
						
							2018-08-30 02:08:00 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								d13c124df9 
								
							 
						 
						
							
							
								
								Implement casting from (Unicode) integer to string  
							
							
							
						 
						
							2018-08-30 00:36:54 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								fdc56d5940 
								
							 
						 
						
							
							
								
								Implement convert string <- []byte  
							
							
							
						 
						
							2018-08-29 23:54:46 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								eed25c78df 
								
							 
						 
						
							
							
								
								Clean up ssa.Convert and ssa.ChangeType  
							
							
							
						 
						
							2018-08-29 23:36:58 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								8b95b869ab 
								
							 
						 
						
							
							
								
								Implement string concatenation  
							
							
							
						 
						
							2018-08-29 22:10:46 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								c912091f8b 
								
							 
						 
						
							
							
								
								Add integer key support to hashmap  
							
							
							
						 
						
							2018-08-29 21:50:43 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								8f7db8661b 
								
							 
						 
						
							
							
								
								Move string type to runtime in separate file  
							
							
							
						 
						
							2018-08-29 20:55:09 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								bf160d096b 
								
							 
						 
						
							
							
								
								Move lenType definition to runtime (partially)  
							
							
							
						 
						
							2018-08-29 20:48:56 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								abaae5b90d 
								
							 
						 
						
							
							
								
								Remove unnecessary compiler workaround  
							
							... 
							
							
							
							This workaround isn't needed anymore: the feature has been implemented
now. 
							
						 
						
							2018-08-29 20:45:50 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								7991243554 
								
							 
						 
						
							
							
								
								Remove CGo from machine module  
							
							... 
							
							
							
							It isn't necessary anymore but apparently the Go importer didn't
complain about an unused import. 
							
						 
						
							2018-08-29 20:44:56 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								d4f5700625 
								
							 
						 
						
							
							
								
								Remove use of CGo in the runtime  
							
							... 
							
							
							
							CGo depends on syscall, which (in the standard library) depends on sync,
which depends on the runtime. There are also other import cycles. To be
able to use the syscall package from upstream, stop using CGo. 
							
						 
						
							2018-08-29 20:01:33 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								d620f0d188 
								
							 
						 
						
							
							
								
								Implement multiple return values from functions  
							
							... 
							
							
							
							Use structs in LLVM as it appears LLVM has no support for multiple
return values (I should look into how Rust does it...). 
							
						 
						
							2018-08-29 19:42:22 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								ee10162564 
								
							 
						 
						
							
							
								
								Extra check on interface asserts  
							
							... 
							
							
							
							Interface asserts haven't been implemented yet. Don't produce incorrect
code in that case. 
							
						 
						
							2018-08-27 00:50:03 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								0c71ed81a4 
								
							 
						 
						
							
							
								
								Rename runtime.itfmethod -> runtime.interfaceMethod  
							
							
							
						 
						
							2018-08-27 00:49:33 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								64e478ef36 
								
							 
						 
						
							
							
								
								Switch to 16-bit typecodes and method IDs  
							
							... 
							
							
							
							It took Android some time to even hit the 64K limit for regular method
calls, so switching to 16-bit IDs should be fine for method IDs of
interfaces. At least for the time being. When this limit is ever hit,
I'll think of another way, probably involving some platform-dependent
interface code (e.g. microcontrollers won't need 64K of methods) or
detecting the limit at build time.
https://android-developers.googleblog.com/2014/12/google-play-services-and-dex-method.html 
Code size isn't changed, probably because the compiler optimizes away
all method calls. 
							
						 
						
							2018-08-27 00:32:30 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								539de9db9e 
								
							 
						 
						
							
							
								
								Move interface method calls in Go from LLVM IR + documentation  
							
							... 
							
							
							
							This commit moves the itfmethod call implemented directly in LLVM IR to
a Go implementation in the runtime. Additionally, it fixes variable
names to be more obvious and adds a lot of documentation to explain how
interfaces actually work in TinyGo.
Code size changes for src/examples/hello:
nrf:  -144
unix: -93
I'm guessing this code size reduction is a result of removing the
'noinline' function attribute. 
							
						 
						
							2018-08-26 23:40:11 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								309de00fd6 
								
							 
						 
						
							
							
								
								Simplify function names by removing $async suffix  
							
							
							
						 
						
							2018-08-26 21:45:28 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								58e31fd470 
								
							 
						 
						
							
							
								
								Simplify a bit of code  
							
							
							
						 
						
							2018-08-26 21:38:55 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								de6c20f1bd 
								
							 
						 
						
							
							
								
								Implement untyped bool  
							
							
							
						 
						
							2018-08-25 03:24:06 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								c9e6a52d05 
								
							 
						 
						
							
							
								
								Implement constant slice  
							
							... 
							
							
							
							It's used somewhere in the sync package, but I'm not sure where. 
							
						 
						
							2018-08-25 02:58:59 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								9f2bcfe5e3 
								
							 
						 
						
							
							
								
								Implement global interface variable constant  
							
							
							
						 
						
							2018-08-25 02:58:00 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								c25b448758 
								
							 
						 
						
							
							
								
								Rewrite init() interpretation to a real interpreter  
							
							... 
							
							
							
							Instead of mostly heuristics, actually execute the init() instruction in
an interpreter to calculate initializers for globals. This is far more
flexible and extensible, and gives the option of extending the
interpreter to other code and make it a partial evaluator. 
							
						 
						
							2018-08-25 02:07:01 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								9b4ac0459b 
								
							 
						 
						
							
							
								
								Make strings constant  
							
							... 
							
							
							
							For some reason this was disabled. 
							
						 
						
							2018-08-24 05:18:41 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								f49ceddd73 
								
							 
						 
						
							
							
								
								Enable elimination of dead globals by marking them private  
							
							... 
							
							
							
							This eliminates most of the newly created dead globals. 
							
						 
						
							2018-08-24 04:25:16 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								5f28b07f75 
								
							 
						 
						
							
							
								
								Enable aggressive code size optimizations: -Oz  
							
							
							
						 
						
							2018-08-24 03:35:39 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								f9f92de1c3 
								
							 
						 
						
							
							
								
								Add a test for the unicode package  
							
							... 
							
							
							
							This massively increases .data size, possibly because loads of unused
globals are included. I'll need to investigate what's going on here. For
now, increase the RAM size for nrf chips (the nrf52 has 64kB of RAM). 
							
						 
						
							2018-08-24 03:35:03 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								36a5af9e6d 
								
							 
						 
						
							
							
								
								README: dead code elimination  
							
							
							
						 
						
							2018-08-24 03:02:06 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								ab3358e5a3 
								
							 
						 
						
							
							
								
								Add make fmt  
							
							
							
						 
						
							2018-08-24 02:59:18 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								fa12da95e2 
								
							 
						 
						
							
							
								
								Some documentation fixes  
							
							
							
						 
						
							2018-08-24 02:56:09 +02:00