diff options
Diffstat (limited to 'ext/wasm/api/pre-js.js')
-rw-r--r-- | ext/wasm/api/pre-js.js | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/ext/wasm/api/pre-js.js b/ext/wasm/api/pre-js.js index c07d0373c..f31dea179 100644 --- a/ext/wasm/api/pre-js.js +++ b/ext/wasm/api/pre-js.js @@ -8,6 +8,7 @@ // See notes in extern-post-js.js const sqlite3InitModuleState = self.sqlite3InitModuleState || Object.create(null); delete self.sqlite3InitModuleState; +sqlite3InitModuleState.debugModule('self.location =',self.location); /** This custom locateFile() tries to figure out where to load `path` @@ -30,12 +31,6 @@ delete self.sqlite3InitModuleState; Module['locateFile'] = function(path, prefix) { let theFile; const up = this.urlParams; - if(0){ - console.warn("locateFile(",arguments[0], ',', arguments[1],")", - 'self.location =',self.location, - 'sqlite3InitModuleState.scriptDir =',this.scriptDir, - 'up.entries() =',Array.from(up.entries())); - } if(up.has(path)){ theFile = up.get(path); }else if(this.sqlite3Dir){ @@ -45,22 +40,37 @@ Module['locateFile'] = function(path, prefix) { }else{ theFile = prefix + path; } + sqlite3InitModuleState.debugModule( + "locateFile(",arguments[0], ',', arguments[1],")", + 'sqlite3InitModuleState.scriptDir =',this.scriptDir, + 'up.entries() =',Array.from(up.entries()), + "result =", theFile + ); return theFile; }.bind(sqlite3InitModuleState); /** - Bug warning: this xInstantiateWasm bit must remain disabled - until this bug is resolved or wasmfs won't work: + Bug warning: a custom Module.instantiateWasm() does not work + in WASMFS builds: https://github.com/emscripten-core/emscripten/issues/17951 + + In such builds we must disable this. */ -const xInstantiateWasm = 1 - ? 'emscripten-bug-17951' - : 'instantiateWasm'; -Module[xInstantiateWasm] = function callee(imports,onSuccess){ +const xNameOfInstantiateWasm = true + ? 'instantiateWasm' + : 'emscripten-bug-17951'; +Module[xNameOfInstantiateWasm] = function callee(imports,onSuccess){ imports.env.foo = function(){}; - console.warn("instantiateWasm() uri =",callee.uri, self.location.href); - const wfetch = ()=>fetch(callee.uri, {credentials: 'same-origin'}); + const uri = Module.locateFile( + callee.uri, ( + ('undefined'===typeof scriptDirectory/*var defined by Emscripten glue*/) + ? '' : scriptDirectory) + ); + sqlite3InitModuleState.debugModule( + "instantiateWasm() uri =", uri + ); + const wfetch = ()=>fetch(uri, {credentials: 'same-origin'}); const loadWasm = WebAssembly.instantiateStreaming ? async ()=>{ return WebAssembly.instantiateStreaming(wfetch(), imports) @@ -79,10 +89,12 @@ Module[xInstantiateWasm] = function callee(imports,onSuccess){ It is literally impossible to reliably get the name of _this_ script at runtime, so impossible to derive X.wasm from script name X.js. Thus we need, at build-time, to redefine - Module[xInstantiateWasm].uri by appending it to a build-specific + Module[xNameOfInstantiateWasm].uri by appending it to a build-specific copy of this file with the name of the wasm file. This is apparently why Emscripten hard-codes the name of the wasm file into their glue scripts. */ -Module[xInstantiateWasm].uri = 'sqlite3.wasm'; -/* END FILE: api/pre-js.js */ +Module[xNameOfInstantiateWasm].uri = 'sqlite3.wasm'; +/* END FILE: api/pre-js.js, noting that the build process may add a + line after this one to change the above .uri to a build-specific + one. */ |