aboutsummaryrefslogtreecommitdiff
path: root/ext/wasm/api/pre-js.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/wasm/api/pre-js.js')
-rw-r--r--ext/wasm/api/pre-js.js46
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. */