mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Minor WASM build cleanups. Enable custom Module.instantiateWasm() when not in WASMFS mode (where it doesn't work). Add sqlite3.debugModule URL param to enable some module-init-time debugging output.
FossilOrigin-Name: 50f678846a2b3c3d0818f0bae89f2ee86252a2e6a9c7029ebaae3953ca0fa14c
This commit is contained in:
@ -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. */
|
||||
|
Reference in New Issue
Block a user