mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Add JS infrastructure to ostensibly allow us to customize the wasm imports, which will hypothetically allow us to eliminate the dependency on EM_JS(), but the corresponding Emscripten glue-level feature currently breaks fatally with WASMFS builds so it's disabled.
FossilOrigin-Name: 88d9253b0db5494bf1c9b6d24f22524eeec856b89e64a66ffb30d945f0df21d3
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
/* emscripten-js-addenda.js must be appended to the resulting sqlite3.js
|
||||
/* extern-post-js.js must be appended to the resulting sqlite3.js
|
||||
file. */
|
||||
(function(){
|
||||
/**
|
||||
|
4
ext/wasm/api/extern-pre-js.js
Normal file
4
ext/wasm/api/extern-pre-js.js
Normal file
@ -0,0 +1,4 @@
|
||||
/* extern-pre-js.js must be prepended to the resulting sqlite3.js
|
||||
file. This file is currently only used for holding snippets during
|
||||
test and development.
|
||||
*/
|
40
ext/wasm/api/pre-js.js
Normal file
40
ext/wasm/api/pre-js.js
Normal file
@ -0,0 +1,40 @@
|
||||
Module['locateFile'] = function(path, prefix) {
|
||||
return prefix + path;
|
||||
};
|
||||
|
||||
/**
|
||||
Bug warning: this xInstantiateWasm bit must remain disabled
|
||||
until this bug is resolved or wasmfs won't work:
|
||||
|
||||
https://github.com/emscripten-core/emscripten/issues/17951
|
||||
*/
|
||||
const xInstantiateWasm = 1
|
||||
? 'emscripten-bug-17951'
|
||||
: 'instantiateWasm';
|
||||
Module[xInstantiateWasm] = function callee(imports,onSuccess){
|
||||
imports.foo = function(){};
|
||||
console.warn("instantiateWasm() uri =",callee.uri, self.location.href);
|
||||
const wfetch = ()=>fetch(callee.uri, {credentials: 'same-origin'});
|
||||
const loadWasm = WebAssembly.instantiateStreaming
|
||||
? function loadWasmStreaming(){
|
||||
return WebAssembly.instantiateStreaming(wfetch(), imports)
|
||||
.then((arg)=>onSuccess(arg.instance, arg.module));
|
||||
}
|
||||
: function loadWasmOldSchool(){ // Safari < v15
|
||||
return wfetch()
|
||||
.then(response => response.arrayBuffer())
|
||||
.then(bytes => WebAssembly.instantiate(bytes, imports))
|
||||
.then((arg)=>onSuccess(arg.instance, arg.module));
|
||||
};
|
||||
loadWasm();
|
||||
return {};
|
||||
};
|
||||
/*
|
||||
It is literally impossible to get the name of a Worker's own script,
|
||||
so impossible to derive X.wasm from script name X.js. Thus we need,
|
||||
at build-time, to redifine Module['instantiateWasm'].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';
|
Reference in New Issue
Block a user