tinygo/transform
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
..
testdata transform: refactor interrupt lowering 2021-11-06 09:40:15 +01:00
allocs.go compiler, runtime: add layout parameter to runtime.alloc 2021-11-02 22:16:15 +01:00
allocs_test.go transform: split interface and reflect lowering 2021-05-03 20:10:49 +02:00
coroutines.go compiler, runtime: add layout parameter to runtime.alloc 2021-11-02 22:16:15 +01:00
errors.go refactor coroutine lowering and tasks 2020-03-17 12:16:10 +01:00
func-lowering.go compiler: decouple func lowering from interface type codes 2021-04-12 12:07:42 +02:00
func-lowering_test.go transform: move tests to transform_test package 2021-04-22 19:53:42 +02:00
gc.go transform: improve GC stack slot pass to work around a bug 2021-08-04 20:06:59 +02:00
gc_test.go transform: move tests to transform_test package 2021-04-22 19:53:42 +02:00
globals.go compiler: add function and global section pragmas 2021-06-24 15:00:30 +02:00
globals_test.go transform: move tests to transform_test package 2021-04-22 19:53:42 +02:00
goroutine_test.go transform: move tests to transform_test package 2021-04-22 19:53:42 +02:00
interface-lowering.go transform: add debug info in interface lowering pass 2021-11-06 10:50:55 +01:00
interface-lowering_test.go compiler: add "target-cpu" and "target-features" attributes 2021-11-10 11:16:13 +01:00
interrupt.go transform: refactor interrupt lowering 2021-11-06 09:40:15 +01:00
interrupt_test.go transform: refactor interrupt lowering 2021-11-06 09:40:15 +01:00
llvm.go runtime/fe310: add support for PLIC interrupts 2020-01-27 19:58:39 +01:00
maps.go all: move OptimizeMaps to transforms and add tests 2019-09-15 21:26:27 +02:00
maps_test.go transform: move tests to transform_test package 2021-04-22 19:53:42 +02:00
optimizer.go internal/task: use asyncify on webassembly 2021-11-14 10:49:28 +01:00
panic.go compiler: move ReplacePanicsWithTrap pass to transforms 2019-11-16 18:41:28 +01:00
panic_test.go transform: move tests to transform_test package 2021-04-22 19:53:42 +02:00
reflect.go transform: split interface and reflect lowering 2021-05-03 20:10:49 +02:00
reflect_test.go transform: split interface and reflect lowering 2021-05-03 20:10:49 +02:00
rtcalls.go compiler: simplify interface lowering 2021-10-31 14:17:25 +01:00
rtcalls_test.go transform: move tests to transform_test package 2021-04-22 19:53:42 +02:00
stacksize.go arm: automatically determine stack sizes 2020-08-27 19:23:22 +02:00
stacksize_test.go transform: move tests to transform_test package 2021-04-22 19:53:42 +02:00
transform.go compiler: add "target-cpu" and "target-features" attributes 2021-11-10 11:16:13 +01:00
transform_test.go compiler: add "target-cpu" and "target-features" attributes 2021-11-10 11:16:13 +01:00
util.go compiler: move OptimizeStringToBytes to transform package 2019-09-22 08:25:50 +02:00
wasm-abi.go compiler: refactor when the optsize attribute is set 2021-11-03 13:40:13 +01:00
wasm-abi_test.go compiler: add "target-cpu" and "target-features" attributes 2021-11-10 11:16:13 +01:00