Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								c109ec0955 
								
							 
						 
						
							
							
								
								compiler: let a failed typeassert return the nil value  
							
							... 
							
							
							
							See the comment in the source for details.
The underlying type would be casted to the final one even before the
type is checked. This apparently led LLVM to think the type cast was OK,
so it speculatively dereferenced a pointer (while the underlying type
was an int). Speculatively dereferencing a pointer is fine when it is a
valid pointer, but when it is not it leads to a segfault (or worse).
This is what I saw, and it took me a while to figure out where it went
wrong. 
							
						 
						
							2018-09-03 19:18:10 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								efdc2b8672 
								
							 
						 
						
							
							
								
								compiler: add basic debug info  
							
							... 
							
							
							
							Only implements debugging with source lines and stacktraces (without
parameters), which already is a huge improvement over no debug
information at all. This should be extended to arguments and local
variables (of the correct DWARF type), but this is more work. 
							
						 
						
							2018-09-03 19:17:44 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								a7fcef62e0 
								
							 
						 
						
							
							
								
								compiler: implement comparing interfaces to nil  
							
							... 
							
							
							
							Comparing an interface to nil is easy, as the dynamic type is also nil.
Comparing the dynamic values (when the dynamic types match) is much
harder and depends on reflection capabilities, so is not yet implemented. 
							
						 
						
							2018-09-03 01:13:07 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								c100e4d67f 
								
							 
						 
						
							
							
								
								compiler: fix nil constant interface  
							
							... 
							
							
							
							A nil interface has no dynamic type (or: nil dynamic type). Don't try to
use the static type as the dynamic type, because these are different. 
							
						 
						
							2018-09-03 01:01:24 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								4ed04309a3 
								
							 
						 
						
							
							
								
								compiler: truncate shift amount when needed  
							
							
							
						 
						
							2018-09-03 00:22:55 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								ebd87ce4cd 
								
							 
						 
						
							
							
								
								compiler: implement []byte(str)  
							
							
							
						 
						
							2018-09-03 00:21:33 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								a080ce26ef 
								
							 
						 
						
							
							
								
								compiler: implement string slicing  
							
							
							
						 
						
							2018-09-02 23:46:31 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								1170cdc21f 
								
							 
						 
						
							
							
								
								compiler: implement Field expression  
							
							... 
							
							
							
							This expression is used when calling a method on an embedded type in a
struct. 
							
						 
						
							2018-09-02 21:14:33 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								9519f989bc 
								
							 
						 
						
							
							
								
								runtime/scheduler: make debugging easier + rename some functions  
							
							... 
							
							
							
							This shouldn't affect functionality but makes debugging a whole lot
easier. A scheduler is difficult so make it easy to debug. 
							
						 
						
							2018-09-02 19:30:13 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								8ba3fef7d7 
								
							 
						 
						
							
							
								
								runtime/scheduler: always update task state  
							
							... 
							
							
							
							Not updating it only saves 4 bytes and makes debugging harder. 
							
						 
						
							2018-09-02 19:28:41 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								d183f12395 
								
							 
						 
						
							
							
								
								nrf: fix sleep  
							
							... 
							
							
							
							For some reason, the old behavior stopped working at some point (maybe
at the nrfx update?). Change sleep behavior to be more correct. 
							
						 
						
							2018-09-02 19:20:05 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								1e90858145 
								
							 
						 
						
							
							
								
								Fix blocking functions  
							
							... 
							
							
							
							Don't think they're blocking when the scheduler has been disabled. 
							
						 
						
							2018-09-02 18:39:39 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								bfff0c33e4 
								
							 
						 
						
							
							
								
								Fix external globals  
							
							... 
							
							
							
							This broke the allocator on ARM, and with that the blinky example. 
							
						 
						
							2018-09-02 18:37:28 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								88b6b2e7f5 
								
							 
						 
						
							
							
								
								Optimize/eliminate bounds checking  
							
							... 
							
							
							
							TODO: do better at it by tracking min/max values of integers. The
following straightforward code doesn't have its bounds checks removed:
    for _, n := range slice {
        println(n)
    } 
							
						 
						
							2018-09-02 16:28:46 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								42cddd3260 
								
							 
						 
						
							
							
								
								Move runtime.TargetBits out of the compiler  
							
							
							
						 
						
							2018-09-02 16:00:31 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								9fca0e99b5 
								
							 
						 
						
							
							
								
								compiler: use InternalLinkage where appropriate  
							
							... 
							
							
							
							Internal linkage means that symbols show up in tools like objdump, which
is very useful for debugging. 
							
						 
						
							2018-09-02 15:58:49 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								58c87329d4 
								
							 
						 
						
							
							
								
								Implement closures and bound methods  
							
							
							
						 
						
							2018-09-02 03:39:37 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								58b853bbef 
								
							 
						 
						
							
							
								
								Defer for trivial cases  
							
							
							
						 
						
							2018-09-01 17:14:38 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								cd2a9d99a1 
								
							 
						 
						
							
							
								
								Add dummy runtime.SetFinalizer()  
							
							... 
							
							
							
							Requirement for the os package. The os package can't be compiled yet,
though. 
							
						 
						
							2018-08-31 21:56:46 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								887814a69d 
								
							 
						 
						
							
							
								
								Be able to handle complex64 and complex128 types  
							
							... 
							
							
							
							No support for complex types yet, but at least be able to handle their
types. 
							
						 
						
							2018-08-31 21:30:21 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								94ce893ab4 
								
							 
						 
						
							
							
								
								Copy printfloat() from original runtime  
							
							... 
							
							
							
							I've tried writing my own, but I couldn't make it correct in all cases.
So just copy the one from upstream for now, hopefully to be replaced at
some point.
TODO: add a printfloat32() implementation, now it just casts to float64.
This will be useful for embedded systems that sometimes have float32 but
not float64. 
							
						 
						
							2018-08-31 21:29:34 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								46d2d2e777 
								
							 
						 
						
							
							
								
								Add support for floats  
							
							... 
							
							
							
							I'm not sure all operations are supported but the vast majority should
be supported now.
This commit also refactors binop translation. 
							
						 
						
							2018-08-31 21:29:13 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								3cdf606183 
								
							 
						 
						
							
							
								
								Improve runtime.printuint32: avoid recursion  
							
							... 
							
							
							
							This reduces size slightly at least on the PCA10040, and is probably
faster and probably uses less stack as well. 
							
						 
						
							2018-08-31 21:29:06 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Ayke van Laethem 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								f057d612fc 
								
							 
						 
						
							
							
								
								Add support for indexing in an array by a non-constant  
							
							
							
						 
						
							2018-08-31 21:20:10 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									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