diff options
author | Andreu Botella <abb@randomunok.com> | 2021-09-13 14:27:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-13 14:27:54 +0200 |
commit | 4d6f412b0b8a415a084605e5353ef46c36bcbe27 (patch) | |
tree | dc2d01af7b074cd6ea2708d18dbfcf0caf653a0e /core/lib.deno_core.d.ts | |
parent | a95ca9dc70515240b1be7a12dbf686b1ebfb3490 (diff) |
refactor(core): Turn the `wasm_streaming_feed` binding into ops (#11985)
Async WebAssembly compilation was implemented by adding two
bindings: `set_wasm_streaming_callback`, which registered a callback to
be called whenever a streaming wasm compilation was started, and
`wasm_streaming_feed`, which let the JS callback modify the state of the
v8 wasm compiler.
`set_wasm_streaming_callback` cannot currently be implemented as
anything other than a binding, but `wasm_streaming_feed` does not really
need to use anything specific to bindings, and could indeed be
implemented as one or more ops. This PR does that, resulting in a
simplification of the relevant code.
There are three operations on the state of the v8 wasm compiler that
`wasm_streaming_feed` allowed: feeding new bytes into the compiler,
letting it know that there are no more bytes coming from the network,
and aborting the compilation. This PR provides `op_wasm_streaming_feed`
to feed new bytes into the compiler, and `op_wasm_streaming_abort` to
abort the compilation. It doesn't provide an op to let v8 know that the
response is finished, but closing the resource with `Deno.core.close()`
will achieve that.
Diffstat (limited to 'core/lib.deno_core.d.ts')
-rw-r--r-- | core/lib.deno_core.d.ts | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/core/lib.deno_core.d.ts b/core/lib.deno_core.d.ts index 46cf6b42c..efa138d77 100644 --- a/core/lib.deno_core.d.ts +++ b/core/lib.deno_core.d.ts @@ -56,25 +56,18 @@ declare namespace Deno { * (`WebAssembly.compileStreaming` and `WebAssembly.instantiateStreaming`) * are called in order to feed the source's bytes to the wasm compiler. * The callback is called with the source argument passed to the streaming - * APIs and an rid to use with `Deno.core.wasmStreamingFeed`. + * APIs and an rid to use with the wasm streaming ops. + * + * The callback should eventually invoke the following ops: + * - `op_wasm_streaming_feed`. Feeds bytes from the wasm resource to the + * compiler. Takes the rid and a `Uint8Array`. + * - `op_wasm_streaming_abort`. Aborts the wasm compilation. Takes the rid + * and an exception. Invalidates the resource. + * - To indicate the end of the resource, use `Deno.core.close()` with the + * rid. */ function setWasmStreamingCallback( cb: (source: any, rid: number) => void, ): void; - - /** - * Affect the state of the WebAssembly streaming compiler, by either passing - * it bytes, aborting it, or indicating that all bytes were received. - * `rid` must be a resource ID that was passed to the callback set with - * `Deno.core.setWasmStreamingCallback`. Calling this function with `type` - * set to either "abort" or "finish" invalidates the rid. - */ - function wasmStreamingFeed( - rid: number, - type: "bytes", - bytes: Uint8Array, - ): void; - function wasmStreamingFeed(rid: number, type: "abort", error: any): void; - function wasmStreamingFeed(rid: number, type: "finish"): void; } } |