js-promise-integration
Wasm 側が suspended continuation
WebAssembly.Suspending でラップされたimport関数を呼ぶことは suspend。ここですべてのWebAssembly.Suspending関数が prompt tag であり、continuation はプログラム全体ってことになる? 違うわ、promising にラップされた関数全体が delimiter になるんだ。
ハンドラーはWasmをinstantiateするときに Suspending 関数たち
prompt tag は Wasm module 全体で global
Suspending 関数が実行されると Wasm VM の実行が suspend されて、実行が ハンドラー (Suspending に移る)
継続は第一級ではない。処理が終わって return すると、継続にreturnした値が渡って suspended continuation (Wasm VM) が再開する
stack-switching は第一級継続
first class continuation じゃないのは何故かというと not allowed to suspend a call with JS frames. だから
つまり "cooperative scheduling" みたいなのはできないってこと!?
hr.icon
https://www.youtube.com/watch?v=OjWBZ0HArIc
The WebAssembly.Suspending object is used to mark imports to a WebAssembly module such that, when called, the WebAssembly code will suspend until the Promise returned by the import is resolved
resume/suspend は