tinygo/compiler
Ayke van Laethem 542135c357 compiler,runtime: implement stack-based scheduler
This scheduler is intended to live along the (stackless) coroutine based
scheduler which is needed for WebAssembly and unsupported platforms. The
stack based scheduler is somewhat simpler in implementation as it does
not require full program transform passes and supports things like
function pointers and interface methods out of the box with no changes.

Code size is reduced in most cases, even in the case where no scheduler
scheduler is used at all. I'm not exactly sure why but these changes
likely allowed some further optimizations somewhere. Even RAM is
slightly reduced, perhaps some global was elminated in the process as
well.
2019-08-15 17:31:54 +02:00
..
asserts.go compiler: implement full slice expression 2019-08-04 17:51:16 +02:00
calls.go Trivial typo fix 2019-06-20 13:30:38 +02:00
channel.go compiler,runtime: implement stack-based scheduler 2019-08-15 17:31:54 +02:00
compiler.go compiler,runtime: implement stack-based scheduler 2019-08-15 17:31:54 +02:00
defer.go compiler,runtime: implement a portable conservative GC 2019-07-01 16:30:33 +02:00
errors.go all: improve compiler error handling 2019-04-26 08:52:10 +02:00
func-lowering.go compiler: refactor named types to create them lazily 2019-06-08 22:17:09 +02:00
func.go compiler: fix crash with linked lists in interfaces 2019-08-05 14:44:30 +02:00
gc.go all: use baremetal build tag 2019-08-04 17:12:07 +02:00
goroutine-lowering.go compiler,runtime: implement stack-based scheduler 2019-08-15 17:31:54 +02:00
goroutine.go compiler,runtime: implement stack-based scheduler 2019-08-15 17:31:54 +02:00
inlineasm.go all: add HiFive1 rev B board with RISC-V architecture 2019-07-07 14:03:24 +02:00
interface-lowering.go compiler: refactor named types to create them lazily 2019-06-08 22:17:09 +02:00
interface.go reflect: add support for linked lists 2019-08-11 15:00:43 +02:00
llvm.go reflect: add support for linked lists 2019-08-11 15:00:43 +02:00
map.go compiler: add support for pointers as map keys 2019-06-08 21:48:05 +02:00
optimizer.go compiler,runtime: implement stack-based scheduler 2019-08-15 17:31:54 +02:00
reflect.go reflect: add support for linked lists 2019-08-11 15:00:43 +02:00
sizes.go compiler: allow larger-than-int values to be sent across a channel 2019-05-05 16:46:50 +02:00
symbol.go compiler: move global handling from ir to compiler package 2019-06-08 22:17:09 +02:00
syscall.go Add support for linux/386 syscalls. 2019-08-04 18:15:06 +02:00
volatile.go compiler: implement volatile operations as compiler builtins 2019-05-14 12:24:01 +02:00
wordpack.go compiler: track all pointers returned by runtime.alloc 2019-07-03 21:22:12 +02:00