tinygo/compiler
Nia Waldvogel 641dcd7c16 internal/task: use asyncify on webassembly
This change implements a new "scheduler" for WebAssembly using binaryen's asyncify transform.
This is more reliable than the current "coroutines" transform, and works with non-Go code in the call stack.

runtime (js/wasm): handle scheduler nesting

If WASM calls into JS which calls back into WASM, it is possible for the scheduler to nest.
The event from the callback must be handled immediately, so the task cannot simply be deferred to the outer scheduler.
This creates a minimal scheduler loop which is used to handle such nesting.
2021-11-14 10:49:28 +01:00
..
ircheck compiler: move IR checker to separate package 2020-03-21 15:45:25 +01:00
llvmutil compiler: change symbol name for string and packed data constants 2021-11-03 16:28:04 +01:00
testdata internal/task: use asyncify on webassembly 2021-11-14 10:49:28 +01:00
alias.go fix export math functions issue 2021-10-03 16:28:34 +02:00
asserts.go compiler: fix indices into strings and arrays 2021-11-13 11:04:24 +01:00
atomic.go targets: match LLVM triple to the one Clang uses 2021-11-05 09:42:00 +01:00
calls.go all: fix staticcheck warnings 2021-09-27 15:47:12 +02:00
channel.go compiler: avoid zero-sized alloca in channel operations 2021-09-09 11:24:52 +02:00
compiler.go compiler: fix indices into strings and arrays 2021-11-13 11:04:24 +01:00
compiler_test.go internal/task: use asyncify on webassembly 2021-11-14 10:49:28 +01:00
defer.go compiler, runtime: add layout parameter to runtime.alloc 2021-11-02 22:16:15 +01:00
errors.go all: fix staticcheck warnings 2021-09-27 15:47:12 +02:00
func.go transform: refactor interrupt lowering 2021-11-06 09:40:15 +01:00
gc.go compiler: track the result of string concatenation 2020-04-02 14:04:25 +02:00
goroutine.go internal/task: use asyncify on webassembly 2021-11-14 10:49:28 +01:00
inlineasm.go all: fix staticcheck warnings 2021-09-27 15:47:12 +02:00
interface.go compiler: refactor when the optsize attribute is set 2021-11-03 13:40:13 +01:00
interrupt.go transform: refactor interrupt lowering 2021-11-06 09:40:15 +01:00
intrinsics.go compiler: move LLVM math builtin support into the compiler 2021-08-10 20:08:27 +02:00
llvm.go compiler: change symbol name for string and packed data constants 2021-11-03 16:28:04 +01:00
map.go compiler: refactor map operations to use the builder object 2020-03-25 20:17:46 +01:00
sizes.go reflect: implement Sizeof and Alignof for func values 2021-03-29 01:04:11 +02:00
symbol.go compiler: add "target-cpu" and "target-features" attributes 2021-11-10 11:16:13 +01:00
syscall.go compiler: implement syscall.rawSyscallNoError in inline assembly 2021-06-25 16:14:47 +02:00
volatile.go compiler: do not perform nil checking when indexing slices 2020-03-27 07:38:16 +01:00