blob: d8628b9fec5063ddc6e1c757981c1dfbbe6113d4 [file] [log] [blame]
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// TODO(joshualitt): Investigate making this a module. Currently, Dart2Wasm is
// broken in D8 with modules because of an issue with async. This may or may not
// affect chrome.
(async () => {
// Fetch and compile Wasm binary.
let data = document.getElementById('WasmBootstrapInfo').dataset;
let modulePromise = WebAssembly.compileStreaming(fetch(data.wasmurl));
// Instantiate the Dart module, importing from the global scope.
let dart2wasm = await import('./' + data.jsruntimeurl);
let dartInstance = await dart2wasm.instantiate(modulePromise, {});
// Call `main`. If tasks are placed into the event loop (by scheduling tasks
// explicitly or awaiting Futures), these will automatically keep the script
// alive even after `main` returns.
await dart2wasm.invoke(dartInstance);
})();