@tailwindcss/oxide-wasm32-wasi 4.3.0 → 4.3.2
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/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +320 -98
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +0 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +0 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +0 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +385 -97
- package/node_modules/@emnapi/core/dist/emnapi-core.js +399 -120
- package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +0 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.min.mjs +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.mjs +320 -98
- package/node_modules/@emnapi/core/package.json +2 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.mjs +1 -1
- package/node_modules/@emnapi/runtime/package.json +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +14 -23
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +0 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +0 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +0 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +14 -23
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +14 -23
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +0 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +14 -23
- package/node_modules/@emnapi/wasi-threads/package.json +1 -1
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
- package/node_modules/@tybys/wasm-util/dist/wasm-util.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +22 -2
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +22 -2
- package/node_modules/@tybys/wasm-util/package.json +1 -1
- package/package.json +5 -5
- package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
- package/wasi-worker-browser.mjs +0 -2
|
@@ -216,7 +216,6 @@
|
|
|
216
216
|
function ThreadManager(options) {
|
|
217
217
|
var _a;
|
|
218
218
|
this.unusedWorkers = [];
|
|
219
|
-
this.runningWorkers = [];
|
|
220
219
|
this.pthreads = Object.create(null);
|
|
221
220
|
this.wasmModule = null;
|
|
222
221
|
this.wasmMemory = null;
|
|
@@ -325,7 +324,6 @@
|
|
|
325
324
|
delete this.pthreads[tid];
|
|
326
325
|
}
|
|
327
326
|
this.unusedWorkers.push(worker);
|
|
328
|
-
this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1);
|
|
329
327
|
delete worker.__emnapi_tid;
|
|
330
328
|
if (ENVIRONMENT_IS_NODE) {
|
|
331
329
|
worker.unref();
|
|
@@ -459,10 +457,6 @@
|
|
|
459
457
|
}
|
|
460
458
|
else {
|
|
461
459
|
delete this.pthreads[tid];
|
|
462
|
-
var index = this.runningWorkers.indexOf(worker);
|
|
463
|
-
if (index !== -1) {
|
|
464
|
-
this.runningWorkers.splice(index, 1);
|
|
465
|
-
}
|
|
466
460
|
this.terminateWorker(worker);
|
|
467
461
|
delete worker.__emnapi_tid;
|
|
468
462
|
}
|
|
@@ -483,14 +477,14 @@
|
|
|
483
477
|
};
|
|
484
478
|
};
|
|
485
479
|
ThreadManager.prototype.terminateAllThreads = function () {
|
|
486
|
-
|
|
487
|
-
|
|
480
|
+
var runningWorkers = Object.values(this.pthreads);
|
|
481
|
+
for (var i = 0; i < runningWorkers.length; ++i) {
|
|
482
|
+
this.terminateWorker(runningWorkers[i]);
|
|
488
483
|
}
|
|
489
484
|
for (var i = 0; i < this.unusedWorkers.length; ++i) {
|
|
490
485
|
this.terminateWorker(this.unusedWorkers[i]);
|
|
491
486
|
}
|
|
492
487
|
this.unusedWorkers = [];
|
|
493
|
-
this.runningWorkers = [];
|
|
494
488
|
this.pthreads = Object.create(null);
|
|
495
489
|
this.preparePool();
|
|
496
490
|
};
|
|
@@ -713,10 +707,6 @@
|
|
|
713
707
|
if (typeof waitThreadStart === 'number') {
|
|
714
708
|
var waitResult = Atomics.wait(sab, 0, 0, waitThreadStart);
|
|
715
709
|
if (waitResult === 'timed-out') {
|
|
716
|
-
try {
|
|
717
|
-
PThread.cleanThread(worker, tid, true);
|
|
718
|
-
}
|
|
719
|
-
catch (_) { }
|
|
720
710
|
throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.');
|
|
721
711
|
}
|
|
722
712
|
}
|
|
@@ -725,15 +715,17 @@
|
|
|
725
715
|
}
|
|
726
716
|
var r = Atomics.load(sab, 0);
|
|
727
717
|
if (r > 1) {
|
|
728
|
-
try {
|
|
729
|
-
PThread.cleanThread(worker, tid, true);
|
|
730
|
-
}
|
|
731
|
-
catch (_) { }
|
|
732
718
|
throw deserizeErrorFromBuffer(sab.buffer);
|
|
733
719
|
}
|
|
734
720
|
}
|
|
735
721
|
}
|
|
736
722
|
catch (e) {
|
|
723
|
+
if (worker !== undefined && tid !== undefined) {
|
|
724
|
+
try {
|
|
725
|
+
PThread.cleanThread(worker, tid, true);
|
|
726
|
+
}
|
|
727
|
+
catch (_) { }
|
|
728
|
+
}
|
|
737
729
|
Atomics.store(struct, 0, 1);
|
|
738
730
|
Atomics.store(struct, 1, EAGAIN);
|
|
739
731
|
Atomics.notify(struct, 1);
|
|
@@ -747,7 +739,6 @@
|
|
|
747
739
|
Atomics.store(struct, 0, 0);
|
|
748
740
|
Atomics.store(struct, 1, tid);
|
|
749
741
|
Atomics.notify(struct, 1);
|
|
750
|
-
PThread.runningWorkers.push(worker);
|
|
751
742
|
if (!shouldWait) {
|
|
752
743
|
worker.whenLoaded.catch(function (err) {
|
|
753
744
|
delete worker.whenLoaded;
|
|
@@ -795,14 +786,14 @@
|
|
|
795
786
|
* @returns A proxied WebAssembly instance if in child thread, other wise the original instance
|
|
796
787
|
*/
|
|
797
788
|
WASIThreads.prototype.initialize = function (instance, module, memory) {
|
|
798
|
-
var exports
|
|
799
|
-
memory !== null && memory !== void 0 ? memory : (memory = exports
|
|
789
|
+
var exports = instance.exports;
|
|
790
|
+
memory !== null && memory !== void 0 ? memory : (memory = exports.memory);
|
|
800
791
|
if (this.childThread) {
|
|
801
792
|
instance = createInstanceProxy(instance, memory);
|
|
802
793
|
}
|
|
803
794
|
this.setup(instance, module, memory);
|
|
804
795
|
var wasi = this.wasi;
|
|
805
|
-
if (('_start' in exports
|
|
796
|
+
if (('_start' in exports) && (typeof exports._start === 'function')) {
|
|
806
797
|
if (this.childThread) {
|
|
807
798
|
wasi.start(instance);
|
|
808
799
|
try {
|
|
@@ -828,8 +819,8 @@
|
|
|
828
819
|
* ```
|
|
829
820
|
*/
|
|
830
821
|
WASIThreads.prototype.start = function (instance, module, memory) {
|
|
831
|
-
var exports
|
|
832
|
-
memory !== null && memory !== void 0 ? memory : (memory = exports
|
|
822
|
+
var exports = instance.exports;
|
|
823
|
+
memory !== null && memory !== void 0 ? memory : (memory = exports.memory);
|
|
833
824
|
if (this.childThread) {
|
|
834
825
|
instance = createInstanceProxy(instance, memory);
|
|
835
826
|
}
|
|
@@ -1069,10 +1060,10 @@
|
|
|
1069
1060
|
if (!(instance === null || instance === void 0 ? void 0 : instance.exports))
|
|
1070
1061
|
throw new TypeError('Invalid wasm instance');
|
|
1071
1062
|
wasmInstance = instance;
|
|
1072
|
-
var exports
|
|
1063
|
+
var exports = instance.exports;
|
|
1073
1064
|
var module = options.module;
|
|
1074
|
-
var memory = options.memory || exports
|
|
1075
|
-
var table = options.table || exports
|
|
1065
|
+
var memory = options.memory || exports.memory;
|
|
1066
|
+
var table = options.table || exports.__indirect_function_table;
|
|
1076
1067
|
if (!(module instanceof _WebAssembly$1.Module))
|
|
1077
1068
|
throw new TypeError('Invalid wasm module');
|
|
1078
1069
|
if (!(memory instanceof _WebAssembly$1.Memory))
|
|
@@ -1081,12 +1072,12 @@
|
|
|
1081
1072
|
throw new TypeError('Invalid wasm table');
|
|
1082
1073
|
wasmMemory = memory;
|
|
1083
1074
|
wasmTable = table;
|
|
1084
|
-
if (typeof exports
|
|
1075
|
+
if (typeof exports.malloc !== 'function')
|
|
1085
1076
|
throw new TypeError('malloc is not exported');
|
|
1086
|
-
if (typeof exports
|
|
1077
|
+
if (typeof exports.free !== 'function')
|
|
1087
1078
|
throw new TypeError('free is not exported');
|
|
1088
|
-
_malloc = exports
|
|
1089
|
-
_free = exports
|
|
1079
|
+
_malloc = exports.malloc;
|
|
1080
|
+
_free = exports.free;
|
|
1090
1081
|
if (!napiModule.childThread) {
|
|
1091
1082
|
// main thread only
|
|
1092
1083
|
var moduleApiVersion = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */;
|
|
@@ -1099,11 +1090,11 @@
|
|
|
1099
1090
|
var scope_1 = emnapiCtx.openScope(envObject);
|
|
1100
1091
|
try {
|
|
1101
1092
|
envObject.callIntoModule(function (_envObject) {
|
|
1102
|
-
var exports
|
|
1103
|
-
var exportsHandle = scope_1.add(exports
|
|
1093
|
+
var exports = napiModule.exports;
|
|
1094
|
+
var exportsHandle = scope_1.add(exports);
|
|
1104
1095
|
var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1;
|
|
1105
1096
|
var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id);
|
|
1106
|
-
napiModule.exports = (!napiValue) ? exports
|
|
1097
|
+
napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
|
|
1107
1098
|
});
|
|
1108
1099
|
}
|
|
1109
1100
|
catch (e) {
|
|
@@ -2001,7 +1992,7 @@
|
|
|
2001
1992
|
emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
|
|
2002
1993
|
if (typeof PThread !== 'undefined') {
|
|
2003
1994
|
PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
|
|
2004
|
-
PThread.
|
|
1995
|
+
Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
|
|
2005
1996
|
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
2006
1997
|
PThread.getNewWorker = function () {
|
|
2007
1998
|
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
@@ -2023,7 +2014,7 @@
|
|
|
2023
2014
|
var payload = __emnapi__.payload;
|
|
2024
2015
|
if (type === 'tsfn-send') {
|
|
2025
2016
|
var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
|
|
2026
|
-
if (Atomics.load(new Int32Array(
|
|
2017
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
2027
2018
|
emnapiTSFN.enqueue(payload.tsfn);
|
|
2028
2019
|
}
|
|
2029
2020
|
}
|
|
@@ -2047,13 +2038,28 @@
|
|
|
2047
2038
|
}
|
|
2048
2039
|
return true;
|
|
2049
2040
|
},
|
|
2041
|
+
/**
|
|
2042
|
+
* When another thread grows the shared WebAssembly.Memory, this agent's
|
|
2043
|
+
* cached `wasmMemory.buffer` may still have the old shorter length
|
|
2044
|
+
* (V8 refreshes it lazily). If a pointer derived from shared memory lies
|
|
2045
|
+
* beyond the cached length, `wasmMemory.grow(0)` forces the agent to
|
|
2046
|
+
* observe the current memory size and refreshes the buffer.
|
|
2047
|
+
*/
|
|
2048
|
+
ensureBufferFor: function (end) {
|
|
2049
|
+
var buffer = wasmMemory.buffer;
|
|
2050
|
+
if (end > buffer.byteLength) {
|
|
2051
|
+
wasmMemory.grow(0);
|
|
2052
|
+
buffer = wasmMemory.buffer;
|
|
2053
|
+
}
|
|
2054
|
+
return buffer;
|
|
2055
|
+
},
|
|
2050
2056
|
initQueue: function (func) {
|
|
2051
2057
|
var size = 2 * 4;
|
|
2052
2058
|
var queue = _malloc(size);
|
|
2053
2059
|
if (!queue)
|
|
2054
2060
|
return false;
|
|
2055
2061
|
queue >>>= 0;
|
|
2056
|
-
new Uint8Array(
|
|
2062
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
|
|
2057
2063
|
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
2058
2064
|
return true;
|
|
2059
2065
|
},
|
|
@@ -2160,7 +2166,7 @@
|
|
|
2160
2166
|
var mutex = {
|
|
2161
2167
|
lock: function () {
|
|
2162
2168
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
2163
|
-
var i32a = new Int32Array(
|
|
2169
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
2164
2170
|
if (isBrowserMain) {
|
|
2165
2171
|
while (true) {
|
|
2166
2172
|
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
@@ -2183,7 +2189,7 @@
|
|
|
2183
2189
|
return new Promise<void>(resolve => {
|
|
2184
2190
|
const again = (): void => { fn() }
|
|
2185
2191
|
const fn = (): void => {
|
|
2186
|
-
const i32a = new Int32Array(
|
|
2192
|
+
const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
|
|
2187
2193
|
const oldValue = Atomics.compareExchange(i32a, 0, 0, 10)
|
|
2188
2194
|
if (oldValue === 0) {
|
|
2189
2195
|
resolve()
|
|
@@ -2195,7 +2201,7 @@
|
|
|
2195
2201
|
})
|
|
2196
2202
|
}, */
|
|
2197
2203
|
unlock: function () {
|
|
2198
|
-
var i32a = new Int32Array(
|
|
2204
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
2199
2205
|
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
2200
2206
|
if (oldValue !== 10) {
|
|
2201
2207
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
@@ -2229,14 +2235,14 @@
|
|
|
2229
2235
|
var mutex = emnapiTSFN.getMutex(func);
|
|
2230
2236
|
var cond = {
|
|
2231
2237
|
wait: function () {
|
|
2232
|
-
var i32a = new Int32Array(
|
|
2238
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
2233
2239
|
var value = Atomics.load(i32a, 0);
|
|
2234
2240
|
mutex.unlock();
|
|
2235
2241
|
Atomics.wait(i32a, 0, value);
|
|
2236
2242
|
mutex.lock();
|
|
2237
2243
|
},
|
|
2238
2244
|
/* waitAsync () {
|
|
2239
|
-
const i32a = new Int32Array(
|
|
2245
|
+
const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
|
|
2240
2246
|
const value = Atomics.load(i32a, 0)
|
|
2241
2247
|
mutex.unlock()
|
|
2242
2248
|
const lock = (): Promise<void> => mutex.lockAsync()
|
|
@@ -2247,7 +2253,7 @@
|
|
|
2247
2253
|
}
|
|
2248
2254
|
}, */
|
|
2249
2255
|
signal: function () {
|
|
2250
|
-
var i32a = new Int32Array(
|
|
2256
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
2251
2257
|
Atomics.add(i32a, 0, 1);
|
|
2252
2258
|
Atomics.notify(i32a, 0, 1);
|
|
2253
2259
|
}
|
|
@@ -2260,14 +2266,14 @@
|
|
|
2260
2266
|
addQueueSize: function (func) {
|
|
2261
2267
|
var offset = emnapiTSFN.offset.queue_size;
|
|
2262
2268
|
var arr, index;
|
|
2263
|
-
arr = new Uint32Array(
|
|
2269
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
2264
2270
|
index = (func + offset) >>> 2;
|
|
2265
2271
|
Atomics.add(arr, index, 1);
|
|
2266
2272
|
},
|
|
2267
2273
|
subQueueSize: function (func) {
|
|
2268
2274
|
var offset = emnapiTSFN.offset.queue_size;
|
|
2269
2275
|
var arr, index;
|
|
2270
|
-
arr = new Uint32Array(
|
|
2276
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
2271
2277
|
index = (func + offset) >>> 2;
|
|
2272
2278
|
Atomics.sub(arr, index, 1);
|
|
2273
2279
|
},
|
|
@@ -2277,31 +2283,31 @@
|
|
|
2277
2283
|
addThreadCount: function (func) {
|
|
2278
2284
|
var offset = emnapiTSFN.offset.thread_count;
|
|
2279
2285
|
var arr, index;
|
|
2280
|
-
arr = new Uint32Array(
|
|
2286
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
2281
2287
|
index = (func + offset) >>> 2;
|
|
2282
2288
|
Atomics.add(arr, index, 1);
|
|
2283
2289
|
},
|
|
2284
2290
|
subThreadCount: function (func) {
|
|
2285
2291
|
var offset = emnapiTSFN.offset.thread_count;
|
|
2286
2292
|
var arr, index;
|
|
2287
|
-
arr = new Uint32Array(
|
|
2293
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
2288
2294
|
index = (func + offset) >>> 2;
|
|
2289
2295
|
Atomics.sub(arr, index, 1);
|
|
2290
2296
|
},
|
|
2291
2297
|
getState: function (func) {
|
|
2292
|
-
return Atomics.load(new Int32Array(
|
|
2298
|
+
return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
|
|
2293
2299
|
},
|
|
2294
2300
|
setState: function (func, value) {
|
|
2295
|
-
Atomics.store(new Int32Array(
|
|
2301
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
|
|
2296
2302
|
},
|
|
2297
2303
|
getHandlesClosing: function (func) {
|
|
2298
|
-
return Atomics.load(new Int8Array(
|
|
2304
|
+
return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
|
|
2299
2305
|
},
|
|
2300
2306
|
setHandlesClosing: function (func, value) {
|
|
2301
|
-
Atomics.store(new Int8Array(
|
|
2307
|
+
Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
|
|
2302
2308
|
},
|
|
2303
2309
|
getDispatchState: function (func) {
|
|
2304
|
-
return Atomics.load(new Uint32Array(
|
|
2310
|
+
return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
|
|
2305
2311
|
},
|
|
2306
2312
|
getContext: function (func) {
|
|
2307
2313
|
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
@@ -2331,12 +2337,12 @@
|
|
|
2331
2337
|
var ret;
|
|
2332
2338
|
var arr;
|
|
2333
2339
|
if (unsigned) {
|
|
2334
|
-
arr = new Uint32Array(
|
|
2340
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
2335
2341
|
ret = Atomics.load(arr, offset >>> 2);
|
|
2336
2342
|
return ret;
|
|
2337
2343
|
}
|
|
2338
2344
|
else {
|
|
2339
|
-
arr = new Int32Array(
|
|
2345
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
2340
2346
|
ret = Atomics.load(arr, offset >>> 2);
|
|
2341
2347
|
return ret;
|
|
2342
2348
|
}
|
|
@@ -2344,12 +2350,12 @@
|
|
|
2344
2350
|
storeSizeTypeValue: function (offset, value, unsigned) {
|
|
2345
2351
|
var arr;
|
|
2346
2352
|
if (unsigned) {
|
|
2347
|
-
arr = new Uint32Array(
|
|
2353
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
2348
2354
|
Atomics.store(arr, offset >>> 2, value);
|
|
2349
2355
|
return undefined;
|
|
2350
2356
|
}
|
|
2351
2357
|
else {
|
|
2352
|
-
arr = new Int32Array(
|
|
2358
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
2353
2359
|
Atomics.store(arr, offset >>> 2, value >>> 0);
|
|
2354
2360
|
return undefined;
|
|
2355
2361
|
}
|
|
@@ -2365,18 +2371,20 @@
|
|
|
2365
2371
|
}
|
|
2366
2372
|
var resource = emnapiTSFN.getResource(func);
|
|
2367
2373
|
emnapiCtx.refStore.get(resource).dispose();
|
|
2374
|
+
emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
|
|
2368
2375
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2369
2376
|
HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
|
|
2370
2377
|
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
2371
2378
|
envObject.unref();
|
|
2372
|
-
var
|
|
2373
|
-
var
|
|
2379
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
2380
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
2381
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
2374
2382
|
if (Atomics.load(arr, asyncRefOffset) > 0) {
|
|
2375
2383
|
Atomics.store(arr, asyncRefOffset, 0);
|
|
2376
2384
|
emnapiCtx.decreaseWaitingRequestCounter();
|
|
2377
2385
|
}
|
|
2378
2386
|
if (emnapiNodeBinding) {
|
|
2379
|
-
var view = new DataView(
|
|
2387
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
2380
2388
|
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
2381
2389
|
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
2382
2390
|
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
@@ -2441,7 +2449,7 @@
|
|
|
2441
2449
|
var resource = emnapiTSFN.getResource(func);
|
|
2442
2450
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
2443
2451
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
2444
|
-
var view = new DataView(
|
|
2452
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
2445
2453
|
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
2446
2454
|
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
2447
2455
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
@@ -2479,7 +2487,7 @@
|
|
|
2479
2487
|
return;
|
|
2480
2488
|
}
|
|
2481
2489
|
emnapiTSFN.setHandlesClosing(func, 1);
|
|
2482
|
-
Atomics.store(new Int32Array(
|
|
2490
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
|
|
2483
2491
|
emnapiCtx.feature.setImmediate(function () {
|
|
2484
2492
|
emnapiTSFN.finalize(func);
|
|
2485
2493
|
});
|
|
@@ -2551,7 +2559,7 @@
|
|
|
2551
2559
|
var resource = emnapiTSFN.getResource(func);
|
|
2552
2560
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
2553
2561
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
2554
|
-
var view = new DataView(
|
|
2562
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
2555
2563
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
2556
2564
|
asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
|
|
2557
2565
|
triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
|
|
@@ -2570,8 +2578,9 @@
|
|
|
2570
2578
|
dispatch: function (func) {
|
|
2571
2579
|
var has_more = true;
|
|
2572
2580
|
var iterations_left = 1000;
|
|
2573
|
-
var
|
|
2574
|
-
var
|
|
2581
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
2582
|
+
var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
|
|
2583
|
+
var index = dispatchStateAddress >>> 2;
|
|
2575
2584
|
while (has_more && --iterations_left !== 0) {
|
|
2576
2585
|
Atomics.store(ui32a, index, 1);
|
|
2577
2586
|
has_more = emnapiTSFN.dispatchOne(func);
|
|
@@ -2590,7 +2599,7 @@
|
|
|
2590
2599
|
// `scheduled` prevents queueing the same main-thread drain chain more than
|
|
2591
2600
|
// once while a previous wakeup is still in flight.
|
|
2592
2601
|
var scheduled = func + emnapiTSFN.offset.async_u_fd;
|
|
2593
|
-
var i32a = new Int32Array(
|
|
2602
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
|
|
2594
2603
|
if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
|
|
2595
2604
|
return;
|
|
2596
2605
|
}
|
|
@@ -2634,17 +2643,18 @@
|
|
|
2634
2643
|
});
|
|
2635
2644
|
},
|
|
2636
2645
|
send: function (func) {
|
|
2637
|
-
var
|
|
2646
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
2647
|
+
var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
|
|
2638
2648
|
if ((current_state & 1) === 1) {
|
|
2639
2649
|
return;
|
|
2640
2650
|
}
|
|
2641
2651
|
var pendng = func + emnapiTSFN.offset.async_pending;
|
|
2642
2652
|
// A wakeup is already pending, so this send only needs to leave the queued
|
|
2643
2653
|
// work in the TSFN queue and let the existing drain pick it up.
|
|
2644
|
-
if (Atomics.load(new Int32Array(
|
|
2654
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
2645
2655
|
return;
|
|
2646
2656
|
}
|
|
2647
|
-
if (Atomics.exchange(new Int32Array(
|
|
2657
|
+
if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
|
|
2648
2658
|
if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
|
|
2649
2659
|
// Worker threads only post a wakeup token. Main-thread draining is
|
|
2650
2660
|
// serialized by enqueue() once the message is received.
|
|
@@ -2727,7 +2737,7 @@
|
|
|
2727
2737
|
if (!tsfn)
|
|
2728
2738
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
2729
2739
|
tsfn >>>= 0;
|
|
2730
|
-
new Uint8Array(
|
|
2740
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
2731
2741
|
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */);
|
|
2732
2742
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2733
2743
|
var resource_ = resourceRef.id;
|
|
@@ -2841,8 +2851,9 @@
|
|
|
2841
2851
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2842
2852
|
}
|
|
2843
2853
|
func >>>= 0;
|
|
2844
|
-
var
|
|
2845
|
-
var
|
|
2854
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
2855
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
2856
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
2846
2857
|
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
2847
2858
|
if (currentValue > 0) {
|
|
2848
2859
|
Atomics.store(arr, asyncRefOffset, currentValue - 1);
|
|
@@ -2859,8 +2870,9 @@
|
|
|
2859
2870
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2860
2871
|
}
|
|
2861
2872
|
func >>>= 0;
|
|
2862
|
-
var
|
|
2863
|
-
var
|
|
2873
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
2874
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
2875
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
2864
2876
|
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
2865
2877
|
if (!currentValue) {
|
|
2866
2878
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
@@ -2896,12 +2908,27 @@
|
|
|
2896
2908
|
/* napi_async_complete_callback */ complete: 6 * 4 + 24,
|
|
2897
2909
|
end: 7 * 4 + 24
|
|
2898
2910
|
},
|
|
2911
|
+
/**
|
|
2912
|
+
* When another thread grows the shared WebAssembly.Memory, this agent's
|
|
2913
|
+
* cached `wasmMemory.buffer` may still have the old shorter length
|
|
2914
|
+
* (V8 refreshes it lazily). If a pointer derived from shared memory lies
|
|
2915
|
+
* beyond the cached length, `wasmMemory.grow(0)` forces the agent to
|
|
2916
|
+
* observe the current memory size and refreshes the buffer.
|
|
2917
|
+
*/
|
|
2918
|
+
ensureBufferFor: function (end) {
|
|
2919
|
+
var buffer = wasmMemory.buffer;
|
|
2920
|
+
if (end > buffer.byteLength) {
|
|
2921
|
+
wasmMemory.grow(0);
|
|
2922
|
+
buffer = wasmMemory.buffer;
|
|
2923
|
+
}
|
|
2924
|
+
return buffer;
|
|
2925
|
+
},
|
|
2899
2926
|
init: function () {
|
|
2900
2927
|
emnapiAWMT.pool = [];
|
|
2901
2928
|
emnapiAWMT.workerReady = null;
|
|
2902
2929
|
if (typeof PThread !== 'undefined') {
|
|
2903
2930
|
PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
|
|
2904
|
-
PThread.
|
|
2931
|
+
Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
|
|
2905
2932
|
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
2906
2933
|
PThread.getNewWorker = function () {
|
|
2907
2934
|
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
@@ -2950,7 +2977,7 @@
|
|
|
2950
2977
|
emnapiAWMT.globalAddress >>>= 0;
|
|
2951
2978
|
var size = emnapiAWMT.globalOffset.end;
|
|
2952
2979
|
var addr = emnapiAWMT.globalAddress;
|
|
2953
|
-
new Uint8Array(
|
|
2980
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
|
|
2954
2981
|
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
|
|
2955
2982
|
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
|
|
2956
2983
|
}
|
|
@@ -2991,8 +3018,8 @@
|
|
|
2991
3018
|
return worker.whenLoaded;
|
|
2992
3019
|
}
|
|
2993
3020
|
index >>>= 0;
|
|
2994
|
-
var view = new DataView(wasmMemory.buffer);
|
|
2995
3021
|
var tidOffset = 20;
|
|
3022
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
|
|
2996
3023
|
var tid = view.getInt32(index + tidOffset, true);
|
|
2997
3024
|
worker = PThread.pthreads[tid];
|
|
2998
3025
|
return worker.whenLoaded;
|
|
@@ -3001,22 +3028,27 @@
|
|
|
3001
3028
|
return emnapiAWMT.workerReady;
|
|
3002
3029
|
},
|
|
3003
3030
|
getResource: function (work) {
|
|
3031
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
|
|
3004
3032
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3005
3033
|
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
|
|
3006
3034
|
},
|
|
3007
3035
|
getExecute: function (work) {
|
|
3036
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
|
|
3008
3037
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3009
3038
|
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
|
|
3010
3039
|
},
|
|
3011
3040
|
getComplete: function (work) {
|
|
3041
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
|
|
3012
3042
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3013
3043
|
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
|
|
3014
3044
|
},
|
|
3015
3045
|
getEnv: function (work) {
|
|
3046
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
|
|
3016
3047
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3017
3048
|
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
|
|
3018
3049
|
},
|
|
3019
3050
|
getData: function (work) {
|
|
3051
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
|
|
3020
3052
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3021
3053
|
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
|
|
3022
3054
|
},
|
|
@@ -3025,7 +3057,7 @@
|
|
|
3025
3057
|
var mutex = {
|
|
3026
3058
|
lock: function () {
|
|
3027
3059
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
3028
|
-
var i32a = new Int32Array(
|
|
3060
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
3029
3061
|
if (isBrowserMain) {
|
|
3030
3062
|
while (true) {
|
|
3031
3063
|
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
@@ -3045,7 +3077,7 @@
|
|
|
3045
3077
|
}
|
|
3046
3078
|
},
|
|
3047
3079
|
unlock: function () {
|
|
3048
|
-
var i32a = new Int32Array(
|
|
3080
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
3049
3081
|
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
3050
3082
|
if (oldValue !== 10) {
|
|
3051
3083
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
@@ -3069,14 +3101,14 @@
|
|
|
3069
3101
|
var mutex = emnapiAWMT.getMutex();
|
|
3070
3102
|
var cond = {
|
|
3071
3103
|
wait: function () {
|
|
3072
|
-
var i32a = new Int32Array(
|
|
3104
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
3073
3105
|
var value = Atomics.load(i32a, 0);
|
|
3074
3106
|
mutex.unlock();
|
|
3075
3107
|
Atomics.wait(i32a, 0, value);
|
|
3076
3108
|
mutex.lock();
|
|
3077
3109
|
},
|
|
3078
3110
|
signal: function () {
|
|
3079
|
-
var i32a = new Int32Array(
|
|
3111
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
3080
3112
|
Atomics.add(i32a, 0, 1);
|
|
3081
3113
|
Atomics.notify(i32a, 0, 1);
|
|
3082
3114
|
}
|
|
@@ -3084,11 +3116,14 @@
|
|
|
3084
3116
|
return cond;
|
|
3085
3117
|
},
|
|
3086
3118
|
queueInit: function (q) {
|
|
3119
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
3087
3120
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3088
3121
|
HEAP_DATA_VIEW.setUint32(q, q, true);
|
|
3089
3122
|
HEAP_DATA_VIEW.setUint32(q + 4, q, true);
|
|
3090
3123
|
},
|
|
3091
3124
|
queueInsertTail: function (h, q) {
|
|
3125
|
+
emnapiAWMT.ensureBufferFor(h + 4 + 4);
|
|
3126
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
3092
3127
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3093
3128
|
HEAP_DATA_VIEW.setUint32(q, h, true);
|
|
3094
3129
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -3100,6 +3135,7 @@
|
|
|
3100
3135
|
HEAP_DATA_VIEW.setUint32(h + 4, q, true);
|
|
3101
3136
|
},
|
|
3102
3137
|
queueRemove: function (q) {
|
|
3138
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
3103
3139
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3104
3140
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3105
3141
|
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
@@ -3109,6 +3145,7 @@
|
|
|
3109
3145
|
HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
|
|
3110
3146
|
},
|
|
3111
3147
|
queueEmpty: function (q) {
|
|
3148
|
+
emnapiAWMT.ensureBufferFor(q + 4);
|
|
3112
3149
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3113
3150
|
// eslint-disable-next-line eqeqeq
|
|
3114
3151
|
return q == HEAP_DATA_VIEW.getUint32(q, true);
|
|
@@ -3124,7 +3161,7 @@
|
|
|
3124
3161
|
});
|
|
3125
3162
|
}
|
|
3126
3163
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
3127
|
-
var statusBuffer = new Int32Array(
|
|
3164
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
3128
3165
|
Atomics.store(statusBuffer, 0, 0 /* AsyncWorkStatus.Pending */);
|
|
3129
3166
|
var mutex = emnapiAWMT.getMutex();
|
|
3130
3167
|
var cond = emnapiAWMT.getCond();
|
|
@@ -3137,6 +3174,7 @@
|
|
|
3137
3174
|
mutex.unlock();
|
|
3138
3175
|
throw err;
|
|
3139
3176
|
}
|
|
3177
|
+
emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
|
|
3140
3178
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3141
3179
|
if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
|
|
3142
3180
|
cond.signal();
|
|
@@ -3146,6 +3184,7 @@
|
|
|
3146
3184
|
cancelWork: function (work) {
|
|
3147
3185
|
var cancelled = false;
|
|
3148
3186
|
emnapiAWMT.getMutex().execute(function () {
|
|
3187
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
|
|
3149
3188
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3150
3189
|
cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2 /* AsyncWorkStatus.Completed */;
|
|
3151
3190
|
if (cancelled) {
|
|
@@ -3155,7 +3194,7 @@
|
|
|
3155
3194
|
if (!cancelled) {
|
|
3156
3195
|
return 9 /* napi_status.napi_generic_failure */;
|
|
3157
3196
|
}
|
|
3158
|
-
if (Atomics.compareExchange(new Int32Array(
|
|
3197
|
+
if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0 /* AsyncWorkStatus.Pending */, 1 /* AsyncWorkStatus.Cancelled */) !== 0 /* AsyncWorkStatus.Pending */) {
|
|
3159
3198
|
return 9 /* napi_status.napi_generic_failure */;
|
|
3160
3199
|
}
|
|
3161
3200
|
emnapiCtx.feature.setImmediate(function () {
|
|
@@ -3182,7 +3221,7 @@
|
|
|
3182
3221
|
var resource = emnapiAWMT.getResource(work);
|
|
3183
3222
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
3184
3223
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
3185
|
-
var view = new DataView(
|
|
3224
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
3186
3225
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
3187
3226
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
3188
3227
|
emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
|
|
@@ -3253,7 +3292,7 @@
|
|
|
3253
3292
|
if (!aw)
|
|
3254
3293
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
3255
3294
|
aw >>>= 0;
|
|
3256
|
-
new Uint8Array(
|
|
3295
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
|
|
3257
3296
|
var s = envObject.ensureHandleId(resourceObject);
|
|
3258
3297
|
var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1 /* ReferenceOwnership.kUserland */);
|
|
3259
3298
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -3296,7 +3335,7 @@
|
|
|
3296
3335
|
var resource = emnapiAWMT.getResource(work);
|
|
3297
3336
|
emnapiCtx.refStore.get(resource).dispose();
|
|
3298
3337
|
if (emnapiNodeBinding) {
|
|
3299
|
-
var view = new DataView(
|
|
3338
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
3300
3339
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
3301
3340
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
3302
3341
|
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
@@ -3364,10 +3403,11 @@
|
|
|
3364
3403
|
var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
|
|
3365
3404
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3366
3405
|
for (;;) {
|
|
3406
|
+
emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
|
|
3367
3407
|
while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
|
|
3368
|
-
Atomics.add(new Int32Array(
|
|
3408
|
+
Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
3369
3409
|
cond.wait();
|
|
3370
|
-
Atomics.sub(new Int32Array(
|
|
3410
|
+
Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
3371
3411
|
}
|
|
3372
3412
|
var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
|
|
3373
3413
|
if (q === exitMessageAddr) {
|
|
@@ -3379,7 +3419,7 @@
|
|
|
3379
3419
|
emnapiAWMT.queueRemove(q);
|
|
3380
3420
|
emnapiAWMT.queueInit(q);
|
|
3381
3421
|
mutex.unlock();
|
|
3382
|
-
var statusBuffer = new Int32Array(
|
|
3422
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
3383
3423
|
if (Atomics.load(statusBuffer, 0) === 1 /* AsyncWorkStatus.Cancelled */) {
|
|
3384
3424
|
abort('unreachable');
|
|
3385
3425
|
}
|
|
@@ -3589,6 +3629,75 @@
|
|
|
3589
3629
|
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
3590
3630
|
}
|
|
3591
3631
|
};
|
|
3632
|
+
/**
|
|
3633
|
+
* Metadata layout in wasm shared memory (allocated with _malloc):
|
|
3634
|
+
* offset 0: refcount (int32, 4 bytes - for Atomics)
|
|
3635
|
+
* offset POINTER_SIZE: external_data (pointer)
|
|
3636
|
+
* offset 2*POINTER_SIZE: byte_length (size_t)
|
|
3637
|
+
* offset 3*POINTER_SIZE: finalize_cb (pointer)
|
|
3638
|
+
* offset 4*POINTER_SIZE: finalize_data (pointer)
|
|
3639
|
+
* offset 5*POINTER_SIZE: finalize_hint (pointer)
|
|
3640
|
+
* Total: 6 * POINTER_SIZE bytes
|
|
3641
|
+
*/
|
|
3642
|
+
/**
|
|
3643
|
+
* @__postset
|
|
3644
|
+
* ```
|
|
3645
|
+
* emnapiExternalSAB.init();
|
|
3646
|
+
* ```
|
|
3647
|
+
*/
|
|
3648
|
+
var emnapiExternalSAB = {
|
|
3649
|
+
registry: undefined,
|
|
3650
|
+
handleTable: new WeakMap(),
|
|
3651
|
+
init: function () {
|
|
3652
|
+
emnapiExternalSAB.handleTable = new WeakMap();
|
|
3653
|
+
emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
|
|
3654
|
+
? new FinalizationRegistry(function (metaPtr) {
|
|
3655
|
+
emnapiExternalSAB.release(metaPtr);
|
|
3656
|
+
})
|
|
3657
|
+
: undefined;
|
|
3658
|
+
},
|
|
3659
|
+
allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
|
|
3660
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3661
|
+
var size = 4 * 6;
|
|
3662
|
+
// eslint-disable-next-line prefer-const
|
|
3663
|
+
var metaPtr = _malloc(size);
|
|
3664
|
+
if (!metaPtr)
|
|
3665
|
+
throw new Error('Out of memory');
|
|
3666
|
+
metaPtr >>>= 0;
|
|
3667
|
+
// refcount = 1
|
|
3668
|
+
Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
3669
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3670
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
|
|
3671
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
|
|
3672
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
|
|
3673
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
|
|
3674
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
|
|
3675
|
+
return metaPtr;
|
|
3676
|
+
},
|
|
3677
|
+
readMeta: function (metaPtr) {
|
|
3678
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3679
|
+
var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
|
|
3680
|
+
var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
|
|
3681
|
+
var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
|
|
3682
|
+
var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
|
|
3683
|
+
var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
|
|
3684
|
+
return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
|
|
3685
|
+
},
|
|
3686
|
+
release: function (metaPtr) {
|
|
3687
|
+
var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
3688
|
+
if (oldRefcount === 1) {
|
|
3689
|
+
// refcount reached 0, we are the last holder
|
|
3690
|
+
var info = emnapiExternalSAB.readMeta(metaPtr);
|
|
3691
|
+
var finalize_cb = info.finalize_cb;
|
|
3692
|
+
if (finalize_cb) {
|
|
3693
|
+
var finalize_data = info.finalize_data;
|
|
3694
|
+
var finalize_hint = info.finalize_hint;
|
|
3695
|
+
(wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
|
|
3696
|
+
}
|
|
3697
|
+
_free(metaPtr);
|
|
3698
|
+
}
|
|
3699
|
+
}
|
|
3700
|
+
};
|
|
3592
3701
|
/* eslint-disable @typescript-eslint/indent */
|
|
3593
3702
|
/**
|
|
3594
3703
|
* @__postset
|
|
@@ -5703,16 +5812,122 @@
|
|
|
5703
5812
|
HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
|
|
5704
5813
|
return envObject.clearLastError();
|
|
5705
5814
|
}
|
|
5815
|
+
/**
|
|
5816
|
+
* Get the handle for an external SharedArrayBuffer.
|
|
5817
|
+
* Must be called on the emnapi main thread.
|
|
5818
|
+
* @__sig ippp
|
|
5819
|
+
*/
|
|
5820
|
+
function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
|
|
5821
|
+
if (!env)
|
|
5822
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
5823
|
+
// @ts-expect-error
|
|
5824
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5825
|
+
envObject.checkGCAccess();
|
|
5826
|
+
if (!envObject.tryCatch.isEmpty())
|
|
5827
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5828
|
+
if (!envObject.canCallIntoJs())
|
|
5829
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
5830
|
+
envObject.clearLastError();
|
|
5831
|
+
try {
|
|
5832
|
+
if (!sharedarraybuffer)
|
|
5833
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5834
|
+
if (!handle)
|
|
5835
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5836
|
+
handle >>>= 0;
|
|
5837
|
+
var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
|
|
5838
|
+
if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
|
|
5839
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5840
|
+
}
|
|
5841
|
+
var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
|
|
5842
|
+
if (metaPtr === undefined) {
|
|
5843
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5844
|
+
}
|
|
5845
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5846
|
+
HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
|
|
5847
|
+
return envObject.getReturnStatus();
|
|
5848
|
+
}
|
|
5849
|
+
catch (err) {
|
|
5850
|
+
envObject.tryCatch.setError(err);
|
|
5851
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5852
|
+
}
|
|
5853
|
+
}
|
|
5854
|
+
/**
|
|
5855
|
+
* Acquire a reference to an external SharedArrayBuffer.
|
|
5856
|
+
* Can be called on any thread.
|
|
5857
|
+
* @__sig vp
|
|
5858
|
+
*/
|
|
5859
|
+
function emnapi_acquire_external_sharedarraybuffer(handle) {
|
|
5860
|
+
handle >>>= 0;
|
|
5861
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
5862
|
+
}
|
|
5863
|
+
/**
|
|
5864
|
+
* Release a reference to an external SharedArrayBuffer.
|
|
5865
|
+
* Can be called on any thread.
|
|
5866
|
+
* @__sig vp
|
|
5867
|
+
*/
|
|
5868
|
+
function emnapi_release_external_sharedarraybuffer(handle) {
|
|
5869
|
+
handle >>>= 0;
|
|
5870
|
+
emnapiExternalSAB.release(handle);
|
|
5871
|
+
}
|
|
5872
|
+
/**
|
|
5873
|
+
* Acquire a reference to an external SharedArrayBuffer on the current thread.
|
|
5874
|
+
* Can be called on any thread. Increments refcount and registers in
|
|
5875
|
+
* the current thread's FinalizationRegistry.
|
|
5876
|
+
* Exposed as Module.emnapiAcquireExternalSharedArrayBuffer (emscripten) or
|
|
5877
|
+
* napiModule.emnapi.acquireExternalSharedArrayBuffer (core).
|
|
5878
|
+
*/
|
|
5879
|
+
function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
|
|
5880
|
+
if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
|
|
5881
|
+
throw new TypeError('Expected a SharedArrayBuffer');
|
|
5882
|
+
}
|
|
5883
|
+
if (!emnapiExternalSAB.registry) {
|
|
5884
|
+
throw new Error('FinalizationRegistry is not supported in this environment');
|
|
5885
|
+
}
|
|
5886
|
+
handle >>>= 0;
|
|
5887
|
+
var meta = emnapiExternalSAB.readMeta(handle);
|
|
5888
|
+
// eslint-disable-next-line prefer-const
|
|
5889
|
+
var external_data = meta.external_data;
|
|
5890
|
+
external_data >>>= 0;
|
|
5891
|
+
if (sab == null) {
|
|
5892
|
+
sab = new SharedArrayBuffer(meta.byte_length);
|
|
5893
|
+
new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
|
|
5894
|
+
}
|
|
5895
|
+
else {
|
|
5896
|
+
if (emnapiExternalSAB.handleTable.has(sab)) {
|
|
5897
|
+
return sab;
|
|
5898
|
+
}
|
|
5899
|
+
}
|
|
5900
|
+
// Increment refcount atomically
|
|
5901
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
5902
|
+
// Register in emnapiExternalMemory.table for emnapi_sync_memory support
|
|
5903
|
+
if (!emnapiExternalMemory.table.has(sab)) {
|
|
5904
|
+
if (external_data) {
|
|
5905
|
+
emnapiExternalMemory.table.set(sab, {
|
|
5906
|
+
address: external_data,
|
|
5907
|
+
ownership: 1 /* ReferenceOwnership.kUserland */,
|
|
5908
|
+
runtimeAllocated: 0
|
|
5909
|
+
});
|
|
5910
|
+
}
|
|
5911
|
+
}
|
|
5912
|
+
// Register in handleTable and FinalizationRegistry for this thread
|
|
5913
|
+
emnapiExternalSAB.handleTable.set(sab, handle);
|
|
5914
|
+
emnapiExternalSAB.registry.register(sab, handle);
|
|
5915
|
+
return sab;
|
|
5916
|
+
}
|
|
5706
5917
|
var emnapiMod = /*#__PURE__*/ Object.freeze({
|
|
5707
5918
|
__proto__: null,
|
|
5919
|
+
$emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
|
|
5708
5920
|
$emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
|
|
5709
5921
|
$emnapiSyncMemory: $emnapiSyncMemory,
|
|
5922
|
+
emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
|
|
5710
5923
|
emnapi_create_memory_view: emnapi_create_memory_view,
|
|
5924
|
+
emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
|
|
5711
5925
|
emnapi_get_memory_address: emnapi_get_memory_address,
|
|
5712
5926
|
emnapi_get_runtime_version: emnapi_get_runtime_version,
|
|
5713
5927
|
emnapi_is_node_binding_available: emnapi_is_node_binding_available,
|
|
5714
5928
|
emnapi_is_support_bigint: emnapi_is_support_bigint,
|
|
5715
5929
|
emnapi_is_support_weakref: emnapi_is_support_weakref,
|
|
5930
|
+
emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
|
|
5716
5931
|
emnapi_sync_memory: emnapi_sync_memory
|
|
5717
5932
|
});
|
|
5718
5933
|
/**
|
|
@@ -5968,6 +6183,65 @@
|
|
|
5968
6183
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5969
6184
|
}
|
|
5970
6185
|
}
|
|
6186
|
+
/**
|
|
6187
|
+
* @__sig ipppppp
|
|
6188
|
+
*/
|
|
6189
|
+
function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
|
|
6190
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6191
|
+
var value;
|
|
6192
|
+
if (!env)
|
|
6193
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
6194
|
+
// @ts-expect-error
|
|
6195
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
6196
|
+
envObject.checkGCAccess();
|
|
6197
|
+
if (!envObject.tryCatch.isEmpty())
|
|
6198
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
6199
|
+
if (!envObject.canCallIntoJs())
|
|
6200
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
6201
|
+
envObject.clearLastError();
|
|
6202
|
+
try {
|
|
6203
|
+
if (!result)
|
|
6204
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6205
|
+
byte_length >>>= 0;
|
|
6206
|
+
external_data >>>= 0;
|
|
6207
|
+
result >>>= 0;
|
|
6208
|
+
byte_length = byte_length >>> 0;
|
|
6209
|
+
if (!external_data) {
|
|
6210
|
+
byte_length = 0;
|
|
6211
|
+
}
|
|
6212
|
+
if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
|
|
6213
|
+
throw new RangeError('Memory out of range');
|
|
6214
|
+
}
|
|
6215
|
+
if (!emnapiExternalSAB.registry && finalize_cb) {
|
|
6216
|
+
throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
|
|
6217
|
+
}
|
|
6218
|
+
var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
|
|
6219
|
+
if (byte_length !== 0) {
|
|
6220
|
+
var u8arr = new Uint8Array(sharedArrayBuffer);
|
|
6221
|
+
u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
|
|
6222
|
+
emnapiExternalMemory.table.set(sharedArrayBuffer, {
|
|
6223
|
+
address: external_data,
|
|
6224
|
+
ownership: 1 /* ReferenceOwnership.kUserland */,
|
|
6225
|
+
runtimeAllocated: 0
|
|
6226
|
+
});
|
|
6227
|
+
}
|
|
6228
|
+
value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
|
|
6229
|
+
if (finalize_cb) {
|
|
6230
|
+
finalize_cb >>>= 0;
|
|
6231
|
+
finalize_hint >>>= 0;
|
|
6232
|
+
var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
|
|
6233
|
+
emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
|
|
6234
|
+
emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
|
|
6235
|
+
}
|
|
6236
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6237
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6238
|
+
return envObject.getReturnStatus();
|
|
6239
|
+
}
|
|
6240
|
+
catch (err) {
|
|
6241
|
+
envObject.tryCatch.setError(err);
|
|
6242
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
6243
|
+
}
|
|
6244
|
+
}
|
|
5971
6245
|
/**
|
|
5972
6246
|
* @__sig ipp
|
|
5973
6247
|
*/
|
|
@@ -6088,9 +6362,6 @@
|
|
|
6088
6362
|
if (!result)
|
|
6089
6363
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6090
6364
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
6091
|
-
if (!handle.isArrayBuffer()) {
|
|
6092
|
-
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6093
|
-
}
|
|
6094
6365
|
var buffer = handle.value;
|
|
6095
6366
|
byte_offset >>>= 0;
|
|
6096
6367
|
length >>>= 0;
|
|
@@ -6131,36 +6402,41 @@
|
|
|
6131
6402
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6132
6403
|
return envObject.getReturnStatus();
|
|
6133
6404
|
};
|
|
6134
|
-
|
|
6135
|
-
|
|
6136
|
-
|
|
6137
|
-
|
|
6138
|
-
|
|
6139
|
-
|
|
6140
|
-
|
|
6141
|
-
|
|
6142
|
-
|
|
6143
|
-
|
|
6144
|
-
|
|
6145
|
-
|
|
6146
|
-
|
|
6147
|
-
|
|
6148
|
-
|
|
6149
|
-
|
|
6150
|
-
|
|
6151
|
-
|
|
6152
|
-
|
|
6153
|
-
|
|
6154
|
-
|
|
6155
|
-
|
|
6156
|
-
|
|
6157
|
-
|
|
6158
|
-
|
|
6405
|
+
if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
|
|
6406
|
+
switch (type) {
|
|
6407
|
+
case 0 /* napi_typedarray_type.napi_int8_array */:
|
|
6408
|
+
return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
|
|
6409
|
+
case 1 /* napi_typedarray_type.napi_uint8_array */:
|
|
6410
|
+
return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
|
|
6411
|
+
case 2 /* napi_typedarray_type.napi_uint8_clamped_array */:
|
|
6412
|
+
return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
|
|
6413
|
+
case 3 /* napi_typedarray_type.napi_int16_array */:
|
|
6414
|
+
return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
|
|
6415
|
+
case 4 /* napi_typedarray_type.napi_uint16_array */:
|
|
6416
|
+
return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
|
|
6417
|
+
case 5 /* napi_typedarray_type.napi_int32_array */:
|
|
6418
|
+
return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
|
|
6419
|
+
case 6 /* napi_typedarray_type.napi_uint32_array */:
|
|
6420
|
+
return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
|
|
6421
|
+
case 7 /* napi_typedarray_type.napi_float32_array */:
|
|
6422
|
+
return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
|
|
6423
|
+
case 8 /* napi_typedarray_type.napi_float64_array */:
|
|
6424
|
+
return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
|
|
6425
|
+
case 9 /* napi_typedarray_type.napi_bigint64_array */:
|
|
6426
|
+
return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
|
|
6427
|
+
case 10 /* napi_typedarray_type.napi_biguint64_array */:
|
|
6428
|
+
return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
|
|
6429
|
+
case 11 /* napi_typedarray_type.napi_float16_array */:
|
|
6430
|
+
if (typeof Float16Array !== 'function') {
|
|
6431
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6432
|
+
}
|
|
6433
|
+
return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
|
|
6434
|
+
default:
|
|
6159
6435
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6160
|
-
|
|
6161
|
-
|
|
6162
|
-
|
|
6163
|
-
|
|
6436
|
+
}
|
|
6437
|
+
}
|
|
6438
|
+
else {
|
|
6439
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6164
6440
|
}
|
|
6165
6441
|
}
|
|
6166
6442
|
catch (err) {
|
|
@@ -6446,6 +6722,7 @@
|
|
|
6446
6722
|
napi_create_symbol: napi_create_symbol,
|
|
6447
6723
|
napi_create_typedarray: napi_create_typedarray,
|
|
6448
6724
|
node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
|
|
6725
|
+
node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
|
|
6449
6726
|
node_api_create_object_with_properties: node_api_create_object_with_properties,
|
|
6450
6727
|
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
6451
6728
|
node_api_symbol_for: node_api_symbol_for
|
|
@@ -8866,11 +9143,13 @@
|
|
|
8866
9143
|
});
|
|
8867
9144
|
emnapiAWST.init();
|
|
8868
9145
|
emnapiExternalMemory.init();
|
|
9146
|
+
emnapiExternalSAB.init();
|
|
8869
9147
|
emnapiString.init();
|
|
8870
9148
|
emnapiTSFN.init();
|
|
8871
9149
|
PThread.init();
|
|
8872
9150
|
napiModule.emnapi.syncMemory = $emnapiSyncMemory;
|
|
8873
9151
|
napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
|
|
9152
|
+
napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
|
|
8874
9153
|
function addImports(mod) {
|
|
8875
9154
|
var keys = Object.keys(mod);
|
|
8876
9155
|
for (var i = 0; i < keys.length; ++i) {
|
|
@@ -9212,7 +9491,7 @@
|
|
|
9212
9491
|
// }
|
|
9213
9492
|
// }
|
|
9214
9493
|
|
|
9215
|
-
var version = "1.
|
|
9494
|
+
var version = "1.11.1";
|
|
9216
9495
|
|
|
9217
9496
|
exports.MessageHandler = MessageHandler;
|
|
9218
9497
|
exports.ThreadManager = ThreadManager;
|