Skip to content

Commit e908f5e

Browse files
committed
make wasm streaming work
1 parent 54dc363 commit e908f5e

File tree

2 files changed

+98
-0
lines changed

2 files changed

+98
-0
lines changed

base/src/js_worker.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ fn start_runtime(
100100
mib_to_bytes(1) as usize,
101101
mib_to_bytes(memory_limit_mb) as usize,
102102
)),
103+
shared_array_buffer_store: None,
104+
compiled_wasm_module_store: None,
103105
..Default::default()
104106
});
105107

base/src/js_worker/js/bootstrap.js

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
const base64 = window.__bootstrap.base64;
99
const Console = window.__bootstrap.console.Console;
1010
const crypto = window.__bootstrap.crypto;
11+
const domException = window.__bootstrap.domException;
1112
const encoding = window.__bootstrap.encoding;
13+
//const errors = window.__bootstrap.errors.errors;
1214
const event = window.__bootstrap.event;
1315
const eventTarget = window.__bootstrap.eventTarget;
1416
const { env } = window.__bootstrap.os;
@@ -195,15 +197,109 @@
195197
FormData: nonEnumerable(formData.FormData),
196198
}
197199

200+
//function registerErrors() {
201+
// core.registerErrorClass("NotFound", errors.NotFound);
202+
// core.registerErrorClass("PermissionDenied", errors.PermissionDenied);
203+
// core.registerErrorClass("ConnectionRefused", errors.ConnectionRefused);
204+
// core.registerErrorClass("ConnectionReset", errors.ConnectionReset);
205+
// core.registerErrorClass("ConnectionAborted", errors.ConnectionAborted);
206+
// core.registerErrorClass("NotConnected", errors.NotConnected);
207+
// core.registerErrorClass("AddrInUse", errors.AddrInUse);
208+
// core.registerErrorClass("AddrNotAvailable", errors.AddrNotAvailable);
209+
// core.registerErrorClass("BrokenPipe", errors.BrokenPipe);
210+
// core.registerErrorClass("AlreadyExists", errors.AlreadyExists);
211+
// core.registerErrorClass("InvalidData", errors.InvalidData);
212+
// core.registerErrorClass("TimedOut", errors.TimedOut);
213+
// core.registerErrorClass("Interrupted", errors.Interrupted);
214+
// core.registerErrorClass("WriteZero", errors.WriteZero);
215+
// core.registerErrorClass("UnexpectedEof", errors.UnexpectedEof);
216+
// core.registerErrorClass("BadResource", errors.BadResource);
217+
// core.registerErrorClass("Http", errors.Http);
218+
// core.registerErrorClass("Busy", errors.Busy);
219+
// core.registerErrorClass("NotSupported", errors.NotSupported);
220+
// core.registerErrorBuilder(
221+
// "DOMExceptionOperationError",
222+
// function DOMExceptionOperationError(msg) {
223+
// return new domException.DOMException(msg, "OperationError");
224+
// },
225+
// );
226+
// core.registerErrorBuilder(
227+
// "DOMExceptionQuotaExceededError",
228+
// function DOMExceptionQuotaExceededError(msg) {
229+
// return new domException.DOMException(msg, "QuotaExceededError");
230+
// },
231+
// );
232+
// core.registerErrorBuilder(
233+
// "DOMExceptionNotSupportedError",
234+
// function DOMExceptionNotSupportedError(msg) {
235+
// return new domException.DOMException(msg, "NotSupported");
236+
// },
237+
// );
238+
// core.registerErrorBuilder(
239+
// "DOMExceptionNetworkError",
240+
// function DOMExceptionNetworkError(msg) {
241+
// return new domException.DOMException(msg, "NetworkError");
242+
// },
243+
// );
244+
// core.registerErrorBuilder(
245+
// "DOMExceptionAbortError",
246+
// function DOMExceptionAbortError(msg) {
247+
// return new domException.DOMException(msg, "AbortError");
248+
// },
249+
// );
250+
// core.registerErrorBuilder(
251+
// "DOMExceptionInvalidCharacterError",
252+
// function DOMExceptionInvalidCharacterError(msg) {
253+
// return new domException.DOMException(msg, "InvalidCharacterError");
254+
// },
255+
// );
256+
// core.registerErrorBuilder(
257+
// "DOMExceptionDataError",
258+
// function DOMExceptionDataError(msg) {
259+
// return new domException.DOMException(msg, "DataError");
260+
// },
261+
// );
262+
//}
263+
264+
function runtimeStart(runtimeOptions, source) {
265+
core.setMacrotaskCallback(timers.handleTimerMacrotask);
266+
//core.setMacrotaskCallback(promiseRejectMacrotaskCallback);
267+
core.setWasmStreamingCallback(fetch.handleWasmStreaming);
268+
//core.setReportExceptionCallback(reportException);
269+
//ops.op_set_format_exception_callback(formatException);
270+
//version.setVersions(
271+
// runtimeOptions.denoVersion,
272+
// runtimeOptions.v8Version,
273+
// runtimeOptions.tsVersion,
274+
//);
275+
//build.setBuildInfo(runtimeOptions.target);
276+
//util.setLogDebug(runtimeOptions.debugFlag, source);
277+
//colors.setNoColor(runtimeOptions.noColor || !runtimeOptions.isTty);
278+
279+
// deno-lint-ignore prefer-primordials
280+
Error.prepareStackTrace = core.prepareStackTrace;
281+
282+
// TODO: register errors
283+
//registerErrors();
284+
}
285+
198286
// Deno overrides
199287
Deno.env = env;
200288
Deno.listen = window.__bootstrap.net.listen;
201289
Deno.serveHttp = serveHttp;
202290

291+
203292
const __bootstrap = window.__bootstrap;
204293
delete window.__bootstrap;
205294
delete window.bootstrap;
206295

207296
ObjectDefineProperties(window, globalScope);
297+
298+
runtimeStart({
299+
denoVersion: "NA",
300+
v8Version: "NA",
301+
tsVersion: "NA",
302+
noColor: false,
303+
});
208304
})(this);
209305

0 commit comments

Comments
 (0)