-
- Downloads
runtime, sycall/js: add support for callbacks from JavaScript
This commit adds support for JavaScript callbacks back into WebAssembly. This is experimental API, just like the rest of the syscall/js package. The time package now also uses this mechanism to properly support timers without resorting to a busy loop. JavaScript code can call into the same entry point multiple times. The new RUN register is used to keep track of the program's run state. Possible values are: starting, running, paused and exited. If no goroutine is ready any more, the scheduler can put the program into the "paused" state and the WebAssembly code will stop running. When a callback occurs, the JavaScript code puts the callback data into a queue and then calls into WebAssembly to allow the Go code to continue running. Updates #18892 Updates #25506 Change-Id: Ib8701cfa0536d10d69bd541c85b0e2a754eb54fb Reviewed-on: https://go-review.googlesource.com/114197 Reviewed-by:Austin Clements <austin@google.com> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
Showing
- misc/wasm/wasm_exec.js 51 additions, 2 deletionsmisc/wasm/wasm_exec.js
- src/cmd/internal/obj/wasm/a.out.go 3 additions, 0 deletionssrc/cmd/internal/obj/wasm/a.out.go
- src/cmd/internal/obj/wasm/anames.go 1 addition, 0 deletionssrc/cmd/internal/obj/wasm/anames.go
- src/cmd/internal/obj/wasm/wasmobj.go 12 additions, 4 deletionssrc/cmd/internal/obj/wasm/wasmobj.go
- src/cmd/link/internal/wasm/asm.go 1 addition, 0 deletionssrc/cmd/link/internal/wasm/asm.go
- src/cmd/trace/annotations.go 4 additions, 0 deletionssrc/cmd/trace/annotations.go
- src/cmd/trace/annotations_test.go 6 additions, 0 deletionssrc/cmd/trace/annotations_test.go
- src/cmd/trace/trace_test.go 2 additions, 0 deletionssrc/cmd/trace/trace_test.go
- src/go/build/deps_test.go 1 addition, 1 deletionsrc/go/build/deps_test.go
- src/runtime/lock_futex.go 6 additions, 0 deletionssrc/runtime/lock_futex.go
- src/runtime/lock_js.go 111 additions, 14 deletionssrc/runtime/lock_js.go
- src/runtime/lock_sema.go 6 additions, 0 deletionssrc/runtime/lock_sema.go
- src/runtime/proc.go 12 additions, 0 deletionssrc/runtime/proc.go
- src/runtime/rt0_js_wasm.s 57 additions, 21 deletionssrc/runtime/rt0_js_wasm.s
- src/runtime/sys_wasm.s 8 additions, 7 deletionssrc/runtime/sys_wasm.s
- src/syscall/js/callback.go 145 additions, 0 deletionssrc/syscall/js/callback.go
- src/syscall/js/js.go 6 additions, 0 deletionssrc/syscall/js/js.go
- src/syscall/js/js_test.go 50 additions, 0 deletionssrc/syscall/js/js_test.go
Loading
Please register or sign in to comment