diff --git a/src/runtime/runtime_wasm_js.go b/src/runtime/runtime_wasm_js.go index 89898b554..b49ffd15d 100644 --- a/src/runtime/runtime_wasm_js.go +++ b/src/runtime/runtime_wasm_js.go @@ -4,13 +4,6 @@ package runtime type timeUnit float64 // time in milliseconds, just like Date.now() in JavaScript -// wasmNested is used to detect scheduler nesting (WASM calls into JS calls back into WASM). -// When this happens, we need to use a reduced version of the scheduler. -// -// TODO: this variable can probably be removed once //go:wasmexport is the only -// allowed way to export a wasm function (currently, //export also works). -var wasmNested bool - var handleEvent func() //go:linkname setEventHandler syscall/js.setEventHandler diff --git a/src/runtime/runtime_wasm_js_scheduler.go b/src/runtime/runtime_wasm_js_scheduler.go index 94018336e..9fd8c4554 100644 --- a/src/runtime/runtime_wasm_js_scheduler.go +++ b/src/runtime/runtime_wasm_js_scheduler.go @@ -8,24 +8,10 @@ func resume() { handleEvent() }() - if wasmNested { - minSched() - return - } - - wasmNested = true scheduler(false) - wasmNested = false } //export go_scheduler func go_scheduler() { - if wasmNested { - minSched() - return - } - - wasmNested = true scheduler(false) - wasmNested = false } diff --git a/src/runtime/scheduler.go b/src/runtime/scheduler.go index 2f2287652..3f726a064 100644 --- a/src/runtime/scheduler.go +++ b/src/runtime/scheduler.go @@ -247,24 +247,6 @@ func scheduler(returnAtDeadlock bool) { } } -// This horrible hack exists to make WASM work properly. -// When a WASM program calls into JS which calls back into WASM, the event with which we called back in needs to be handled before returning. -// Thus there are two copies of the scheduler running at once. -// This is a reduced version of the scheduler which does not deal with the timer queue (that is a problem for the outer scheduler). -func minSched() { - scheduleLog("start nested scheduler") - for !schedulerDone { - t := runqueue.Pop() - if t == nil { - break - } - - scheduleLogTask(" run:", t) - t.Resume() - } - scheduleLog("stop nested scheduler") -} - func Gosched() { runqueue.Push(task.Current()) task.Pause()