@mediapipe/tasks-vision 1.0.1 → 1.1.0-rc.20260916
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +218 -0
- package/NOTICE +31049 -0
- package/README.md +0 -0
- package/package.json +1 -1
- package/vision.d.ts +34 -0
- package/vision_bundle.cjs +1 -1
- package/vision_bundle.cjs.map +1 -1
- package/vision_bundle.js +1 -1
- package/vision_bundle.js.map +1 -0
- package/vision_bundle.mjs +1 -1
- package/vision_bundle.mjs.map +1 -1
- package/wasm/vision_wasm_internal.js +269 -181
- package/wasm/vision_wasm_internal.wasm +0 -0
- package/wasm/vision_wasm_module_internal.js +269 -181
- package/wasm/vision_wasm_module_internal.wasm +0 -0
- package/wasm/vision_wasm_nosimd_internal.js +269 -181
- package/wasm/vision_wasm_nosimd_internal.wasm +0 -0
|
@@ -193,8 +193,6 @@ var EXITSTATUS;
|
|
|
193
193
|
*/ var isFileURI = filename => filename.startsWith("file://");
|
|
194
194
|
|
|
195
195
|
// include: runtime_common.js
|
|
196
|
-
// include: runtime_stack_check.js
|
|
197
|
-
// end include: runtime_stack_check.js
|
|
198
196
|
// include: runtime_exceptions.js
|
|
199
197
|
// Base Emscripten EH error class
|
|
200
198
|
class EmscriptenEH {}
|
|
@@ -207,8 +205,17 @@ class EmscriptenSjLj extends EmscriptenEH {}
|
|
|
207
205
|
// Memory management
|
|
208
206
|
var runtimeInitialized = false;
|
|
209
207
|
|
|
208
|
+
// When ALLOW_MEMORY_GROWTH is enabled, the conversion from Wasm
|
|
209
|
+
// memory to ArrayBuffer requires some additional logic.
|
|
210
|
+
function getMemoryBuffer() {
|
|
211
|
+
return wasmMemory.buffer;
|
|
212
|
+
}
|
|
213
|
+
|
|
210
214
|
function updateMemoryViews() {
|
|
211
|
-
|
|
215
|
+
// If we already have a heap that is resizeable/growable buffer we don't
|
|
216
|
+
// need to do anything in updateMemoryViews.
|
|
217
|
+
if (HEAP8?.buffer?.resizable) return;
|
|
218
|
+
var b = getMemoryBuffer();
|
|
212
219
|
HEAP8 = new Int8Array(b);
|
|
213
220
|
HEAP16 = new Int16Array(b);
|
|
214
221
|
Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
|
|
@@ -223,11 +230,10 @@ function updateMemoryViews() {
|
|
|
223
230
|
// end include: memoryprofiler.js
|
|
224
231
|
// end include: runtime_common.js
|
|
225
232
|
function preRun() {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
}
|
|
233
|
+
var preRun = Module["preRun"];
|
|
234
|
+
if (preRun) {
|
|
235
|
+
if (typeof preRun == "function") preRun = [ preRun ];
|
|
236
|
+
onPreRuns.push(...preRun);
|
|
231
237
|
}
|
|
232
238
|
// Begin ATPRERUNS hooks
|
|
233
239
|
callRuntimeCallbacks(onPreRuns);
|
|
@@ -245,12 +251,10 @@ function initRuntime() {
|
|
|
245
251
|
}
|
|
246
252
|
|
|
247
253
|
function postRun() {
|
|
248
|
-
|
|
249
|
-
if (
|
|
250
|
-
if (typeof
|
|
251
|
-
|
|
252
|
-
addOnPostRun(Module["postRun"].shift());
|
|
253
|
-
}
|
|
254
|
+
var postRun = Module["postRun"];
|
|
255
|
+
if (postRun) {
|
|
256
|
+
if (typeof postRun == "function") postRun = [ postRun ];
|
|
257
|
+
onPostRuns.push(...postRun);
|
|
254
258
|
}
|
|
255
259
|
// Begin ATPOSTRUNS hooks
|
|
256
260
|
callRuntimeCallbacks(onPostRuns);
|
|
@@ -292,9 +296,6 @@ function findWasmBinary() {
|
|
|
292
296
|
}
|
|
293
297
|
|
|
294
298
|
function getBinarySync(file) {
|
|
295
|
-
if (file == wasmBinaryFile && wasmBinary) {
|
|
296
|
-
return new Uint8Array(wasmBinary);
|
|
297
|
-
}
|
|
298
299
|
if (readBinary) {
|
|
299
300
|
return readBinary(file);
|
|
300
301
|
}
|
|
@@ -359,7 +360,7 @@ async function createWasm() {
|
|
|
359
360
|
// Load the wasm module and create an instance of using native support in the JS engine.
|
|
360
361
|
// handle a generated wasm instance, receiving its exports and
|
|
361
362
|
// performing other necessary setup
|
|
362
|
-
|
|
363
|
+
function receiveInstance(instance) {
|
|
363
364
|
wasmExports = instance.exports;
|
|
364
365
|
assignWasmExports(wasmExports);
|
|
365
366
|
updateMemoryViews();
|
|
@@ -380,11 +381,10 @@ async function createWasm() {
|
|
|
380
381
|
// performing.
|
|
381
382
|
// Also pthreads and wasm workers initialize the wasm instance through this
|
|
382
383
|
// path.
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
});
|
|
384
|
+
var instantiateWasm = Module["instantiateWasm"];
|
|
385
|
+
if (instantiateWasm) {
|
|
386
|
+
return new Promise(resolve => {
|
|
387
|
+
instantiateWasm(info, inst => resolve(receiveInstance(inst)));
|
|
388
388
|
});
|
|
389
389
|
}
|
|
390
390
|
wasmBinaryFile ??= findWasmBinary();
|
|
@@ -464,7 +464,7 @@ var callUserCallback = func => {
|
|
|
464
464
|
};
|
|
465
465
|
|
|
466
466
|
function getFullscreenElement() {
|
|
467
|
-
return document.fullscreenElement
|
|
467
|
+
return document.fullscreenElement ?? document.webkitFullscreenElement;
|
|
468
468
|
}
|
|
469
469
|
|
|
470
470
|
/** @param {number=} timeout */ var safeSetTimeout = (func, timeout) => setTimeout(() => {
|
|
@@ -482,12 +482,15 @@ var warnOnce = text => {
|
|
|
482
482
|
|
|
483
483
|
var preloadPlugins = [];
|
|
484
484
|
|
|
485
|
+
/** @type {!Int32Array} */ var HEAP32;
|
|
486
|
+
|
|
487
|
+
/** @type {!Uint32Array} */ var HEAPU32;
|
|
488
|
+
|
|
485
489
|
var Browser = {
|
|
486
490
|
useWebGL: false,
|
|
487
491
|
isFullscreen: false,
|
|
488
492
|
pointerLock: false,
|
|
489
493
|
moduleContextCreatedCallbacks: [],
|
|
490
|
-
workers: [],
|
|
491
494
|
preloadedImages: {},
|
|
492
495
|
preloadedAudios: {},
|
|
493
496
|
getCanvas: () => Module["canvas"],
|
|
@@ -554,7 +557,7 @@ var Browser = {
|
|
|
554
557
|
var url = URL.createObjectURL(b);
|
|
555
558
|
// XXX we never revoke this!
|
|
556
559
|
var audio = new Audio;
|
|
557
|
-
audio.addEventListener("canplaythrough", () => finish(audio)
|
|
560
|
+
audio.addEventListener("canplaythrough", () => finish(audio));
|
|
558
561
|
// use addEventListener due to chromium bug 124926
|
|
559
562
|
audio.onerror = event => {
|
|
560
563
|
if (done) return;
|
|
@@ -602,14 +605,14 @@ var Browser = {
|
|
|
602
605
|
if (canvas) {
|
|
603
606
|
// forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module
|
|
604
607
|
// Module['forcedAspectRatio'] = 4 / 3;
|
|
605
|
-
document.addEventListener("pointerlockchange", pointerLockChange
|
|
608
|
+
document.addEventListener("pointerlockchange", pointerLockChange);
|
|
606
609
|
if (Module["elementPointerLock"]) {
|
|
607
610
|
canvas.addEventListener("click", ev => {
|
|
608
611
|
if (!Browser.pointerLock && Browser.getCanvas().requestPointerLock) {
|
|
609
612
|
Browser.getCanvas().requestPointerLock();
|
|
610
613
|
ev.preventDefault();
|
|
611
614
|
}
|
|
612
|
-
}
|
|
615
|
+
});
|
|
613
616
|
}
|
|
614
617
|
}
|
|
615
618
|
},
|
|
@@ -683,32 +686,30 @@ var Browser = {
|
|
|
683
686
|
Browser.updateCanvasDimensions(canvas);
|
|
684
687
|
}
|
|
685
688
|
}
|
|
686
|
-
Module["onFullScreen"]?.(Browser.isFullscreen);
|
|
687
|
-
Module["onFullscreen"]?.(Browser.isFullscreen);
|
|
688
689
|
}
|
|
689
690
|
if (!Browser.fullscreenHandlersInstalled) {
|
|
690
691
|
Browser.fullscreenHandlersInstalled = true;
|
|
691
|
-
document.addEventListener("fullscreenchange", fullscreenChange
|
|
692
|
-
document.addEventListener("
|
|
693
|
-
document.addEventListener("webkitfullscreenchange", fullscreenChange, false);
|
|
694
|
-
document.addEventListener("MSFullscreenChange", fullscreenChange, false);
|
|
692
|
+
document.addEventListener("fullscreenchange", fullscreenChange);
|
|
693
|
+
document.addEventListener("webkitfullscreenchange", fullscreenChange);
|
|
695
694
|
}
|
|
696
695
|
// create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root
|
|
697
696
|
var canvasContainer = document.createElement("div");
|
|
698
697
|
canvas.parentNode.insertBefore(canvasContainer, canvas);
|
|
699
698
|
canvasContainer.appendChild(canvas);
|
|
700
699
|
// use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size)
|
|
701
|
-
|
|
700
|
+
// Safari didn't support Element.requestFullscreen until 16.4
|
|
701
|
+
// See: https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen
|
|
702
|
+
/** @suppress {checkTypes} */ canvasContainer.requestFullscreen ??= (canvasContainer["webkitRequestFullscreen"] ? () => canvasContainer["webkitRequestFullscreen"](Element.ALLOW_KEYBOARD_INPUT) : null) ?? (canvasContainer["webkitRequestFullScreen"] ? () => canvasContainer["webkitRequestFullScreen"](Element.ALLOW_KEYBOARD_INPUT) : null);
|
|
702
703
|
canvasContainer.requestFullscreen();
|
|
703
704
|
},
|
|
704
705
|
exitFullscreen() {
|
|
705
706
|
// This is workaround for chrome. Trying to exit from fullscreen
|
|
706
|
-
// not in fullscreen state will cause
|
|
707
|
+
// not in fullscreen state will cause 'TypeError: Document not active'
|
|
707
708
|
// in chrome. See https://github.com/emscripten-core/emscripten/pull/8236
|
|
708
709
|
if (!Browser.isFullscreen) {
|
|
709
710
|
return false;
|
|
710
711
|
}
|
|
711
|
-
var CFS = document
|
|
712
|
+
var CFS = document.exitFullscreen ?? document["webkitCancelFullScreen"];
|
|
712
713
|
CFS.apply(document, []);
|
|
713
714
|
return true;
|
|
714
715
|
},
|
|
@@ -730,14 +731,7 @@ var Browser = {
|
|
|
730
731
|
}[name.slice(name.lastIndexOf(".") + 1)];
|
|
731
732
|
},
|
|
732
733
|
getUserMedia(func) {
|
|
733
|
-
|
|
734
|
-
window.getUserMedia(func);
|
|
735
|
-
},
|
|
736
|
-
getMovementX(event) {
|
|
737
|
-
return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0;
|
|
738
|
-
},
|
|
739
|
-
getMovementY(event) {
|
|
740
|
-
return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0;
|
|
734
|
+
return navigator.mediaDevices.getUserMedia(func);
|
|
741
735
|
},
|
|
742
736
|
getMouseWheelDelta(event) {
|
|
743
737
|
var delta = 0;
|
|
@@ -815,13 +809,8 @@ var Browser = {
|
|
|
815
809
|
if (Browser.pointerLock) {
|
|
816
810
|
// When the pointer is locked, calculate the coordinates
|
|
817
811
|
// based on the movement of the mouse.
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
Browser.mouseMovementX = Browser.mouseMovementY = 0;
|
|
821
|
-
} else {
|
|
822
|
-
Browser.mouseMovementX = Browser.getMovementX(event);
|
|
823
|
-
Browser.mouseMovementY = Browser.getMovementY(event);
|
|
824
|
-
}
|
|
812
|
+
Browser.mouseMovementX = event.movementX;
|
|
813
|
+
Browser.mouseMovementY = event.movementY;
|
|
825
814
|
// add the mouse delta to the current absolute mouse position
|
|
826
815
|
Browser.mouseX += Browser.mouseMovementX;
|
|
827
816
|
Browser.mouseY += Browser.mouseMovementY;
|
|
@@ -890,13 +879,6 @@ var Browser = {
|
|
|
890
879
|
}
|
|
891
880
|
var w = wNative;
|
|
892
881
|
var h = hNative;
|
|
893
|
-
if (Module["forcedAspectRatio"] > 0) {
|
|
894
|
-
if (w / h < Module["forcedAspectRatio"]) {
|
|
895
|
-
w = Math.round(h * Module["forcedAspectRatio"]);
|
|
896
|
-
} else {
|
|
897
|
-
h = Math.round(w / Module["forcedAspectRatio"]);
|
|
898
|
-
}
|
|
899
|
-
}
|
|
900
882
|
if ((getFullscreenElement() === canvas.parentNode) && (typeof screen != "undefined")) {
|
|
901
883
|
var factor = Math.min(screen.width / w, screen.height / h);
|
|
902
884
|
w = Math.round(w * factor);
|
|
@@ -925,22 +907,8 @@ var Browser = {
|
|
|
925
907
|
}
|
|
926
908
|
};
|
|
927
909
|
|
|
928
|
-
/** @type {!Int16Array} */ var HEAP16;
|
|
929
|
-
|
|
930
|
-
/** @type {!Int32Array} */ var HEAP32;
|
|
931
|
-
|
|
932
910
|
/** @type {!Int8Array} */ var HEAP8;
|
|
933
911
|
|
|
934
|
-
/** @type {!Float32Array} */ var HEAPF32;
|
|
935
|
-
|
|
936
|
-
/** @type {!Float64Array} */ var HEAPF64;
|
|
937
|
-
|
|
938
|
-
/** @type {!Uint16Array} */ var HEAPU16;
|
|
939
|
-
|
|
940
|
-
/** @type {!Uint32Array} */ var HEAPU32;
|
|
941
|
-
|
|
942
|
-
/** @type {!Uint8Array} */ var HEAPU8;
|
|
943
|
-
|
|
944
912
|
var callRuntimeCallbacks = callbacks => {
|
|
945
913
|
while (callbacks.length > 0) {
|
|
946
914
|
// Pass the module as the first argument.
|
|
@@ -950,12 +918,8 @@ var callRuntimeCallbacks = callbacks => {
|
|
|
950
918
|
|
|
951
919
|
var onPostRuns = [];
|
|
952
920
|
|
|
953
|
-
var addOnPostRun = cb => onPostRuns.push(cb);
|
|
954
|
-
|
|
955
921
|
var onPreRuns = [];
|
|
956
922
|
|
|
957
|
-
var addOnPreRun = cb => onPreRuns.push(cb);
|
|
958
|
-
|
|
959
923
|
var noExitRuntime = true;
|
|
960
924
|
|
|
961
925
|
var stackRestore = val => __emscripten_stack_restore(val);
|
|
@@ -1080,7 +1044,7 @@ var initRandomFill = () => {
|
|
|
1080
1044
|
// This block is not needed on v19+ since crypto.getRandomValues is builtin
|
|
1081
1045
|
if (ENVIRONMENT_IS_NODE) {
|
|
1082
1046
|
var nodeCrypto = require("node:crypto");
|
|
1083
|
-
return view => nodeCrypto.randomFillSync(view);
|
|
1047
|
+
return view => (nodeCrypto.randomFillSync(view), 0);
|
|
1084
1048
|
}
|
|
1085
1049
|
return view => (crypto.getRandomValues(view), 0);
|
|
1086
1050
|
};
|
|
@@ -1142,7 +1106,13 @@ var PATH_FS = {
|
|
|
1142
1106
|
|
|
1143
1107
|
var UTF8Decoder = new TextDecoder;
|
|
1144
1108
|
|
|
1145
|
-
|
|
1109
|
+
/**
|
|
1110
|
+
* heapOrArray is either a regular array, or a JavaScript typed array view.
|
|
1111
|
+
* @param {number} idx
|
|
1112
|
+
* @param {number=} maxBytesToRead
|
|
1113
|
+
* @param {boolean=} ignoreNul
|
|
1114
|
+
* @return {number}
|
|
1115
|
+
*/ var findStringEnd = (heapOrArray, idx, maxBytesToRead, ignoreNul) => {
|
|
1146
1116
|
var maxIdx = idx + maxBytesToRead;
|
|
1147
1117
|
if (ignoreNul) return maxIdx;
|
|
1148
1118
|
// TextDecoder needs to know the byte length in advance, it doesn't stop on
|
|
@@ -1405,6 +1375,8 @@ var TTY = {
|
|
|
1405
1375
|
}
|
|
1406
1376
|
};
|
|
1407
1377
|
|
|
1378
|
+
/** @type {!Uint8Array} */ var HEAPU8;
|
|
1379
|
+
|
|
1408
1380
|
var zeroMemory = (ptr, size) => HEAPU8.fill(0, ptr, ptr + size);
|
|
1409
1381
|
|
|
1410
1382
|
var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;
|
|
@@ -1766,23 +1738,26 @@ var FS_createDataFile = (...args) => FS.createDataFile(...args);
|
|
|
1766
1738
|
|
|
1767
1739
|
var getUniqueRunDependency = id => id;
|
|
1768
1740
|
|
|
1741
|
+
var dependenciesPromise = null;
|
|
1742
|
+
|
|
1743
|
+
var resolveRunDependencies = async () => dependenciesPromise;
|
|
1744
|
+
|
|
1769
1745
|
var runDependencies = 0;
|
|
1770
1746
|
|
|
1771
|
-
var
|
|
1747
|
+
var dependenciesPromiseResolve = null;
|
|
1772
1748
|
|
|
1773
1749
|
var removeRunDependency = id => {
|
|
1774
1750
|
runDependencies--;
|
|
1775
1751
|
Module["monitorRunDependencies"]?.(runDependencies);
|
|
1776
|
-
if (runDependencies
|
|
1777
|
-
|
|
1778
|
-
var callback = dependenciesFulfilled;
|
|
1779
|
-
dependenciesFulfilled = null;
|
|
1780
|
-
callback();
|
|
1781
|
-
}
|
|
1752
|
+
if (!runDependencies) {
|
|
1753
|
+
dependenciesPromiseResolve();
|
|
1782
1754
|
}
|
|
1783
1755
|
};
|
|
1784
1756
|
|
|
1785
1757
|
var addRunDependency = id => {
|
|
1758
|
+
if (!runDependencies) {
|
|
1759
|
+
dependenciesPromise = new Promise(resolve => dependenciesPromiseResolve = resolve);
|
|
1760
|
+
}
|
|
1786
1761
|
runDependencies++;
|
|
1787
1762
|
Module["monitorRunDependencies"]?.(runDependencies);
|
|
1788
1763
|
};
|
|
@@ -1916,6 +1891,53 @@ var FS = {
|
|
|
1916
1891
|
get isDevice() {
|
|
1917
1892
|
return FS.isChrdev(this.mode);
|
|
1918
1893
|
}
|
|
1894
|
+
// The per-inode readiness wait-queue. The node carries a Set of listener
|
|
1895
|
+
// entries {cb}; producers (SOCKFS, PIPEFS) call notifyListeners on a
|
|
1896
|
+
// readiness transition, and poll()/epoll consume it. It lives on the node
|
|
1897
|
+
// (not the fd) so dup'd fds share one queue. Only nodes that derive real
|
|
1898
|
+
// readiness (sockets, pipes, and an epoll's own node) ever use this -
|
|
1899
|
+
// always-ready types (regular files, ttys) never register or notify.
|
|
1900
|
+
addListener(cb, exclusive = false) {
|
|
1901
|
+
var entry = {
|
|
1902
|
+
cb,
|
|
1903
|
+
exclusive
|
|
1904
|
+
};
|
|
1905
|
+
var listeners = (this.listeners ??= new Set);
|
|
1906
|
+
listeners.add(entry);
|
|
1907
|
+
return {
|
|
1908
|
+
listeners,
|
|
1909
|
+
entry
|
|
1910
|
+
};
|
|
1911
|
+
}
|
|
1912
|
+
notifyListeners(flags) {
|
|
1913
|
+
// Iterates the set without copying, which is safe ONLY under a
|
|
1914
|
+
// load-bearing contract that every internal listener must honour:
|
|
1915
|
+
// 1. A listener must not run user code synchronously (a poll waiter only
|
|
1916
|
+
// resolves a Promise; an epoll registration only re-lists +
|
|
1917
|
+
// re-notifies; the epoll callback only schedules a tick). User code
|
|
1918
|
+
// runs on a later tick, never inside this loop.
|
|
1919
|
+
// 2. A listener may delete entries only from ITS OWN waiter, never from
|
|
1920
|
+
// a sibling node's set that may be mid-iteration. (Deleting an entry
|
|
1921
|
+
// of the set being iterated here is fine - a Set tolerates removal of
|
|
1922
|
+
// a not-yet-visited entry mid-iteration; mutating a *different* node's
|
|
1923
|
+
// set is fine because that set is not being iterated.)
|
|
1924
|
+
// Violating either gives silently skipped wakeups that are near-impossible
|
|
1925
|
+
// to reproduce. Any new producer/listener must preserve it.
|
|
1926
|
+
if (!this.listeners) return;
|
|
1927
|
+
// Fire every non-exclusive listener. Among EPOLLEXCLUSIVE registrations
|
|
1928
|
+
// (one fd watched by several epolls) wake only one, rotating round-robin
|
|
1929
|
+
// per node, to avoid a thundering herd. (Only epoll registrations are ever
|
|
1930
|
+
// exclusive; poll waiters and a node's own consumers are not.)
|
|
1931
|
+
var excl;
|
|
1932
|
+
for (var entry of this.listeners) {
|
|
1933
|
+
if (entry.exclusive) (excl ||= []).push(entry); else entry.cb(flags);
|
|
1934
|
+
}
|
|
1935
|
+
if (excl) {
|
|
1936
|
+
var i = (this.exclTurn || 0) % excl.length;
|
|
1937
|
+
this.exclTurn = i + 1;
|
|
1938
|
+
excl[i].cb(flags);
|
|
1939
|
+
}
|
|
1940
|
+
}
|
|
1919
1941
|
},
|
|
1920
1942
|
lookupPath(path, opts = {}) {
|
|
1921
1943
|
if (!path) {
|
|
@@ -2461,6 +2483,27 @@ var FS = {
|
|
|
2461
2483
|
}
|
|
2462
2484
|
return parent.node_ops.symlink(parent, newname, oldpath);
|
|
2463
2485
|
},
|
|
2486
|
+
link(oldpath, newpath, flags) {
|
|
2487
|
+
var lookup = FS.lookupPath(newpath, {
|
|
2488
|
+
parent: true
|
|
2489
|
+
});
|
|
2490
|
+
var parent = lookup.node;
|
|
2491
|
+
if (!parent) {
|
|
2492
|
+
throw new FS.ErrnoError(44);
|
|
2493
|
+
}
|
|
2494
|
+
var newname = PATH.basename(newpath);
|
|
2495
|
+
var errCode = FS.mayCreate(parent, newname);
|
|
2496
|
+
if (errCode) {
|
|
2497
|
+
throw new FS.ErrnoError(errCode);
|
|
2498
|
+
}
|
|
2499
|
+
// Hardlinks are only supported by filesystem backends that provide a
|
|
2500
|
+
// `link` node op (e.g. NODERAWFS backed by the host). NODEFS omits it:
|
|
2501
|
+
// a host hardlink cannot be confined to the mount root.
|
|
2502
|
+
if (!parent.node_ops.link) {
|
|
2503
|
+
throw new FS.ErrnoError(34);
|
|
2504
|
+
}
|
|
2505
|
+
return parent.node_ops.link(parent, newname, oldpath, flags);
|
|
2506
|
+
},
|
|
2464
2507
|
rename(old_path, new_path) {
|
|
2465
2508
|
var old_dirname = PATH.dirname(old_path);
|
|
2466
2509
|
var new_dirname = PATH.dirname(new_path);
|
|
@@ -2718,15 +2761,14 @@ var FS = {
|
|
|
2718
2761
|
}
|
|
2719
2762
|
FS.doTruncate(stream, stream.node, len);
|
|
2720
2763
|
},
|
|
2721
|
-
utime(path, atime, mtime) {
|
|
2764
|
+
utime(path, atime, mtime, dontFollow) {
|
|
2722
2765
|
var lookup = FS.lookupPath(path, {
|
|
2723
|
-
follow:
|
|
2766
|
+
follow: !dontFollow
|
|
2724
2767
|
});
|
|
2725
|
-
|
|
2726
|
-
var setattr = FS.checkOpExists(node.node_ops.setattr, 63);
|
|
2727
|
-
setattr(node, {
|
|
2768
|
+
FS.doSetAttr(null, lookup.node, {
|
|
2728
2769
|
atime,
|
|
2729
|
-
mtime
|
|
2770
|
+
mtime,
|
|
2771
|
+
dontFollow
|
|
2730
2772
|
});
|
|
2731
2773
|
},
|
|
2732
2774
|
open(path, flags, mode = 438) {
|
|
@@ -2828,6 +2870,11 @@ var FS = {
|
|
|
2828
2870
|
}
|
|
2829
2871
|
if (stream.getdents) stream.getdents = null;
|
|
2830
2872
|
// free readdir state
|
|
2873
|
+
// The fd is going away: wake anything waiting on it (poll/epoll) with
|
|
2874
|
+
// POLLNVAL so a blocking wait unblocks and an epoll registration is evicted
|
|
2875
|
+
// on its next derive. Only sockets/pipes/epoll ever carry a wait-queue, so
|
|
2876
|
+
// for every other stream (incl. nodeless noderawfs stdio) this is a no-op.
|
|
2877
|
+
stream.node?.notifyListeners(32);
|
|
2831
2878
|
try {
|
|
2832
2879
|
if (stream.stream_ops.close) {
|
|
2833
2880
|
stream.stream_ops.close(stream);
|
|
@@ -3295,7 +3342,7 @@ var FS = {
|
|
|
3295
3342
|
var xhr = new XMLHttpRequest;
|
|
3296
3343
|
xhr.open("HEAD", url, false);
|
|
3297
3344
|
xhr.send(null);
|
|
3298
|
-
if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) abort(
|
|
3345
|
+
if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) abort(`Couldn't load ${url}. Status: ${xhr.status}`);
|
|
3299
3346
|
var datalength = Number(xhr.getResponseHeader("Content-length"));
|
|
3300
3347
|
var header;
|
|
3301
3348
|
var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
|
|
@@ -3310,14 +3357,14 @@ var FS = {
|
|
|
3310
3357
|
// TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
|
|
3311
3358
|
var xhr = new XMLHttpRequest;
|
|
3312
3359
|
xhr.open("GET", url, false);
|
|
3313
|
-
if (datalength !== chunkSize) xhr.setRequestHeader("Range",
|
|
3360
|
+
if (datalength !== chunkSize) xhr.setRequestHeader("Range", `bytes=${from}-${to}`);
|
|
3314
3361
|
// Some hints to the browser that we want binary data.
|
|
3315
3362
|
xhr.responseType = "arraybuffer";
|
|
3316
3363
|
if (xhr.overrideMimeType) {
|
|
3317
3364
|
xhr.overrideMimeType("text/plain; charset=x-user-defined");
|
|
3318
3365
|
}
|
|
3319
3366
|
xhr.send(null);
|
|
3320
|
-
if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) abort(
|
|
3367
|
+
if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) abort(`Couldn't load ${url}. Status: ${xhr.status}`);
|
|
3321
3368
|
if (xhr.response !== undefined) {
|
|
3322
3369
|
return new Uint8Array(/** @type{Array<number>} */ (xhr.response || []));
|
|
3323
3370
|
}
|
|
@@ -3536,7 +3583,7 @@ var SYSCALLS = {
|
|
|
3536
3583
|
// MAP_PRIVATE calls need not to be synced back to underlying fs
|
|
3537
3584
|
return 0;
|
|
3538
3585
|
}
|
|
3539
|
-
var buffer = HEAPU8.
|
|
3586
|
+
var buffer = HEAPU8.subarray(addr, addr + len);
|
|
3540
3587
|
FS.msync(stream, buffer, offset, len, flags);
|
|
3541
3588
|
},
|
|
3542
3589
|
getStreamFromFD(fd) {
|
|
@@ -3598,6 +3645,8 @@ var syscallGetVarargI = () => {
|
|
|
3598
3645
|
|
|
3599
3646
|
var syscallGetVarargP = syscallGetVarargI;
|
|
3600
3647
|
|
|
3648
|
+
/** @type {!Int16Array} */ var HEAP16;
|
|
3649
|
+
|
|
3601
3650
|
function ___syscall_fcntl64(fd, cmd, varargs) {
|
|
3602
3651
|
SYSCALLS.varargs = varargs;
|
|
3603
3652
|
try {
|
|
@@ -3871,12 +3920,12 @@ var registeredTypes = {};
|
|
|
3871
3920
|
|
|
3872
3921
|
var typeDependencies = {};
|
|
3873
3922
|
|
|
3874
|
-
|
|
3923
|
+
class BindingError extends Error {
|
|
3875
3924
|
constructor(message) {
|
|
3876
3925
|
super(message);
|
|
3877
3926
|
this.name = "BindingError";
|
|
3878
3927
|
}
|
|
3879
|
-
}
|
|
3928
|
+
}
|
|
3880
3929
|
|
|
3881
3930
|
var throwBindingError = message => {
|
|
3882
3931
|
throw new BindingError(message);
|
|
@@ -3988,6 +4037,10 @@ var EmValType = {
|
|
|
3988
4037
|
|
|
3989
4038
|
var __embind_register_emval = rawType => registerType(rawType, EmValType);
|
|
3990
4039
|
|
|
4040
|
+
/** @type {!Float32Array} */ var HEAPF32;
|
|
4041
|
+
|
|
4042
|
+
/** @type {!Float64Array} */ var HEAPF64;
|
|
4043
|
+
|
|
3991
4044
|
var floatReadValueFromPointer = (name, width) => {
|
|
3992
4045
|
switch (width) {
|
|
3993
4046
|
case 4:
|
|
@@ -4016,6 +4069,8 @@ var __embind_register_float = (rawType, name, size) => {
|
|
|
4016
4069
|
});
|
|
4017
4070
|
};
|
|
4018
4071
|
|
|
4072
|
+
/** @type {!Uint16Array} */ var HEAPU16;
|
|
4073
|
+
|
|
4019
4074
|
var integerReadValueFromPointer = (name, width, signed) => {
|
|
4020
4075
|
// integers are quite common, so generate very specialized functions
|
|
4021
4076
|
switch (width) {
|
|
@@ -4148,9 +4203,7 @@ var UTF16ToString = (ptr, maxBytesToRead, ignoreNul) => {
|
|
|
4148
4203
|
return UTF16Decoder.decode(HEAPU16.subarray(idx, endIdx));
|
|
4149
4204
|
};
|
|
4150
4205
|
|
|
4151
|
-
var stringToUTF16 = (str, outPtr, maxBytesToWrite) => {
|
|
4152
|
-
// Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.
|
|
4153
|
-
maxBytesToWrite ??= 2147483647;
|
|
4206
|
+
var stringToUTF16 = (str, outPtr, maxBytesToWrite = 2147483647) => {
|
|
4154
4207
|
if (maxBytesToWrite < 2) return 0;
|
|
4155
4208
|
maxBytesToWrite -= 2;
|
|
4156
4209
|
// Null terminator.
|
|
@@ -4183,9 +4236,7 @@ var UTF32ToString = (ptr, maxBytesToRead, ignoreNul) => {
|
|
|
4183
4236
|
return str;
|
|
4184
4237
|
};
|
|
4185
4238
|
|
|
4186
|
-
var stringToUTF32 = (str, outPtr, maxBytesToWrite) => {
|
|
4187
|
-
// Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.
|
|
4188
|
-
maxBytesToWrite ??= 2147483647;
|
|
4239
|
+
var stringToUTF32 = (str, outPtr, maxBytesToWrite = 2147483647) => {
|
|
4189
4240
|
if (maxBytesToWrite < 4) return 0;
|
|
4190
4241
|
var startPtr = outPtr;
|
|
4191
4242
|
var endPtr = startPtr + maxBytesToWrite - 4;
|
|
@@ -4426,6 +4477,9 @@ var __emval_typeof = handle => {
|
|
|
4426
4477
|
function __gmtime_js(time_low, time_high, tmPtr) {
|
|
4427
4478
|
var time = convertI32PairToI53Checked(time_low, time_high);
|
|
4428
4479
|
var date = new Date(time * 1e3);
|
|
4480
|
+
if (isNaN(date.getTime())) {
|
|
4481
|
+
return 1;
|
|
4482
|
+
}
|
|
4429
4483
|
HEAP32[((tmPtr) >> 2)] = date.getUTCSeconds();
|
|
4430
4484
|
HEAP32[(((tmPtr) + (4)) >> 2)] = date.getUTCMinutes();
|
|
4431
4485
|
HEAP32[(((tmPtr) + (8)) >> 2)] = date.getUTCHours();
|
|
@@ -4436,6 +4490,7 @@ function __gmtime_js(time_low, time_high, tmPtr) {
|
|
|
4436
4490
|
var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);
|
|
4437
4491
|
var yday = ((date.getTime() - start) / (1e3 * 60 * 60 * 24)) | 0;
|
|
4438
4492
|
HEAP32[(((tmPtr) + (28)) >> 2)] = yday;
|
|
4493
|
+
return 0;
|
|
4439
4494
|
}
|
|
4440
4495
|
|
|
4441
4496
|
var isLeapYear = year => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
@@ -4455,6 +4510,9 @@ var ydayFromDate = date => {
|
|
|
4455
4510
|
function __localtime_js(time_low, time_high, tmPtr) {
|
|
4456
4511
|
var time = convertI32PairToI53Checked(time_low, time_high);
|
|
4457
4512
|
var date = new Date(time * 1e3);
|
|
4513
|
+
if (isNaN(date.getTime())) {
|
|
4514
|
+
return 1;
|
|
4515
|
+
}
|
|
4458
4516
|
HEAP32[((tmPtr) >> 2)] = date.getSeconds();
|
|
4459
4517
|
HEAP32[(((tmPtr) + (4)) >> 2)] = date.getMinutes();
|
|
4460
4518
|
HEAP32[(((tmPtr) + (8)) >> 2)] = date.getHours();
|
|
@@ -4471,6 +4529,7 @@ function __localtime_js(time_low, time_high, tmPtr) {
|
|
|
4471
4529
|
var winterOffset = start.getTimezoneOffset();
|
|
4472
4530
|
var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;
|
|
4473
4531
|
HEAP32[(((tmPtr) + (32)) >> 2)] = dst;
|
|
4532
|
+
return 0;
|
|
4474
4533
|
}
|
|
4475
4534
|
|
|
4476
4535
|
var setTempRet0 = val => __emscripten_tempret_set(val);
|
|
@@ -4493,13 +4552,17 @@ var __mktime_js = function(tmPtr) {
|
|
|
4493
4552
|
// DST is in December in South
|
|
4494
4553
|
if (dst < 0) {
|
|
4495
4554
|
// Attention: some regions don't have DST at all.
|
|
4496
|
-
|
|
4555
|
+
dst = Number(summerOffset != winterOffset && dstOffset == guessedOffset);
|
|
4497
4556
|
} else if ((dst > 0) != (dstOffset == guessedOffset)) {
|
|
4498
4557
|
var nonDstOffset = Math.max(winterOffset, summerOffset);
|
|
4499
4558
|
var trueOffset = dst > 0 ? dstOffset : nonDstOffset;
|
|
4500
4559
|
// Don't try setMinutes(date.getMinutes() + ...) -- it's messed up.
|
|
4501
4560
|
date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4);
|
|
4561
|
+
if (isNaN(date.getTime())) {
|
|
4562
|
+
return -1;
|
|
4563
|
+
}
|
|
4502
4564
|
}
|
|
4565
|
+
HEAP32[(((tmPtr) + (32)) >> 2)] = dst;
|
|
4503
4566
|
HEAP32[(((tmPtr) + (24)) >> 2)] = date.getDay();
|
|
4504
4567
|
var yday = ydayFromDate(date) | 0;
|
|
4505
4568
|
HEAP32[(((tmPtr) + (28)) >> 2)] = yday;
|
|
@@ -4805,7 +4868,7 @@ var _emscripten_stack_unwind_buffer = (addr, buffer, count) => {
|
|
|
4805
4868
|
++offset;
|
|
4806
4869
|
}
|
|
4807
4870
|
for (var i = 0; i < count && stack[i + offset]; ++i) {
|
|
4808
|
-
|
|
4871
|
+
HEAPU32[(((buffer) + (i * 4)) >> 2)] = convertFrameToPC(stack[i + offset]);
|
|
4809
4872
|
}
|
|
4810
4873
|
return i;
|
|
4811
4874
|
};
|
|
@@ -5200,7 +5263,7 @@ var webglPowerPreferences = [ "default", "low-power", "high-performance" ];
|
|
|
5200
5263
|
/** @type {Object} */ var specialHTMLTargets = [ 0, globalThis.document ?? 0, globalThis.window ?? 0 ];
|
|
5201
5264
|
|
|
5202
5265
|
var findEventTarget = target => {
|
|
5203
|
-
// The sensible
|
|
5266
|
+
// The sensible 'default' target varies between events, but use window as the default
|
|
5204
5267
|
// since DOM events mostly can default to that. Specific callback registrations
|
|
5205
5268
|
// override their own defaults.
|
|
5206
5269
|
if (!target) return window;
|
|
@@ -5232,6 +5295,7 @@ var _emscripten_webgl_do_create_context = (target, attributes) => {
|
|
|
5232
5295
|
"preserveDrawingBuffer": !!HEAP8[attributes + 5],
|
|
5233
5296
|
"powerPreference": webglPowerPreferences[powerPreference],
|
|
5234
5297
|
"failIfMajorPerformanceCaveat": !!HEAP8[attributes + 12],
|
|
5298
|
+
"desynchronized": !!HEAP8[attributes + 33],
|
|
5235
5299
|
// The following are not predefined WebGL context attributes in the WebGL specification, so the property names can be minified by Closure.
|
|
5236
5300
|
majorVersion: HEAP32[attr32 + (16 >> 2)],
|
|
5237
5301
|
minorVersion: HEAP32[attr32 + (20 >> 2)],
|
|
@@ -5273,6 +5337,7 @@ var _emscripten_webgl_get_context_attributes = (c, a) => {
|
|
|
5273
5337
|
var power = t["powerPreference"] && webglPowerPreferences.indexOf(t["powerPreference"]);
|
|
5274
5338
|
HEAP32[(((a) + (8)) >> 2)] = power;
|
|
5275
5339
|
HEAP8[(a) + (12)] = t.failIfMajorPerformanceCaveat;
|
|
5340
|
+
HEAP8[(a) + (33)] = t.desynchronized;
|
|
5276
5341
|
HEAP32[(((a) + (16)) >> 2)] = c.version;
|
|
5277
5342
|
HEAP32[(((a) + (20)) >> 2)] = 0;
|
|
5278
5343
|
HEAP8[(a) + (24)] = c.attributes.enableExtensionsByDefault;
|
|
@@ -5777,6 +5842,28 @@ var WebGPU = {
|
|
|
5777
5842
|
HEAP32[(((infoStruct) + (40)) >> 2)] = adapterType;
|
|
5778
5843
|
HEAPU32[(((infoStruct) + (44)) >> 2)] = 0;
|
|
5779
5844
|
HEAPU32[(((infoStruct) + (48)) >> 2)] = 0;
|
|
5845
|
+
WebGPU.iterateExtensions(infoStruct, {
|
|
5846
|
+
327739: ext => {
|
|
5847
|
+
let configCount = 0;
|
|
5848
|
+
let configsPtr = 0;
|
|
5849
|
+
if (info.subgroupMatrixConfigs) {
|
|
5850
|
+
configCount = info.subgroupMatrixConfigs.length;
|
|
5851
|
+
configsPtr = _malloc(configCount * 20);
|
|
5852
|
+
for (const [i, cfg] of info.subgroupMatrixConfigs.entries()) {
|
|
5853
|
+
const ptr = configsPtr + i * 20;
|
|
5854
|
+
const componentType = WebGPU.SubgroupMatrixComponentType.indexOf(cfg.componentType);
|
|
5855
|
+
const resultComponentType = WebGPU.SubgroupMatrixComponentType.indexOf(cfg.resultComponentType);
|
|
5856
|
+
HEAP32[((ptr) >> 2)] = componentType;
|
|
5857
|
+
HEAP32[(((ptr) + (4)) >> 2)] = resultComponentType;
|
|
5858
|
+
HEAPU32[(((ptr) + (8)) >> 2)] = cfg.M;
|
|
5859
|
+
HEAPU32[(((ptr) + (12)) >> 2)] = cfg.N;
|
|
5860
|
+
HEAPU32[(((ptr) + (16)) >> 2)] = cfg.K;
|
|
5861
|
+
}
|
|
5862
|
+
}
|
|
5863
|
+
HEAPU32[(((ext) + (12)) >> 2)] = configsPtr;
|
|
5864
|
+
HEAPU32[(((ext) + (8)) >> 2)] = configCount;
|
|
5865
|
+
}
|
|
5866
|
+
});
|
|
5780
5867
|
},
|
|
5781
5868
|
AddressMode: [ , "clamp-to-edge", "repeat", "mirror-repeat" ],
|
|
5782
5869
|
BlendFactor: [ , "zero", "one", "src", "one-minus-src", "src-alpha", "one-minus-src-alpha", "dst", "one-minus-dst", "dst-alpha", "one-minus-dst-alpha", "src-alpha-saturated", "constant", "one-minus-constant", "src1", "one-minus-src1", "src1-alpha", "one-minus-src1-alpha" ],
|
|
@@ -5815,7 +5902,8 @@ var WebGPU = {
|
|
|
5815
5902
|
22: "texture-component-swizzle",
|
|
5816
5903
|
23: "subgroup-size-control",
|
|
5817
5904
|
327692: "chromium-experimental-unorm16-texture-formats",
|
|
5818
|
-
327729: "chromium-experimental-multi-draw-indirect"
|
|
5905
|
+
327729: "chromium-experimental-multi-draw-indirect",
|
|
5906
|
+
327732: "chromium-experimental-subgroup-matrix"
|
|
5819
5907
|
},
|
|
5820
5908
|
FilterMode: [ , "nearest", "linear" ],
|
|
5821
5909
|
FrontFace: [ , "ccw", "cw" ],
|
|
@@ -5833,6 +5921,7 @@ var WebGPU = {
|
|
|
5833
5921
|
StencilOperation: [ , "keep", "zero", "replace", "invert", "increment-clamp", "decrement-clamp", "increment-wrap", "decrement-wrap" ],
|
|
5834
5922
|
StorageTextureAccess: [ , , "write-only", "read-only", "read-write" ],
|
|
5835
5923
|
StoreOp: [ , "store", "discard" ],
|
|
5924
|
+
SubgroupMatrixComponentType: [ , "f32", "f16", "u32", "i32", "u8", "i8" ],
|
|
5836
5925
|
SurfaceGetCurrentTextureStatus: [ , "success-optimal", "success-suboptimal", "timeout", "outdated", "lost", "error" ],
|
|
5837
5926
|
TextureAspect: [ , "all", "stencil-only", "depth-only" ],
|
|
5838
5927
|
TextureDimension: [ , "1d", "2d", "3d" ],
|
|
@@ -5842,7 +5931,7 @@ var WebGPU = {
|
|
|
5842
5931
|
ToneMappingMode: [ , "standard", "extended" ],
|
|
5843
5932
|
VertexFormat: [ , "uint8", "uint8x2", "uint8x4", "sint8", "sint8x2", "sint8x4", "unorm8", "unorm8x2", "unorm8x4", "snorm8", "snorm8x2", "snorm8x4", "uint16", "uint16x2", "uint16x4", "sint16", "sint16x2", "sint16x4", "unorm16", "unorm16x2", "unorm16x4", "snorm16", "snorm16x2", "snorm16x4", "float16", "float16x2", "float16x4", "float32", "float32x2", "float32x3", "float32x4", "uint32", "uint32x2", "uint32x3", "uint32x4", "sint32", "sint32x2", "sint32x3", "sint32x4", "unorm10-10-10-2", "unorm8x4-bgra", "snorm10-10-10-2" ],
|
|
5844
5933
|
VertexStepMode: [ , "vertex", "instance" ],
|
|
5845
|
-
WGSLLanguageFeatureName: [ , "readonly_and_readwrite_storage_textures", "packed_4x8_integer_dot_product", "unrestricted_pointer_parameters", "pointer_composite_access", "uniform_buffer_standard_layout", "subgroup_id", "texture_and_sampler_let", "subgroup_uniformity", "texture_formats_tier1", "linear_indexing", "immediate_address_space", "buffer_view" ]
|
|
5934
|
+
WGSLLanguageFeatureName: [ , "readonly_and_readwrite_storage_textures", "packed_4x8_integer_dot_product", "unrestricted_pointer_parameters", "pointer_composite_access", "uniform_buffer_standard_layout", "subgroup_id", "texture_and_sampler_let", "subgroup_uniformity", "texture_formats_tier1", "linear_indexing", "immediate_address_space", "buffer_view", "swizzle_assignment", "fragment_depth" ]
|
|
5846
5935
|
};
|
|
5847
5936
|
|
|
5848
5937
|
var _emscripten_webgpu_get_device = () => {
|
|
@@ -6075,7 +6164,17 @@ function _fd_close(fd) {
|
|
|
6075
6164
|
var ptr = HEAPU32[((iov) >> 2)];
|
|
6076
6165
|
var len = HEAPU32[(((iov) + (4)) >> 2)];
|
|
6077
6166
|
iov += 8;
|
|
6078
|
-
|
|
6167
|
+
try {
|
|
6168
|
+
var curr = FS.read(stream, HEAP8, ptr, len, offset);
|
|
6169
|
+
} catch (e) {
|
|
6170
|
+
// On a non-blocking stream a subsequent read may would-block after we
|
|
6171
|
+
// already gathered data. POSIX readv is a single gather-read: return
|
|
6172
|
+
// what we have rather than failing the whole call.
|
|
6173
|
+
if (ret > 0 && e instanceof FS.ErrnoError && (e.errno == 6 || e.errno == 6)) {
|
|
6174
|
+
break;
|
|
6175
|
+
}
|
|
6176
|
+
throw e;
|
|
6177
|
+
}
|
|
6079
6178
|
if (curr < 0) return -1;
|
|
6080
6179
|
ret += curr;
|
|
6081
6180
|
if (curr < len) break;
|
|
@@ -6117,23 +6216,27 @@ function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
|
|
|
6117
6216
|
}
|
|
6118
6217
|
|
|
6119
6218
|
/** @param {number=} offset */ var doWritev = (stream, iov, iovcnt, offset) => {
|
|
6120
|
-
|
|
6121
|
-
|
|
6219
|
+
// Gather all iovecs into one contiguous buffer and issue a single
|
|
6220
|
+
// FS.write, matching POSIX writev's single gather-write semantics (as
|
|
6221
|
+
// __syscall_sendmsg already does). Per-iovec writes fragment a stream
|
|
6222
|
+
// socket send into multiple segments, breaking stream byte semantics.
|
|
6223
|
+
if (iovcnt == 1) {
|
|
6224
|
+
// Single iovec: write directly from HEAP8, no gather buffer needed.
|
|
6225
|
+
return FS.write(stream, HEAP8, HEAPU32[((iov) >> 2)], HEAPU32[(((iov) + (4)) >> 2)], offset);
|
|
6226
|
+
}
|
|
6227
|
+
var total = 0;
|
|
6228
|
+
for (var i = 0, p = iov; i < iovcnt; i++, p += 8) {
|
|
6229
|
+
total += HEAPU32[(((p) + (4)) >> 2)];
|
|
6230
|
+
}
|
|
6231
|
+
var view = new Uint8Array(total);
|
|
6232
|
+
var voff = 0;
|
|
6233
|
+
for (var i = 0; i < iovcnt; i++, iov += 8) {
|
|
6122
6234
|
var ptr = HEAPU32[((iov) >> 2)];
|
|
6123
6235
|
var len = HEAPU32[(((iov) + (4)) >> 2)];
|
|
6124
|
-
|
|
6125
|
-
|
|
6126
|
-
if (curr < 0) return -1;
|
|
6127
|
-
ret += curr;
|
|
6128
|
-
if (curr < len) {
|
|
6129
|
-
// No more space to write.
|
|
6130
|
-
break;
|
|
6131
|
-
}
|
|
6132
|
-
if (typeof offset != "undefined") {
|
|
6133
|
-
offset += curr;
|
|
6134
|
-
}
|
|
6236
|
+
view.set(HEAPU8.subarray(ptr, ptr + len), voff);
|
|
6237
|
+
voff += len;
|
|
6135
6238
|
}
|
|
6136
|
-
return
|
|
6239
|
+
return FS.write(stream, view, 0, total, offset);
|
|
6137
6240
|
};
|
|
6138
6241
|
|
|
6139
6242
|
function _fd_write(fd, iov, iovcnt, pnum) {
|
|
@@ -8017,18 +8120,19 @@ for (/**@suppress{duplicate}*/ var i = 0; i <= 288; ++i) {
|
|
|
8017
8120
|
// but before the wasm module is created.
|
|
8018
8121
|
{
|
|
8019
8122
|
// Begin ATMODULES hooks
|
|
8020
|
-
if (Module["preloadPlugins"]) preloadPlugins = Module["preloadPlugins"];
|
|
8021
8123
|
if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"];
|
|
8022
8124
|
if (Module["print"]) out = Module["print"];
|
|
8023
8125
|
if (Module["printErr"]) err = Module["printErr"];
|
|
8024
|
-
if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
|
|
8025
8126
|
// End ATMODULES hooks
|
|
8026
8127
|
if (Module["arguments"]) programArgs = Module["arguments"];
|
|
8027
8128
|
if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
|
|
8028
|
-
|
|
8029
|
-
|
|
8030
|
-
|
|
8031
|
-
|
|
8129
|
+
var preInit = Module["preInit"];
|
|
8130
|
+
if (preInit) {
|
|
8131
|
+
if (typeof preInit == "function") Module["preInit"] = preInit = [ preInit ];
|
|
8132
|
+
// Written as a loop so that preInit functions that themselves add more
|
|
8133
|
+
// preInit functions. Is this actually needed?
|
|
8134
|
+
while (preInit.length > 0) {
|
|
8135
|
+
preInit.shift()();
|
|
8032
8136
|
}
|
|
8033
8137
|
}
|
|
8034
8138
|
}
|
|
@@ -8059,12 +8163,12 @@ Module["FS_createLazyFile"] = FS_createLazyFile;
|
|
|
8059
8163
|
// End JS library exports
|
|
8060
8164
|
// end include: postlibrary.js
|
|
8061
8165
|
var ASM_CONSTS = {
|
|
8062
|
-
|
|
8166
|
+
1513412: $0 => {
|
|
8063
8167
|
const canvas = Emval.toValue($0);
|
|
8064
8168
|
const context = canvas.getContext("webgpu");
|
|
8065
8169
|
return WebGPU.importJsTexture(context.getCurrentTexture());
|
|
8066
8170
|
},
|
|
8067
|
-
|
|
8171
|
+
1513555: ($0, $1, $2, $3, $4) => {
|
|
8068
8172
|
const drawable = Emval.toValue($0);
|
|
8069
8173
|
const device = WebGPU.getJsObject($1);
|
|
8070
8174
|
const texture = WebGPU.getJsObject($2);
|
|
@@ -8076,7 +8180,7 @@ var ASM_CONSTS = {
|
|
|
8076
8180
|
texture
|
|
8077
8181
|
}, [ width, height ]);
|
|
8078
8182
|
},
|
|
8079
|
-
|
|
8183
|
+
1513814: ($0, $1, $2, $3) => {
|
|
8080
8184
|
const sourceExtTex = Emval.toValue($0);
|
|
8081
8185
|
const device = WebGPU.getJsObject($1);
|
|
8082
8186
|
const sampler = WebGPU.getJsObject($2);
|
|
@@ -8093,29 +8197,29 @@ var ASM_CONSTS = {
|
|
|
8093
8197
|
});
|
|
8094
8198
|
return WebGPU.importJsBindGroup(bindGroup);
|
|
8095
8199
|
},
|
|
8096
|
-
|
|
8200
|
+
1514184: ($0, $1) => {
|
|
8097
8201
|
const input = Emval.toValue($0);
|
|
8098
8202
|
const output = Emval.toValue($1);
|
|
8099
8203
|
const ctx = output.getContext("2d");
|
|
8100
8204
|
ctx.drawImage(input, 0, 0, output.width, output.height);
|
|
8101
8205
|
},
|
|
8102
|
-
|
|
8206
|
+
1514349: ($0, $1) => {
|
|
8103
8207
|
const inputArray = Emval.toValue($0);
|
|
8104
8208
|
const output = Emval.toValue($1);
|
|
8105
8209
|
const ctx = output.getContext("2d");
|
|
8106
8210
|
const image_data = new ImageData(inputArray, output.width, output.height);
|
|
8107
8211
|
ctx.putImageData(image_data, 0, 0);
|
|
8108
8212
|
},
|
|
8109
|
-
|
|
8213
|
+
1514573: ($0, $1) => {
|
|
8110
8214
|
const input = Emval.toValue($0);
|
|
8111
8215
|
const outputArray = Emval.toValue($1);
|
|
8112
8216
|
const ctx = input.getContext("2d");
|
|
8113
8217
|
const data = ctx.getImageData(0, 0, input.width, input.height);
|
|
8114
8218
|
outputArray.set(data.data);
|
|
8115
8219
|
},
|
|
8116
|
-
|
|
8117
|
-
|
|
8118
|
-
|
|
8220
|
+
1514777: () => (typeof HTMLCanvasElement !== "undefined"),
|
|
8221
|
+
1514832: () => !!Module["preinitializedWebGPUDevice"],
|
|
8222
|
+
1514883: () => {
|
|
8119
8223
|
specialHTMLTargets["#canvas"] = Module.canvas;
|
|
8120
8224
|
}
|
|
8121
8225
|
};
|
|
@@ -8375,7 +8479,7 @@ function JsWrapErrorListenerInternal(code, message) {
|
|
|
8375
8479
|
}
|
|
8376
8480
|
|
|
8377
8481
|
// Imports from the Wasm binary.
|
|
8378
|
-
var _free, _malloc, _interactive_segmenter_create, _interactive_segmenter_set_image, _interactive_segmenter_segment, _interactive_segmenter_close, _wgpuDeviceAddRef, _addBoundTextureAsImageToStream, _attachImageListener, _attachImageVectorListener, _mediapipeLoggerGetEncodedApiKey, _registerModelResourcesGraphService, _bindTextureToStream, _addBoundTextureToStream, _addDoubleToInputStream, _addFloatToInputStream, _addBoolToInputStream, _addIntToInputStream, _addUintToInputStream, _addStringToInputStream, _addRawDataSpanToInputStream, _allocateBoolVector, _allocateFloatVector, _allocateDoubleVector, _allocateIntVector, _allocateUintVector, _allocateStringVector, _addBoolVectorEntry, _addFloatVectorEntry, _addDoubleVectorEntry, _addIntVectorEntry, _addUintVectorEntry, _addStringVectorEntry, _addBoolVectorToInputStream, _addFloatVectorToInputStream, _addDoubleVectorToInputStream, _addIntVectorToInputStream, _addUintVectorToInputStream, _addStringVectorToInputStream, _addFlatHashMapToInputStream, _addProtoToInputStream, _addEmptyPacketToInputStream, _addBoolToInputSidePacket, _addDoubleToInputSidePacket, _addFloatToInputSidePacket, _addIntToInputSidePacket, _addUintToInputSidePacket, _addStringToInputSidePacket, _addRawDataSpanToInputSidePacket, _addProtoToInputSidePacket, _addBoolVectorToInputSidePacket, _addDoubleVectorToInputSidePacket, _addFloatVectorToInputSidePacket, _addIntVectorToInputSidePacket, _addUintVectorToInputSidePacket, _addStringVectorToInputSidePacket, _attachBoolListener, _attachBoolVectorListener, _attachDoubleListener, _attachDoubleVectorListener, _attachFloatListener, _attachFloatVectorListener, _attachIntListener, _attachIntVectorListener, _attachUintListener, _attachUintVectorListener, _attachStringListener, _attachStringVectorListener, _attachProtoListener, _attachProtoVectorListener, _getGraphConfig, ___getTypeName, _emwgpuCreateBindGroup, _emwgpuCreateBindGroupLayout, _emwgpuCreateCommandBuffer, _emwgpuCreateCommandEncoder, _emwgpuCreateComputePassEncoder, _emwgpuCreateComputePipeline, _emwgpuCreateExternalTexture, _emwgpuCreatePipelineLayout, _emwgpuCreateQuerySet, _emwgpuCreateRenderBundle, _emwgpuCreateRenderBundleEncoder, _emwgpuCreateRenderPassEncoder, _emwgpuCreateRenderPipeline, _emwgpuCreateSampler, _emwgpuCreateSurface, _emwgpuCreateTexture, _emwgpuCreateTextureView, _emwgpuCreateAdapter, _emwgpuImportBuffer, _emwgpuCreateDevice, _emwgpuCreateQueue, _emwgpuCreateShaderModule, _emwgpuOnCreateComputePipelineCompleted, _emwgpuOnCreateRenderPipelineCompleted, _clearSubgraphs, _pushBinarySubgraph, _pushTextSubgraph, _changeBinaryGraph, _changeTextGraph, _processGl, _process, _bindTextureToCanvas, _requestShaderRefreshOnGraphChange, _waitUntilIdle, _closeGraph, _setAutoRenderToScreen, _emscripten_builtin_memalign, _memalign, __emscripten_tempret_set, __emscripten_stack_restore, __emscripten_stack_alloc, _emscripten_stack_get_current, dynCall_ji, dynCall_jii, dynCall_iiiijij, dynCall_vij, dynCall_viiji, dynCall_viji, dynCall_iiiji,
|
|
8482
|
+
var _free, _malloc, _interactive_segmenter_create, _interactive_segmenter_set_image, _interactive_segmenter_segment, _interactive_segmenter_close, _wgpuDeviceAddRef, _addBoundTextureAsImageToStream, _attachImageListener, _attachImageVectorListener, _mediapipeLoggerGetEncodedApiKey, _registerModelResourcesGraphService, _bindTextureToStream, _addBoundTextureToStream, _addDoubleToInputStream, _addFloatToInputStream, _addBoolToInputStream, _addIntToInputStream, _addUintToInputStream, _addStringToInputStream, _addRawDataSpanToInputStream, _allocateBoolVector, _allocateFloatVector, _allocateDoubleVector, _allocateIntVector, _allocateUintVector, _allocateStringVector, _addBoolVectorEntry, _addFloatVectorEntry, _addDoubleVectorEntry, _addIntVectorEntry, _addUintVectorEntry, _addStringVectorEntry, _addBoolVectorToInputStream, _addFloatVectorToInputStream, _addDoubleVectorToInputStream, _addIntVectorToInputStream, _addUintVectorToInputStream, _addStringVectorToInputStream, _addFlatHashMapToInputStream, _addProtoToInputStream, _addEmptyPacketToInputStream, _addBoolToInputSidePacket, _addDoubleToInputSidePacket, _addFloatToInputSidePacket, _addIntToInputSidePacket, _addUintToInputSidePacket, _addStringToInputSidePacket, _addRawDataSpanToInputSidePacket, _addProtoToInputSidePacket, _addBoolVectorToInputSidePacket, _addDoubleVectorToInputSidePacket, _addFloatVectorToInputSidePacket, _addIntVectorToInputSidePacket, _addUintVectorToInputSidePacket, _addStringVectorToInputSidePacket, _attachBoolListener, _attachBoolVectorListener, _attachDoubleListener, _attachDoubleVectorListener, _attachFloatListener, _attachFloatVectorListener, _attachIntListener, _attachIntVectorListener, _attachUintListener, _attachUintVectorListener, _attachStringListener, _attachStringVectorListener, _attachProtoListener, _attachProtoVectorListener, _getGraphConfig, ___getTypeName, _emwgpuCreateBindGroup, _emwgpuCreateBindGroupLayout, _emwgpuCreateCommandBuffer, _emwgpuCreateCommandEncoder, _emwgpuCreateComputePassEncoder, _emwgpuCreateComputePipeline, _emwgpuCreateExternalTexture, _emwgpuCreatePipelineLayout, _emwgpuCreateQuerySet, _emwgpuCreateRenderBundle, _emwgpuCreateRenderBundleEncoder, _emwgpuCreateRenderPassEncoder, _emwgpuCreateRenderPipeline, _emwgpuCreateSampler, _emwgpuCreateSurface, _emwgpuCreateTexture, _emwgpuCreateTextureView, _emwgpuCreateAdapter, _emwgpuImportBuffer, _emwgpuCreateDevice, _emwgpuCreateQueue, _emwgpuCreateShaderModule, _emwgpuOnCreateComputePipelineCompleted, _emwgpuOnCreateRenderPipelineCompleted, _clearSubgraphs, _pushBinarySubgraph, _pushTextSubgraph, _changeBinaryGraph, _changeTextGraph, _processGl, _process, _bindTextureToCanvas, _requestShaderRefreshOnGraphChange, _waitUntilIdle, _closeGraph, _setAutoRenderToScreen, _emscripten_builtin_memalign, _memalign, __emscripten_tempret_set, __emscripten_stack_restore, __emscripten_stack_alloc, _emscripten_stack_get_current, dynCall_ji, dynCall_jii, dynCall_iiiijij, dynCall_vij, dynCall_viiji, dynCall_viji, dynCall_iiiji, dynCall_jjj, dynCall_iiiijj, dynCall_viijj, dynCall_viiijjj, dynCall_viijii, dynCall_vijjj, dynCall_vj, dynCall_viij, dynCall_jiji, dynCall_iiiiij, dynCall_iiiiijj, dynCall_iiiiiijj, memory, _kVersionStampBuildChangelistStr, _kVersionStampCitcSnapshotStr, _kVersionStampCitcWorkspaceIdStr, _kVersionStampSourceUriStr, _kVersionStampBuildClientStr, _kVersionStampBuildClientMintStatusStr, _kVersionStampBuildCompilerStr, _kVersionStampBuildDateTimePstStr, _kVersionStampBuildDepotPathStr, _kVersionStampBuildIdStr, _kVersionStampBuildInfoStr, _kVersionStampBuildLabelStr, _kVersionStampBuildTargetStr, _kVersionStampBuildTimestampStr, _kVersionStampBuildToolStr, _kVersionStampG3BuildTargetStr, _kVersionStampVerifiableStr, _kVersionStampBuildFdoTypeStr, _kVersionStampBuildBaselineChangelistStr, _kVersionStampBuildLtoTypeStr, _kVersionStampBuildPropellerTypeStr, _kVersionStampBuildPghoTypeStr, _kVersionStampBuildFdoProfileChangelistStr, _kVersionStampBuildMemprofProfileChangelistStr, _kVersionStampBuildUsernameStr, _kVersionStampBuildHostnameStr, _kVersionStampBuildDirectoryStr, _kVersionStampBuildChangelistInt, _kVersionStampCitcSnapshotInt, _kVersionStampBuildClientMintStatusInt, _kVersionStampBuildTimestampInt, _kVersionStampVerifiableInt, _kVersionStampBuildCoverageEnabledInt, _kVersionStampBuildBaselineChangelistInt, _kVersionStampPrecookedTimestampStr, _kVersionStampPrecookedClientInfoStr, __indirect_function_table, _kVersionStampBuildHasHardeningProtobuf, wasmMemory, wasmTable;
|
|
8379
8483
|
|
|
8380
8484
|
function assignWasmExports(wasmExports) {
|
|
8381
8485
|
_free = Module["_free"] = wasmExports["Wd"];
|
|
@@ -8499,7 +8603,6 @@ function assignWasmExports(wasmExports) {
|
|
|
8499
8603
|
dynCall_viiji = wasmExports["dynCall_viiji"];
|
|
8500
8604
|
dynCall_viji = wasmExports["dynCall_viji"];
|
|
8501
8605
|
dynCall_iiiji = wasmExports["dynCall_iiiji"];
|
|
8502
|
-
dynCall_ijj = wasmExports["dynCall_ijj"];
|
|
8503
8606
|
dynCall_jjj = wasmExports["dynCall_jjj"];
|
|
8504
8607
|
dynCall_iiiijj = wasmExports["dynCall_iiiijj"];
|
|
8505
8608
|
dynCall_viijj = wasmExports["dynCall_viijj"];
|
|
@@ -8604,7 +8707,7 @@ var wasmImports = {
|
|
|
8604
8707
|
/** @export */ wc: __embind_register_bool,
|
|
8605
8708
|
/** @export */ vc: __embind_register_emval,
|
|
8606
8709
|
/** @export */ ib: __embind_register_float,
|
|
8607
|
-
/** @export */
|
|
8710
|
+
/** @export */ H: __embind_register_integer,
|
|
8608
8711
|
/** @export */ q: __embind_register_memory_view,
|
|
8609
8712
|
/** @export */ uc: __embind_register_std_string,
|
|
8610
8713
|
/** @export */ Ma: __embind_register_std_wstring,
|
|
@@ -8673,8 +8776,8 @@ var wasmImports = {
|
|
|
8673
8776
|
/** @export */ bb: _glBlendEquation,
|
|
8674
8777
|
/** @export */ _b: _glBlendFunc,
|
|
8675
8778
|
/** @export */ j: _glBufferData,
|
|
8676
|
-
/** @export */
|
|
8677
|
-
/** @export */
|
|
8779
|
+
/** @export */ O: _glClear,
|
|
8780
|
+
/** @export */ N: _glClearColor,
|
|
8678
8781
|
/** @export */ ea: _glClientWaitSync,
|
|
8679
8782
|
/** @export */ ha: _glColorMask,
|
|
8680
8783
|
/** @export */ ab: _glCompileShader,
|
|
@@ -8696,7 +8799,7 @@ var wasmImports = {
|
|
|
8696
8799
|
/** @export */ l: _glEnableVertexAttribArray,
|
|
8697
8800
|
/** @export */ Ya: _glFenceSync,
|
|
8698
8801
|
/** @export */ qa: _glFinish,
|
|
8699
|
-
/** @export */
|
|
8802
|
+
/** @export */ x: _glFlush,
|
|
8700
8803
|
/** @export */ C: _glFramebufferTexture2D,
|
|
8701
8804
|
/** @export */ Xa: _glFramebufferTextureLayer,
|
|
8702
8805
|
/** @export */ r: _glGenBuffers,
|
|
@@ -8706,11 +8809,11 @@ var wasmImports = {
|
|
|
8706
8809
|
/** @export */ Wa: _glGetAttribLocation,
|
|
8707
8810
|
/** @export */ fa: _glGetError,
|
|
8708
8811
|
/** @export */ Yb: _glGetFloatv,
|
|
8709
|
-
/** @export */
|
|
8812
|
+
/** @export */ w: _glGetIntegerv,
|
|
8710
8813
|
/** @export */ Xb: _glGetProgramiv,
|
|
8711
8814
|
/** @export */ Wb: _glGetShaderInfoLog,
|
|
8712
8815
|
/** @export */ Vb: _glGetShaderiv,
|
|
8713
|
-
/** @export */
|
|
8816
|
+
/** @export */ M: _glGetString,
|
|
8714
8817
|
/** @export */ Ub: _glGetUniformBlockIndex,
|
|
8715
8818
|
/** @export */ d: _glGetUniformLocation,
|
|
8716
8819
|
/** @export */ Tb: _glLineWidth,
|
|
@@ -8726,7 +8829,7 @@ var wasmImports = {
|
|
|
8726
8829
|
/** @export */ Sb: _glTexStorage3D,
|
|
8727
8830
|
/** @export */ X: _glTexSubImage2D,
|
|
8728
8831
|
/** @export */ Rb: _glTexSubImage3D,
|
|
8729
|
-
/** @export */
|
|
8832
|
+
/** @export */ L: _glUniform1f,
|
|
8730
8833
|
/** @export */ la: _glUniform1fv,
|
|
8731
8834
|
/** @export */ e: _glUniform1i,
|
|
8732
8835
|
/** @export */ W: _glUniform2f,
|
|
@@ -8754,7 +8857,7 @@ var wasmImports = {
|
|
|
8754
8857
|
/** @export */ vb: _wgpuCommandEncoderCopyBufferToTexture,
|
|
8755
8858
|
/** @export */ ub: _wgpuCommandEncoderCopyTextureToBuffer,
|
|
8756
8859
|
/** @export */ tb: _wgpuCommandEncoderCopyTextureToTexture,
|
|
8757
|
-
/** @export */
|
|
8860
|
+
/** @export */ K: _wgpuCommandEncoderFinish,
|
|
8758
8861
|
/** @export */ Da: _wgpuComputePassEncoderDispatchWorkgroups,
|
|
8759
8862
|
/** @export */ Ca: _wgpuComputePassEncoderEnd,
|
|
8760
8863
|
/** @export */ Ba: _wgpuComputePassEncoderSetBindGroup,
|
|
@@ -8762,13 +8865,13 @@ var wasmImports = {
|
|
|
8762
8865
|
/** @export */ za: _wgpuComputePipelineGetBindGroupLayout,
|
|
8763
8866
|
/** @export */ da: _wgpuDeviceCreateBindGroup,
|
|
8764
8867
|
/** @export */ sb: _wgpuDeviceCreateBindGroupLayout,
|
|
8765
|
-
/** @export */
|
|
8868
|
+
/** @export */ J: _wgpuDeviceCreateCommandEncoder,
|
|
8766
8869
|
/** @export */ rb: _wgpuDeviceCreateComputePipeline,
|
|
8767
8870
|
/** @export */ qb: _wgpuDeviceCreatePipelineLayout,
|
|
8768
8871
|
/** @export */ Ra: _wgpuDeviceCreateRenderPipeline,
|
|
8769
8872
|
/** @export */ T: _wgpuDeviceCreateSampler,
|
|
8770
8873
|
/** @export */ ca: _wgpuDeviceCreateTexture,
|
|
8771
|
-
/** @export */
|
|
8874
|
+
/** @export */ I: _wgpuQueueSubmit,
|
|
8772
8875
|
/** @export */ ka: _wgpuQueueWriteBuffer,
|
|
8773
8876
|
/** @export */ pb: _wgpuQueueWriteTexture,
|
|
8774
8877
|
/** @export */ ya: _wgpuRenderPassEncoderDraw,
|
|
@@ -8784,37 +8887,22 @@ var wasmImports = {
|
|
|
8784
8887
|
// include: postamble.js
|
|
8785
8888
|
// === Auto-generated postamble setup entry stuff ===
|
|
8786
8889
|
async function run() {
|
|
8787
|
-
if (runDependencies > 0) {
|
|
8788
|
-
await new Promise(resolve => dependenciesFulfilled = resolve);
|
|
8789
|
-
}
|
|
8790
8890
|
preRun();
|
|
8791
|
-
|
|
8792
|
-
|
|
8793
|
-
|
|
8794
|
-
|
|
8795
|
-
|
|
8796
|
-
|
|
8797
|
-
//
|
|
8798
|
-
|
|
8799
|
-
|
|
8800
|
-
|
|
8801
|
-
|
|
8802
|
-
|
|
8803
|
-
|
|
8804
|
-
|
|
8805
|
-
|
|
8806
|
-
// Yield the main thread to allow the browser to paint "Running...", then clear
|
|
8807
|
-
// the status text after the synchronous doRun() completes.
|
|
8808
|
-
await new Promise(resolve => {
|
|
8809
|
-
setTimeout(() => {
|
|
8810
|
-
setTimeout(() => Module["setStatus"](""), 1);
|
|
8811
|
-
doRun();
|
|
8812
|
-
resolve();
|
|
8813
|
-
}, 1);
|
|
8814
|
-
});
|
|
8815
|
-
} else {
|
|
8816
|
-
doRun();
|
|
8817
|
-
}
|
|
8891
|
+
if (runDependencies) {
|
|
8892
|
+
await resolveRunDependencies();
|
|
8893
|
+
}
|
|
8894
|
+
var setStatus = Module["setStatus"];
|
|
8895
|
+
if (setStatus) {
|
|
8896
|
+
setStatus("Running...");
|
|
8897
|
+
// Yield to the event loop to allow the browser to paint "Running..."
|
|
8898
|
+
await new Promise(resolve => setTimeout(resolve, 1));
|
|
8899
|
+
// Then we want to clear the status text, but only after the rest of this function runs.
|
|
8900
|
+
setTimeout(setStatus, 1, "");
|
|
8901
|
+
}
|
|
8902
|
+
if (ABORT) return;
|
|
8903
|
+
initRuntime();
|
|
8904
|
+
Module["onRuntimeInitialized"]?.();
|
|
8905
|
+
postRun();
|
|
8818
8906
|
}
|
|
8819
8907
|
|
|
8820
8908
|
var wasmExports;
|