diff --git a/8bitbench/benchmark.js b/8bitbench/benchmark.js index 5b6551b1..cfc0639a 100644 --- a/8bitbench/benchmark.js +++ b/8bitbench/benchmark.js @@ -38,8 +38,8 @@ class Benchmark { romBinary; async init() { - Module.wasmBinary = await getBinary(wasmBinary); - this.romBinary = await getBinary(romBinary); + Module.wasmBinary = await JetStream.getBinary(JetStream.preload.wasmBinary); + this.romBinary = await JetStream.getBinary(JetStream.preload.romBinary); } async runIteration() { diff --git a/ARES-6/Babylon/benchmark.js b/ARES-6/Babylon/benchmark.js index 8de7163e..fd4151a7 100644 --- a/ARES-6/Babylon/benchmark.js +++ b/ARES-6/Babylon/benchmark.js @@ -30,14 +30,14 @@ class Benchmark { let sources = []; const files = [ - [airBlob, {}] - , [basicBlob, {}] - , [inspectorBlob, {}] - , [babylonBlob, {sourceType: "module"}] + [JetStream.preload.airBlob, {}], + [JetStream.preload.basicBlob, {}], + [JetStream.preload.inspectorBlob, {}], + [JetStream.preload.babylonBlob, {sourceType: "module"}], ]; for (let [file, options] of files) - sources.push([file, await getString(file), options]); + sources.push([file, await JetStream.getString(file), options]); this.sources = sources; } diff --git a/Dart/benchmark.js b/Dart/benchmark.js index dd4e986e..5f683c97 100644 --- a/Dart/benchmark.js +++ b/Dart/benchmark.js @@ -264,8 +264,8 @@ class Benchmark { // The generated JavaScript code from dart2wasm is an ES module, which we // can only load with a dynamic import (since this file is not a module.) - Module.wasmBinary = await getBinary(wasmBinary); - this.dart2wasmJsModule = await dynamicImport(jsModule); + Module.wasmBinary = await JetStream.getBinary(JetStream.preload.wasmBinary); + this.dart2wasmJsModule = await JetStream.dynamicImport(JetStream.preload.jsModule); } async runIteration() { diff --git a/JetStreamDriver.js b/JetStreamDriver.js index 0abd4795..eaf430e5 100644 --- a/JetStreamDriver.js +++ b/JetStreamDriver.js @@ -561,18 +561,28 @@ const BenchmarkState = Object.freeze({ class Scripts { constructor() { this.scripts = []; + // Expose a globalThis.JetStream object to the workload. We use + // a proxy to prevent prototype access and throw on unknown properties. this.add(` - const isInBrowser = ${isInBrowser}; - const isD8 = ${isD8}; - if (typeof performance.mark === 'undefined') { - performance.mark = function(name) { return { name }}; - } - if (typeof performance.measure === 'undefined') { - performance.measure = function() {}; - } + const throwOnAccess = (name) => new Proxy({}, { + get(target, property, receiver) { + throw new Error(name + "." + property + " is not defined."); + } + }); + globalThis.JetStream = { + __proto__: throwOnAccess("JetStream"), + preload: { + __proto__: throwOnAccess("JetStream.preload"), + }, + }; + `); + this.add(` + performance.mark ??= function(name) { return { name }}; + performance.measure ??= function() {}; `); } + run() { throw new Error("Subclasses need to implement this"); } @@ -585,6 +595,13 @@ class Scripts { throw new Error("addWithURL not supported"); } + addBrowserTest() { + this.add(` + globalThis.JetStream.isInBrowser = ${isInBrowser}; + globalThis.JetStream.isD8 = ${isD8}; + `); + } + addDeterministicRandom() { this.add(`(() => { const initialSeed = 49734321; @@ -799,11 +816,13 @@ class Benchmark { if (!!this.plan.deterministicRandom) scripts.addDeterministicRandom() + if (!!this.plan.exposeBrowserTest) + scripts.addBrowserTest(); if (this.plan.preload) { let preloadCode = ""; for (let [ variableName, blobURLOrPath ] of this.preloads) - preloadCode += `const ${variableName} = "${blobURLOrPath}";\n`; + preloadCode += `JetStream.preload.${variableName} = "${blobURLOrPath}";\n`; scripts.add(preloadCode); } @@ -1259,31 +1278,31 @@ class AsyncBenchmark extends DefaultBenchmark { // with this class and make all benchmarks async. if (isInBrowser) { str += ` - async function getBinary(blobURL) { + JetStream.getBinary = async function(blobURL) { const response = await fetch(blobURL); return new Int8Array(await response.arrayBuffer()); - } + }; - async function getString(blobURL) { + JetStream.getString = async function(blobURL) { const response = await fetch(blobURL); return response.text(); - } + }; - async function dynamicImport(blobURL) { + JetStream.dynamicImport = async function(blobURL) { return await import(blobURL); - } + }; `; } else { str += ` - async function getBinary(path) { + JetStream.getBinary = async function(path) { return new Int8Array(read(path, "binary")); - } + }; - async function getString(path) { + JetStream.getString = async function(path) { return read(path); - } + }; - async function dynamicImport(path) { + JetStream.dynamicImport = async function(path) { try { return await import(path); } catch (e) { @@ -1291,7 +1310,7 @@ class AsyncBenchmark extends DefaultBenchmark { // without the "./" prefix (e.g., JSC requires it). return await import(path.slice("./".length)) } - } + }; `; } return str; @@ -1323,7 +1342,7 @@ class AsyncBenchmark extends DefaultBenchmark { } benchmark.validate?.(${this.iterations}); top.currentResolve(results); - } + }; doRun().catch((error) => { top.currentReject(error); });` } }; @@ -1342,7 +1361,7 @@ class WasmEMCCBenchmark extends AsyncBenchmark { console.log('Intercepted quit/abort'); }; - oldPrint = globalObject.print; + const oldPrint = globalObject.print; globalObject.print = globalObject.printErr = (...args) => { if (verbose) console.log('Intercepted print: ', ...args); @@ -1409,7 +1428,6 @@ class WSLBenchmark extends Benchmark { performance.measure(markLabel, markLabel); } - top.currentResolve(results); }`; } @@ -1469,8 +1487,7 @@ class WasmLegacyBenchmark extends Benchmark { console.log('Intercepted quit/abort'); }; - oldPrint = globalObject.print; - oldConsoleLog = globalObject.console.log; + const oldConsoleLog = globalObject.console.log; globalObject.print = globalObject.printErr = (...args) => { if (verbose) oldConsoleLog('Intercepted print: ', ...args); @@ -1483,12 +1500,12 @@ class WasmLegacyBenchmark extends Benchmark { printErr: globalObject.print }; globalObject.Module = Module; - `; + `; return str; } get runnerCode() { - let str = `function loadBlob(key, path, andThen) {`; + let str = `JetStream.loadBlob = function(key, path, andThen) {`; if (isInBrowser) { str += ` @@ -1519,15 +1536,15 @@ class WasmLegacyBenchmark extends Benchmark { console.log(e.stack); throw e; } - }) + }); `; } - str += "}"; + str += "};\n"; const keys = Object.keys(this.plan.preload); for (let i = 0; i < keys.length; ++i) { - str += `loadBlob("${keys[i]}", "${this.plan.preload[keys[i]]}", () => {\n`; + str += `JetStream.loadBlob("${keys[i]}", "${this.plan.preload[keys[i]]}", () => {\n`; } if (this.plan.async) { str += `doRun().catch((e) => { @@ -1845,6 +1862,8 @@ let BENCHMARKS = [ "./RexBench/UniPoker/benchmark.js", ], deterministicRandom: true, + // FIXME: UniPoker should not access isInBrowser. + exposeBrowserTest: true, tags: ["Default", "RexBench"], }), // Simple @@ -2209,6 +2228,7 @@ let BENCHMARKS = [ }, async: true, deterministicRandom: true, + exposeBrowserTest: true, tags: ["Wasm"], }), new WasmLegacyBenchmark({ @@ -2229,6 +2249,7 @@ let BENCHMARKS = [ }, async: true, deterministicRandom: true, + exposeBrowserTest: true, tags: ["Wasm"], }), new WasmEMCCBenchmark({ @@ -2251,6 +2272,7 @@ let BENCHMARKS = [ files: [ "./worker/bomb.js", ], + exposeBrowserTest: true, iterations: 80, preload: { rayTrace3D: "./worker/bomb-subtests/3d-raytrace.js", diff --git a/Kotlin-compose/benchmark.js b/Kotlin-compose/benchmark.js index 50125bb2..7ae3f14e 100644 --- a/Kotlin-compose/benchmark.js +++ b/Kotlin-compose/benchmark.js @@ -112,20 +112,20 @@ class Benchmark { // console.log("init"); preload = { - 'skiko.wasm': await getBinary(skikoWasmBinary), - './compose-benchmarks-benchmarks.wasm': await getBinary(composeWasmBinary), - './composeResources/compose_benchmarks.benchmarks.generated.resources/drawable/compose-multiplatform.png': await getBinary(inputImageCompose), - './composeResources/compose_benchmarks.benchmarks.generated.resources/drawable/example1_cat.jpg': await getBinary(inputImageCat), - './composeResources/compose_benchmarks.benchmarks.generated.resources/files/example1_compose-community-primary.png': await getBinary(inputImageComposeCommunity), - './composeResources/compose_benchmarks.benchmarks.generated.resources/font/jetbrainsmono_italic.ttf': await getBinary(inputFontItalic), - './composeResources/compose_benchmarks.benchmarks.generated.resources/font/jetbrainsmono_regular.ttf': await getBinary(inputFontRegular), + 'skiko.wasm': await JetStream.getBinary(JetStream.preload.skikoWasmBinary), + './compose-benchmarks-benchmarks.wasm': await JetStream.getBinary(JetStream.preload.composeWasmBinary), + './composeResources/compose_benchmarks.benchmarks.generated.resources/drawable/compose-multiplatform.png': await JetStream.getBinary(JetStream.preload.inputImageCompose), + './composeResources/compose_benchmarks.benchmarks.generated.resources/drawable/example1_cat.jpg': await JetStream.getBinary(JetStream.preload.inputImageCat), + './composeResources/compose_benchmarks.benchmarks.generated.resources/files/example1_compose-community-primary.png': await JetStream.getBinary(JetStream.preload.inputImageComposeCommunity), + './composeResources/compose_benchmarks.benchmarks.generated.resources/font/jetbrainsmono_italic.ttf': await JetStream.getBinary(JetStream.preload.inputFontItalic), + './composeResources/compose_benchmarks.benchmarks.generated.resources/font/jetbrainsmono_regular.ttf': await JetStream.getBinary(JetStream.preload.inputFontRegular), }; // We patched `skiko.mjs` to not immediately instantiate the `skiko.wasm` // module, so that we can move the dynamic JS import here but measure // WebAssembly compilation and instantiation as part of the first iteration. - this.skikoInstantiate = (await dynamicImport(skikoJsModule)).default; - this.mainInstantiate = (await dynamicImport(composeJsModule)).instantiate; + this.skikoInstantiate = (await JetStream.dynamicImport(JetStream.preload.skikoJsModule)).default; + this.mainInstantiate = (await JetStream.dynamicImport(JetStream.preload.composeJsModule)).instantiate; } async runIteration() { diff --git a/code-load/code-first-load.js b/code-load/code-first-load.js index 0a9e3942..eac236aa 100644 --- a/code-load/code-first-load.js +++ b/code-load/code-first-load.js @@ -26,7 +26,7 @@ let indirectEval = eval; class Benchmark { async init() { - this.inspectorText = `let _____top_level_____ = ${Math.random()}; ${await getString(inspectorPayloadBlob)}`; + this.inspectorText = `let _____top_level_____ = ${Math.random()}; ${await JetStream.getString(JetStream.preload.inspectorPayloadBlob)}`; this.index = 0; } diff --git a/code-load/code-multi-load.js b/code-load/code-multi-load.js index 1f786b26..70a03c3b 100644 --- a/code-load/code-multi-load.js +++ b/code-load/code-multi-load.js @@ -26,7 +26,7 @@ let indirectEval = eval; class Benchmark { async init() { - this.inspectorText = `let _____top_level_____ = ${Math.random()}; ${await getString(inspectorPayloadBlob)}`; + this.inspectorText = `let _____top_level_____ = ${Math.random()}; ${await JetStream.getString(JetStream.preload.inspectorPayloadBlob)}`; this.index = 0; } diff --git a/sqlite3/benchmark.js b/sqlite3/benchmark.js index 416790a5..9ee176de 100644 --- a/sqlite3/benchmark.js +++ b/sqlite3/benchmark.js @@ -53,7 +53,7 @@ class Benchmark { sqlite3Module; async init() { - Module.wasmBinary = await getBinary(wasmBinary); + Module.wasmBinary = await JetStream.getBinary(JetStream.preload.wasmBinary); } async runIteration() { diff --git a/wasm/HashSet/benchmark.js b/wasm/HashSet/benchmark.js index c5962770..bd94e57a 100644 --- a/wasm/HashSet/benchmark.js +++ b/wasm/HashSet/benchmark.js @@ -5,7 +5,7 @@ class Benchmark { async init() { - Module.wasmBinary = await getBinary(wasmBinary); + Module.wasmBinary = await JetStream.getBinary(JetStream.preload.wasmBinary); } async runIteration() { diff --git a/wasm/TSF/benchmark.js b/wasm/TSF/benchmark.js index 2d369388..15f97931 100644 --- a/wasm/TSF/benchmark.js +++ b/wasm/TSF/benchmark.js @@ -25,7 +25,7 @@ class Benchmark { async init() { - Module.wasmBinary = await getBinary(wasmBinary); + Module.wasmBinary = await JetStream.getBinary(JetStream.preload.wasmBinary); } async runIteration() { diff --git a/wasm/argon2/benchmark.js b/wasm/argon2/benchmark.js index 13187d3a..fff8c2fd 100644 --- a/wasm/argon2/benchmark.js +++ b/wasm/argon2/benchmark.js @@ -77,7 +77,7 @@ const saltLength = 12; class Benchmark { async init() { - Module.wasmBinary = await getBinary(wasmBinary); + Module.wasmBinary = await JetStream.getBinary(JetStream.preload.wasmBinary); } async runIteration() { diff --git a/wasm/dotnet/benchmark.js b/wasm/dotnet/benchmark.js index 4048a30e..91b4d9b6 100644 --- a/wasm/dotnet/benchmark.js +++ b/wasm/dotnet/benchmark.js @@ -6,125 +6,125 @@ class Benchmark { assets: [ { name: "dotnet.runtime.js", - resolvedUrl: dotnetRuntimeUrl, - moduleExports: await dynamicImport(dotnetRuntimeUrl), + resolvedUrl: JetStream.preload.dotnetRuntimeUrl, + moduleExports: await JetStream.dynamicImport(JetStream.preload.dotnetRuntimeUrl), behavior: "js-module-runtime" }, { name: "dotnet.native.js", - resolvedUrl: dotnetNativeUrl, - moduleExports: await dynamicImport(dotnetNativeUrl), + resolvedUrl: JetStream.preload.dotnetNativeUrl, + moduleExports: await JetStream.dynamicImport(JetStream.preload.dotnetNativeUrl), behavior: "js-module-native" }, { name: "dotnet.native.wasm", - resolvedUrl: wasmBinaryUrl, - buffer: await getBinary(wasmBinaryUrl), + resolvedUrl: JetStream.preload.wasmBinaryUrl, + buffer: await JetStream.getBinary(JetStream.preload.wasmBinaryUrl), behavior: "dotnetwasm" }, { name: "icudt_CJK.dat", - resolvedUrl: icuCustomUrl, - buffer: await getBinary(icuCustomUrl), + resolvedUrl: JetStream.preload.icuCustomUrl, + buffer: await JetStream.getBinary(JetStream.preload.icuCustomUrl), behavior: "icu" }, { name: "System.Collections.Concurrent.wasm", - resolvedUrl: dllCollectionsConcurrentUrl, - buffer: await getBinary(dllCollectionsConcurrentUrl), + resolvedUrl: JetStream.preload.dllCollectionsConcurrentUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllCollectionsConcurrentUrl), behavior: "assembly" }, { name: "System.Collections.wasm", - resolvedUrl: dllCollectionsUrl, - buffer: await getBinary(dllCollectionsUrl), + resolvedUrl: JetStream.preload.dllCollectionsUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllCollectionsUrl), behavior: "assembly" }, { name: "System.ComponentModel.Primitives.wasm", - resolvedUrl: dllComponentModelPrimitivesUrl, - buffer: await getBinary(dllComponentModelPrimitivesUrl), + resolvedUrl: JetStream.preload.dllComponentModelPrimitivesUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllComponentModelPrimitivesUrl), behavior: "assembly" }, { name: "System.ComponentModel.TypeConverter.wasm", - resolvedUrl: dllComponentModelTypeConverterUrl, - buffer: await getBinary(dllComponentModelTypeConverterUrl), + resolvedUrl: JetStream.preload.dllComponentModelTypeConverterUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllComponentModelTypeConverterUrl), behavior: "assembly" }, { name: "System.Drawing.Primitives.wasm", - resolvedUrl: dllDrawingPrimitivesUrl, - buffer: await getBinary(dllDrawingPrimitivesUrl), + resolvedUrl: JetStream.preload.dllDrawingPrimitivesUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllDrawingPrimitivesUrl), behavior: "assembly" }, { name: "System.Drawing.wasm", - resolvedUrl: dllDrawingUrl, - buffer: await getBinary(dllDrawingUrl), + resolvedUrl: JetStream.preload.dllDrawingUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllDrawingUrl), behavior: "assembly" }, { name: "System.IO.Pipelines.wasm", - resolvedUrl: dllIOPipelinesUrl, - buffer: await getBinary(dllIOPipelinesUrl), + resolvedUrl: JetStream.preload.dllIOPipelinesUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllIOPipelinesUrl), behavior: "assembly" }, { name: "System.Linq.wasm", - resolvedUrl: dllLinqUrl, - buffer: await getBinary(dllLinqUrl), + resolvedUrl: JetStream.preload.dllLinqUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllLinqUrl), behavior: "assembly" }, { name: "System.Memory.wasm", - resolvedUrl: dllMemoryUrl, - buffer: await getBinary(dllMemoryUrl), + resolvedUrl: JetStream.preload.dllMemoryUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllMemoryUrl), behavior: "assembly" }, { name: "System.ObjectModel.wasm", - resolvedUrl: dllObjectModelUrl, - buffer: await getBinary(dllObjectModelUrl), + resolvedUrl: JetStream.preload.dllObjectModelUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllObjectModelUrl), behavior: "assembly" }, { name: "System.Private.CoreLib.wasm", - resolvedUrl: dllPrivateCorelibUrl, - buffer: await getBinary(dllPrivateCorelibUrl), + resolvedUrl: JetStream.preload.dllPrivateCorelibUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllPrivateCorelibUrl), behavior: "assembly", isCore: true }, { name: "System.Runtime.InteropServices.JavaScript.wasm", - resolvedUrl: dllRuntimeInteropServicesJavaScriptUrl, - buffer: await getBinary(dllRuntimeInteropServicesJavaScriptUrl), + resolvedUrl: JetStream.preload.dllRuntimeInteropServicesJavaScriptUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllRuntimeInteropServicesJavaScriptUrl), behavior: "assembly", isCore: true }, { name: "System.Text.Encodings.Web.wasm", - resolvedUrl: dllTextEncodingsWebUrl, - buffer: await getBinary(dllTextEncodingsWebUrl), + resolvedUrl: JetStream.preload.dllTextEncodingsWebUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllTextEncodingsWebUrl), behavior: "assembly" }, { name: "System.Text.Json.wasm", - resolvedUrl: dllTextJsonUrl, - buffer: await getBinary(dllTextJsonUrl), + resolvedUrl: JetStream.preload.dllTextJsonUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllTextJsonUrl), behavior: "assembly" }, { name: "dotnet.wasm", - resolvedUrl: dllAppUrl, - buffer: await getBinary(dllAppUrl), + resolvedUrl: JetStream.preload.dllAppUrl, + buffer: await JetStream.getBinary(JetStream.preload.dllAppUrl), behavior: "assembly", isCore: true } ] }; - this.dotnet = (await dynamicImport(dotnetUrl)).dotnet; + this.dotnet = (await JetStream.dynamicImport(JetStream.preload.dotnetUrl)).dotnet; this.api = await this.dotnet.withModuleConfig({ locateFile: e => e }).withConfig(config).create(); this.exports = await this.api.getAssemblyExports("dotnet.dll"); diff --git a/wasm/gcc-loops/benchmark.js b/wasm/gcc-loops/benchmark.js index c5962770..bd94e57a 100644 --- a/wasm/gcc-loops/benchmark.js +++ b/wasm/gcc-loops/benchmark.js @@ -5,7 +5,7 @@ class Benchmark { async init() { - Module.wasmBinary = await getBinary(wasmBinary); + Module.wasmBinary = await JetStream.getBinary(JetStream.preload.wasmBinary); } async runIteration() { diff --git a/wasm/quicksort/benchmark.js b/wasm/quicksort/benchmark.js index a271ff85..a57229f6 100644 --- a/wasm/quicksort/benchmark.js +++ b/wasm/quicksort/benchmark.js @@ -5,7 +5,7 @@ class Benchmark { async init() { - Module.wasmBinary = await getBinary(wasmBinary); + Module.wasmBinary = await JetStream.getBinary(JetStream.preload.wasmBinary); } async runIteration() { diff --git a/wasm/richards/benchmark.js b/wasm/richards/benchmark.js index 53dd1f48..3c02a05a 100644 --- a/wasm/richards/benchmark.js +++ b/wasm/richards/benchmark.js @@ -5,7 +5,7 @@ class Benchmark { async init() { - Module.wasmBinary = await getBinary(wasmBinary); + Module.wasmBinary = await JetStream.getBinary(JetStream.preload.wasmBinary); } async runIteration() { diff --git a/wasm/tfjs-benchmark.js b/wasm/tfjs-benchmark.js index 0a9bf452..c19b3496 100644 --- a/wasm/tfjs-benchmark.js +++ b/wasm/tfjs-benchmark.js @@ -24,9 +24,9 @@ */ async function doRun() { - if (!isInBrowser) { - globalThis.tfjsBackendWasmSimdBlob = Module.tfjsBackendWasmSimdBlob; - globalThis.tfjsBackendWasmBlob = Module.tfjsBackendWasmBlob; + if (!JetStream.isInBrowser) { + JetStream.preload.tfjsBackendWasmSimdBlob = Module.tfjsBackendWasmSimdBlob; + JetStream.preload.tfjsBackendWasmBlob = Module.tfjsBackendWasmBlob; } let start = benchmarkTime(); diff --git a/wasm/tfjs-bundle.js b/wasm/tfjs-bundle.js index e3790532..34a1bb36 100644 --- a/wasm/tfjs-bundle.js +++ b/wasm/tfjs-bundle.js @@ -23188,7 +23188,7 @@ }); } function instantiateAsync() { - if (!wasmBinary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && !ENVIRONMENT_IS_NODE && typeof fetch == "function") { + if (!JetStream.preload.wasmBinary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && !ENVIRONMENT_IS_NODE && typeof fetch == "function") { return fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function (response) { @@ -23210,15 +23210,14 @@ } catch (e) { // ************************ CHANGE START ************************ let blob; - if (globalThis.tfjsBackendWasmSimdBlob || Module.tfjsBackendWasmSimdBlob) { - blob = globalThis.tfjsBackendWasmSimdBlob || Module.tfjsBackendWasmSimdBlob; + if (JetStream.preload.tfjsBackendWasmSimdBlob || Module.tfjsBackendWasmSimdBlob) { + blob = JetStream.preload.tfjsBackendWasmSimdBlob || Module.tfjsBackendWasmSimdBlob; // console.warn("shell tfjs instantiating wasm simd backend"); - } else if (globalThis.tfjsBackendWasmBlob || Module.tfjsBackendWasmBlob) { - blob = globalThis.tfjsBackendWasmBlob || Module.tfjsBackendWasmBlob; + } else if (JetStream.preload.tfjsBackendWasmBlob || Module.tfjsBackendWasmBlob) { + blob = JetStream.preload.tfjsBackendWasmBlob || Module.tfjsBackendWasmBlob; // console.warn("shell tfjs instantiating wasm backend"); } else console.warn("Fatal error: no binary file found for ./wasm/tfjs-backend-wasm-simd.wasm and ./wasm/tfjs-backend-wasm.wasm"); - WebAssembly.instantiate(blob, info).then(function (output) { receiveInstance(output.instance, output.module); }); diff --git a/wasm/zlib/benchmark.js b/wasm/zlib/benchmark.js index 44a41081..5317d019 100644 --- a/wasm/zlib/benchmark.js +++ b/wasm/zlib/benchmark.js @@ -5,7 +5,7 @@ class Benchmark { async init() { - Module.wasmBinary = await getBinary(wasmBinary); + Module.wasmBinary = await JetStream.getBinary(JetStream.preload.wasmBinary); } async runIteration() { diff --git a/worker/bomb.js b/worker/bomb.js index 911f9b8d..350a5448 100644 --- a/worker/bomb.js +++ b/worker/bomb.js @@ -41,36 +41,36 @@ function startWorker(file) { } function startCycle() { - if (!isInBrowser) + if (!JetStream.isInBrowser) throw new Error("Only works in browser"); const tests = [ - rayTrace3D - , accessNbody - , morph3D - , cube3D - , accessFunnkuch - , accessBinaryTrees - , accessNsieve - , bitopsBitwiseAnd - , bitopsNsieveBits - , controlflowRecursive - , bitops3BitBitsInByte - , botopsBitsInByte - , cryptoAES - , cryptoMD5 - , cryptoSHA1 - , dateFormatTofte - , dateFormatXparb - , mathCordic - , mathPartialSums - , mathSpectralNorm - , stringBase64 - , stringFasta - , stringValidateInput - , stringTagcloud - , stringUnpackCode - , regexpDNA + JetStream.preload.rayTrace3D, + JetStream.preload.accessNbody, + JetStream.preload.morph3D, + JetStream.preload.cube3D, + JetStream.preload.accessFunnkuch, + JetStream.preload.accessBinaryTrees, + JetStream.preload.accessNsieve, + JetStream.preload.bitopsBitwiseAnd, + JetStream.preload.bitopsNsieveBits, + JetStream.preload.controlflowRecursive, + JetStream.preload.bitops3BitBitsInByte, + JetStream.preload.botopsBitsInByte, + JetStream.preload.cryptoAES, + JetStream.preload.cryptoMD5, + JetStream.preload.cryptoSHA1, + JetStream.preload.dateFormatTofte, + JetStream.preload.dateFormatXparb, + JetStream.preload.mathCordic, + JetStream.preload.mathPartialSums, + JetStream.preload.mathSpectralNorm, + JetStream.preload.stringBase64, + JetStream.preload.stringFasta, + JetStream.preload.stringValidateInput, + JetStream.preload.stringTagcloud, + JetStream.preload.stringUnpackCode, + JetStream.preload.regexpDNA, ]; for (let test of tests) diff --git a/worker/segmentation.js b/worker/segmentation.js index 51fbdced..17d04e2f 100644 --- a/worker/segmentation.js +++ b/worker/segmentation.js @@ -560,7 +560,7 @@ class AsyncTaskWorker { constructor() { - this._webWorker = new Worker(asyncTaskBlob); + this._webWorker = new Worker(JetStream.preload.asyncTaskBlob); this._webWorker.onmessage = this._didRecieveMessage.bind(this); this._id = AsyncTaskWorker._workerId; this._startTime = Date.now();