@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.bd9cf92 → 0.0.0-insiders.bdcd708
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 +1469 -511
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +61 -5
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +61 -5
- package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +61 -5
- package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1628 -523
- package/node_modules/@emnapi/core/dist/emnapi-core.js +1705 -585
- package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +61 -5
- 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 +1469 -511
- package/node_modules/@emnapi/core/package.json +2 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +44 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +15 -7
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +15 -7
- package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +15 -7
- package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +45 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +12 -6
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +45 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.js +45 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +15 -7
- 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 +44 -14
- package/node_modules/@emnapi/runtime/package.json +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +67 -63
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +59 -2
- 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 +59 -2
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +59 -2
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +67 -63
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +67 -63
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +59 -2
- 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 +67 -63
- package/node_modules/@emnapi/wasi-threads/package.json +1 -1
- package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +299 -0
- package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +22125 -20726
- package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +294 -0
- package/node_modules/@napi-rs/wasm-runtime/package.json +25 -16
- package/node_modules/@napi-rs/wasm-runtime/runtime.cjs +1 -1
- package/node_modules/@napi-rs/wasm-runtime/runtime.js +8 -0
- package/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts +6 -0
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +215 -33
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +215 -33
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
- package/node_modules/@tybys/wasm-util/dist/wasm-util.js +215 -33
- package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js +12 -14
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +61 -19
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs +12 -14
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +61 -19
- package/node_modules/@tybys/wasm-util/package.json +1 -1
- package/node_modules/tslib/package.json +1 -1
- package/node_modules/tslib/tslib.es6.js +10 -1
- package/node_modules/tslib/tslib.es6.mjs +10 -1
- package/node_modules/tslib/tslib.js +42 -33
- package/package.json +7 -7
- package/tailwindcss-oxide.wasi-browser.js +7 -3
- package/tailwindcss-oxide.wasi.cjs +27 -4
- package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
- package/wasi-worker-browser.mjs +2 -0
- package/node_modules/@napi-rs/wasm-runtime/LICENSE +0 -43
- package/node_modules/@napi-rs/wasm-runtime/dist/runtime.js +0 -12285
- package/node_modules/@napi-rs/wasm-runtime/fs-proxy.cjs +0 -209
|
@@ -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;
|
|
@@ -241,6 +240,7 @@
|
|
|
241
240
|
this._beforeLoad = options.beforeLoad;
|
|
242
241
|
}
|
|
243
242
|
this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console);
|
|
243
|
+
this.threadSpawn = options.threadSpawn;
|
|
244
244
|
}
|
|
245
245
|
Object.defineProperty(ThreadManager.prototype, "nextWorkerID", {
|
|
246
246
|
get: function () { return nextWorkerID; },
|
|
@@ -324,7 +324,6 @@
|
|
|
324
324
|
delete this.pthreads[tid];
|
|
325
325
|
}
|
|
326
326
|
this.unusedWorkers.push(worker);
|
|
327
|
-
this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1);
|
|
328
327
|
delete worker.__emnapi_tid;
|
|
329
328
|
if (ENVIRONMENT_IS_NODE) {
|
|
330
329
|
worker.unref();
|
|
@@ -344,12 +343,17 @@
|
|
|
344
343
|
if (worker.__emnapi_tid !== undefined) {
|
|
345
344
|
message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!';
|
|
346
345
|
}
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
346
|
+
if ('message' in e) {
|
|
347
|
+
err(message + ' ' + e.message);
|
|
348
|
+
if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) {
|
|
349
|
+
try {
|
|
350
|
+
_this.terminateAllThreads();
|
|
351
|
+
}
|
|
352
|
+
catch (_) { }
|
|
351
353
|
}
|
|
352
|
-
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
err(message);
|
|
353
357
|
}
|
|
354
358
|
reject(e);
|
|
355
359
|
throw e;
|
|
@@ -373,6 +377,12 @@
|
|
|
373
377
|
_this_1.cleanThread(worker, payload.tid);
|
|
374
378
|
}
|
|
375
379
|
}
|
|
380
|
+
else if (type === 'spawn-thread') {
|
|
381
|
+
_this_1.threadSpawn(payload.startArg, payload.errorOrTid);
|
|
382
|
+
}
|
|
383
|
+
else if (type === 'terminate-all-threads') {
|
|
384
|
+
_this_1.terminateAllThreads();
|
|
385
|
+
}
|
|
376
386
|
}
|
|
377
387
|
};
|
|
378
388
|
worker.onmessage = function (e) {
|
|
@@ -447,10 +457,6 @@
|
|
|
447
457
|
}
|
|
448
458
|
else {
|
|
449
459
|
delete this.pthreads[tid];
|
|
450
|
-
var index = this.runningWorkers.indexOf(worker);
|
|
451
|
-
if (index !== -1) {
|
|
452
|
-
this.runningWorkers.splice(index, 1);
|
|
453
|
-
}
|
|
454
460
|
this.terminateWorker(worker);
|
|
455
461
|
delete worker.__emnapi_tid;
|
|
456
462
|
}
|
|
@@ -471,14 +477,14 @@
|
|
|
471
477
|
};
|
|
472
478
|
};
|
|
473
479
|
ThreadManager.prototype.terminateAllThreads = function () {
|
|
474
|
-
|
|
475
|
-
|
|
480
|
+
var runningWorkers = Object.values(this.pthreads);
|
|
481
|
+
for (var i = 0; i < runningWorkers.length; ++i) {
|
|
482
|
+
this.terminateWorker(runningWorkers[i]);
|
|
476
483
|
}
|
|
477
484
|
for (var i = 0; i < this.unusedWorkers.length; ++i) {
|
|
478
485
|
this.terminateWorker(this.unusedWorkers[i]);
|
|
479
486
|
}
|
|
480
487
|
this.unusedWorkers = [];
|
|
481
|
-
this.runningWorkers = [];
|
|
482
488
|
this.pthreads = Object.create(null);
|
|
483
489
|
this.preparePool();
|
|
484
490
|
};
|
|
@@ -628,18 +634,6 @@
|
|
|
628
634
|
}
|
|
629
635
|
this.postMessage = postMessage;
|
|
630
636
|
var wasm64 = Boolean(options.wasm64);
|
|
631
|
-
var onMessage = function (e) {
|
|
632
|
-
if (e.data.__emnapi__) {
|
|
633
|
-
var type = e.data.__emnapi__.type;
|
|
634
|
-
var payload = e.data.__emnapi__.payload;
|
|
635
|
-
if (type === 'spawn-thread') {
|
|
636
|
-
threadSpawn(payload.startArg, payload.errorOrTid);
|
|
637
|
-
}
|
|
638
|
-
else if (type === 'terminate-all-threads') {
|
|
639
|
-
_this_1.terminateAllThreads();
|
|
640
|
-
}
|
|
641
|
-
}
|
|
642
|
-
};
|
|
643
637
|
var threadSpawn = function (startArg, errorOrTid) {
|
|
644
638
|
var _a;
|
|
645
639
|
var EAGAIN = 6;
|
|
@@ -657,12 +651,12 @@
|
|
|
657
651
|
return 1;
|
|
658
652
|
}
|
|
659
653
|
else {
|
|
660
|
-
return -
|
|
654
|
+
return -EAGAIN;
|
|
661
655
|
}
|
|
662
656
|
}
|
|
663
657
|
if (!isNewABI) {
|
|
664
658
|
var malloc = _this_1.wasmInstance.exports.malloc;
|
|
665
|
-
errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : malloc(8);
|
|
659
|
+
errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : (malloc(8) >>> 0);
|
|
666
660
|
if (!errorOrTid) {
|
|
667
661
|
return -48; /* ENOMEM */
|
|
668
662
|
}
|
|
@@ -700,10 +694,9 @@
|
|
|
700
694
|
if (!worker) {
|
|
701
695
|
throw new Error('failed to get new worker');
|
|
702
696
|
}
|
|
703
|
-
PThread.addMessageEventListener(worker, onMessage);
|
|
704
697
|
tid = PThread.markId(worker);
|
|
705
698
|
if (ENVIRONMENT_IS_NODE) {
|
|
706
|
-
worker.
|
|
699
|
+
worker.unref();
|
|
707
700
|
}
|
|
708
701
|
worker.postMessage(createMessage('start', {
|
|
709
702
|
tid: tid,
|
|
@@ -714,10 +707,6 @@
|
|
|
714
707
|
if (typeof waitThreadStart === 'number') {
|
|
715
708
|
var waitResult = Atomics.wait(sab, 0, 0, waitThreadStart);
|
|
716
709
|
if (waitResult === 'timed-out') {
|
|
717
|
-
try {
|
|
718
|
-
PThread.cleanThread(worker, tid, true);
|
|
719
|
-
}
|
|
720
|
-
catch (_) { }
|
|
721
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.');
|
|
722
711
|
}
|
|
723
712
|
}
|
|
@@ -726,15 +715,17 @@
|
|
|
726
715
|
}
|
|
727
716
|
var r = Atomics.load(sab, 0);
|
|
728
717
|
if (r > 1) {
|
|
729
|
-
try {
|
|
730
|
-
PThread.cleanThread(worker, tid, true);
|
|
731
|
-
}
|
|
732
|
-
catch (_) { }
|
|
733
718
|
throw deserizeErrorFromBuffer(sab.buffer);
|
|
734
719
|
}
|
|
735
720
|
}
|
|
736
721
|
}
|
|
737
722
|
catch (e) {
|
|
723
|
+
if (worker !== undefined && tid !== undefined) {
|
|
724
|
+
try {
|
|
725
|
+
PThread.cleanThread(worker, tid, true);
|
|
726
|
+
}
|
|
727
|
+
catch (_) { }
|
|
728
|
+
}
|
|
738
729
|
Atomics.store(struct, 0, 1);
|
|
739
730
|
Atomics.store(struct, 1, EAGAIN);
|
|
740
731
|
Atomics.notify(struct, 1);
|
|
@@ -743,12 +734,11 @@
|
|
|
743
734
|
return 1;
|
|
744
735
|
}
|
|
745
736
|
free(errorOrTid);
|
|
746
|
-
return -
|
|
737
|
+
return -EAGAIN;
|
|
747
738
|
}
|
|
748
739
|
Atomics.store(struct, 0, 0);
|
|
749
740
|
Atomics.store(struct, 1, tid);
|
|
750
741
|
Atomics.notify(struct, 1);
|
|
751
|
-
PThread.runningWorkers.push(worker);
|
|
752
742
|
if (!shouldWait) {
|
|
753
743
|
worker.whenLoaded.catch(function (err) {
|
|
754
744
|
delete worker.whenLoaded;
|
|
@@ -763,6 +753,9 @@
|
|
|
763
753
|
return tid;
|
|
764
754
|
};
|
|
765
755
|
this.threadSpawn = threadSpawn;
|
|
756
|
+
if (this.PThread) {
|
|
757
|
+
this.PThread.threadSpawn = threadSpawn;
|
|
758
|
+
}
|
|
766
759
|
}
|
|
767
760
|
WASIThreads.prototype.getImportObject = function () {
|
|
768
761
|
return {
|
|
@@ -860,19 +853,21 @@
|
|
|
860
853
|
return proc_exit_1.call(this, code);
|
|
861
854
|
};
|
|
862
855
|
}
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
catch (err) {
|
|
870
|
-
if (isTrapError(err)) {
|
|
871
|
-
_this.terminateAllThreads();
|
|
856
|
+
if (!_this.childThread) {
|
|
857
|
+
var start_1 = wasi.start;
|
|
858
|
+
if (typeof start_1 === 'function') {
|
|
859
|
+
wasi.start = function (instance) {
|
|
860
|
+
try {
|
|
861
|
+
return start_1.call(this, instance);
|
|
872
862
|
}
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
863
|
+
catch (err) {
|
|
864
|
+
if (isTrapError(err)) {
|
|
865
|
+
_this.terminateAllThreads();
|
|
866
|
+
}
|
|
867
|
+
throw err;
|
|
868
|
+
}
|
|
869
|
+
};
|
|
870
|
+
}
|
|
876
871
|
}
|
|
877
872
|
patched.add(wasi);
|
|
878
873
|
}
|
|
@@ -904,6 +899,7 @@
|
|
|
904
899
|
}
|
|
905
900
|
this.postMessage = postMsg;
|
|
906
901
|
this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad;
|
|
902
|
+
this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : function (_type, err) { throw err; };
|
|
907
903
|
this.instance = undefined;
|
|
908
904
|
// this.module = undefined
|
|
909
905
|
this.messagesBeforeLoad = [];
|
|
@@ -922,13 +918,18 @@
|
|
|
922
918
|
if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
|
|
923
919
|
var type = e.data.__emnapi__.type;
|
|
924
920
|
var payload_1 = e.data.__emnapi__.payload;
|
|
925
|
-
|
|
926
|
-
|
|
921
|
+
try {
|
|
922
|
+
if (type === 'load') {
|
|
923
|
+
this._load(payload_1);
|
|
924
|
+
}
|
|
925
|
+
else if (type === 'start') {
|
|
926
|
+
this.handleAfterLoad(e, function () {
|
|
927
|
+
_this._start(payload_1);
|
|
928
|
+
});
|
|
929
|
+
}
|
|
927
930
|
}
|
|
928
|
-
|
|
929
|
-
this.
|
|
930
|
-
_this._start(payload_1);
|
|
931
|
-
});
|
|
931
|
+
catch (err) {
|
|
932
|
+
this.onError(err, type);
|
|
932
933
|
}
|
|
933
934
|
}
|
|
934
935
|
};
|
|
@@ -954,7 +955,8 @@
|
|
|
954
955
|
}
|
|
955
956
|
};
|
|
956
957
|
ThreadMessageHandler.prototype._start = function (payload) {
|
|
957
|
-
|
|
958
|
+
var wasi_thread_start = this.instance.exports.wasi_thread_start;
|
|
959
|
+
if (typeof wasi_thread_start !== 'function') {
|
|
958
960
|
var err = new TypeError('wasi_thread_start is not exported');
|
|
959
961
|
notifyPthreadCreateResult(payload.sab, 2, err);
|
|
960
962
|
throw err;
|
|
@@ -964,13 +966,15 @@
|
|
|
964
966
|
var startArg = payload.arg;
|
|
965
967
|
notifyPthreadCreateResult(payload.sab, 1);
|
|
966
968
|
try {
|
|
967
|
-
|
|
969
|
+
wasi_thread_start(tid, startArg);
|
|
968
970
|
}
|
|
969
971
|
catch (err) {
|
|
970
|
-
if (
|
|
971
|
-
|
|
972
|
+
if (err !== 'unwind') {
|
|
973
|
+
throw err;
|
|
974
|
+
}
|
|
975
|
+
else {
|
|
976
|
+
return;
|
|
972
977
|
}
|
|
973
|
-
throw err;
|
|
974
978
|
}
|
|
975
979
|
postMessage(createMessage('cleanup-thread', { tid: tid }));
|
|
976
980
|
};
|
|
@@ -1045,7 +1049,6 @@
|
|
|
1045
1049
|
filename: '',
|
|
1046
1050
|
childThread: ENVIRONMENT_IS_PTHREAD,
|
|
1047
1051
|
initWorker: undefined,
|
|
1048
|
-
executeAsyncWork: undefined,
|
|
1049
1052
|
waitThreadStart: waitThreadStart,
|
|
1050
1053
|
PThread: undefined,
|
|
1051
1054
|
init: function (options) {
|
|
@@ -1094,6 +1097,11 @@
|
|
|
1094
1097
|
napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
|
|
1095
1098
|
});
|
|
1096
1099
|
}
|
|
1100
|
+
catch (e) {
|
|
1101
|
+
if (e !== 'unwind') {
|
|
1102
|
+
throw e;
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1097
1105
|
finally {
|
|
1098
1106
|
emnapiCtx.closeScope(envObject, scope_1);
|
|
1099
1107
|
}
|
|
@@ -1241,6 +1249,9 @@
|
|
|
1241
1249
|
* @__sig vppp
|
|
1242
1250
|
*/
|
|
1243
1251
|
function _emnapi_get_node_version(major, minor, patch) {
|
|
1252
|
+
major >>>= 0;
|
|
1253
|
+
minor >>>= 0;
|
|
1254
|
+
patch >>>= 0;
|
|
1244
1255
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1245
1256
|
var versions = (typeof process === 'object' && process !== null &&
|
|
1246
1257
|
typeof process.versions === 'object' && process.versions !== null &&
|
|
@@ -1306,6 +1317,7 @@
|
|
|
1306
1317
|
*/
|
|
1307
1318
|
function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
|
|
1308
1319
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1320
|
+
callback >>>= 0;
|
|
1309
1321
|
envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
|
|
1310
1322
|
}
|
|
1311
1323
|
/**
|
|
@@ -1320,6 +1332,31 @@
|
|
|
1320
1332
|
function _emnapi_ctx_decrease_waiting_request_counter() {
|
|
1321
1333
|
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1322
1334
|
}
|
|
1335
|
+
/**
|
|
1336
|
+
* @__sig i
|
|
1337
|
+
*/
|
|
1338
|
+
function _emnapi_is_main_runtime_thread() {
|
|
1339
|
+
return ENVIRONMENT_IS_PTHREAD ? 0 : 1;
|
|
1340
|
+
}
|
|
1341
|
+
/**
|
|
1342
|
+
* @__sig i
|
|
1343
|
+
*/
|
|
1344
|
+
function _emnapi_is_main_browser_thread() {
|
|
1345
|
+
return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
|
|
1346
|
+
}
|
|
1347
|
+
/**
|
|
1348
|
+
* @__sig v
|
|
1349
|
+
*/
|
|
1350
|
+
function _emnapi_unwind() {
|
|
1351
|
+
// eslint-disable-next-line @typescript-eslint/no-throw-literal
|
|
1352
|
+
throw 'unwind';
|
|
1353
|
+
}
|
|
1354
|
+
/**
|
|
1355
|
+
* @__sig d
|
|
1356
|
+
*/
|
|
1357
|
+
function _emnapi_get_now() {
|
|
1358
|
+
return performance.timeOrigin + performance.now();
|
|
1359
|
+
}
|
|
1323
1360
|
function $emnapiSetValueI64(result, numberValue) {
|
|
1324
1361
|
var tempDouble;
|
|
1325
1362
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -1331,18 +1368,38 @@
|
|
|
1331
1368
|
HEAP_DATA_VIEW.setInt32(result, tempI64[0], true);
|
|
1332
1369
|
HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true);
|
|
1333
1370
|
}
|
|
1371
|
+
/**
|
|
1372
|
+
* @__deps $emnapiCtx
|
|
1373
|
+
* @__sig p
|
|
1374
|
+
*/
|
|
1375
|
+
function _emnapi_open_handle_scope() {
|
|
1376
|
+
return emnapiCtx.openScope().id;
|
|
1377
|
+
}
|
|
1378
|
+
/**
|
|
1379
|
+
* @__deps $emnapiCtx
|
|
1380
|
+
* @__sig vp
|
|
1381
|
+
*/
|
|
1382
|
+
function _emnapi_close_handle_scope(_scope) {
|
|
1383
|
+
return emnapiCtx.closeScope();
|
|
1384
|
+
}
|
|
1334
1385
|
var utilMod = /*#__PURE__*/ Object.freeze({
|
|
1335
1386
|
__proto__: null,
|
|
1336
1387
|
$emnapiSetValueI64: $emnapiSetValueI64,
|
|
1337
1388
|
_emnapi_call_finalizer: _emnapi_call_finalizer,
|
|
1338
1389
|
_emnapi_callback_into_module: _emnapi_callback_into_module,
|
|
1390
|
+
_emnapi_close_handle_scope: _emnapi_close_handle_scope,
|
|
1339
1391
|
_emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter,
|
|
1340
1392
|
_emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter,
|
|
1341
1393
|
_emnapi_get_node_version: _emnapi_get_node_version,
|
|
1394
|
+
_emnapi_get_now: _emnapi_get_now,
|
|
1395
|
+
_emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
|
|
1396
|
+
_emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread,
|
|
1342
1397
|
_emnapi_next_tick: _emnapi_next_tick,
|
|
1398
|
+
_emnapi_open_handle_scope: _emnapi_open_handle_scope,
|
|
1343
1399
|
_emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop,
|
|
1344
1400
|
_emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push,
|
|
1345
1401
|
_emnapi_set_immediate: _emnapi_set_immediate,
|
|
1402
|
+
_emnapi_unwind: _emnapi_unwind,
|
|
1346
1403
|
napi_clear_last_error: napi_clear_last_error,
|
|
1347
1404
|
napi_set_last_error: napi_set_last_error
|
|
1348
1405
|
});
|
|
@@ -1366,9 +1423,20 @@
|
|
|
1366
1423
|
return worker;
|
|
1367
1424
|
}
|
|
1368
1425
|
/** @__sig vp */
|
|
1426
|
+
function _emnapi_worker_ref(pthreadPtr) {
|
|
1427
|
+
if (ENVIRONMENT_IS_PTHREAD)
|
|
1428
|
+
return;
|
|
1429
|
+
pthreadPtr >>>= 0;
|
|
1430
|
+
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
1431
|
+
if (worker && typeof worker.ref === 'function') {
|
|
1432
|
+
worker.ref();
|
|
1433
|
+
}
|
|
1434
|
+
}
|
|
1435
|
+
/** @__sig vp */
|
|
1369
1436
|
function _emnapi_worker_unref(pthreadPtr) {
|
|
1370
1437
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
1371
1438
|
return;
|
|
1439
|
+
pthreadPtr >>>= 0;
|
|
1372
1440
|
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
1373
1441
|
if (worker && typeof worker.unref === 'function') {
|
|
1374
1442
|
worker.unref();
|
|
@@ -1410,10 +1478,6 @@
|
|
|
1410
1478
|
};
|
|
1411
1479
|
});
|
|
1412
1480
|
uvThreadpoolReady.ready = false;
|
|
1413
|
-
/** @__sig i */
|
|
1414
|
-
function _emnapi_is_main_browser_thread() {
|
|
1415
|
-
return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
|
|
1416
|
-
}
|
|
1417
1481
|
/** @__sig vppi */
|
|
1418
1482
|
function _emnapi_after_uvthreadpool_ready(callback, q, type) {
|
|
1419
1483
|
if (uvThreadpoolReady.ready) {
|
|
@@ -1430,7 +1494,7 @@
|
|
|
1430
1494
|
var p = [];
|
|
1431
1495
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1432
1496
|
var _loop_1 = function (i) {
|
|
1433
|
-
var pthreadPtr = HEAP_DATA_VIEW.
|
|
1497
|
+
var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true);
|
|
1434
1498
|
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
1435
1499
|
p.push(new Promise(function (resolve) {
|
|
1436
1500
|
var handler = function (e) {
|
|
@@ -1479,11 +1543,10 @@
|
|
|
1479
1543
|
_emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready,
|
|
1480
1544
|
_emnapi_async_send_js: _emnapi_async_send_js,
|
|
1481
1545
|
_emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
|
|
1482
|
-
_emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
|
|
1483
1546
|
_emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
|
|
1547
|
+
_emnapi_worker_ref: _emnapi_worker_ref,
|
|
1484
1548
|
_emnapi_worker_unref: _emnapi_worker_unref
|
|
1485
1549
|
});
|
|
1486
|
-
/* eslint-disable @typescript-eslint/indent */
|
|
1487
1550
|
/** @__sig ipjp */
|
|
1488
1551
|
function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
|
|
1489
1552
|
if (!env)
|
|
@@ -1491,22 +1554,15 @@
|
|
|
1491
1554
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1492
1555
|
if (!adjusted_value)
|
|
1493
1556
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
}
|
|
1498
|
-
var old_size = wasmMemory.buffer.byteLength;
|
|
1499
|
-
var new_size = old_size + change_in_bytes_number;
|
|
1500
|
-
new_size = new_size + ((65536 - new_size % 65536) % 65536);
|
|
1501
|
-
if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
|
|
1502
|
-
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
1503
|
-
}
|
|
1557
|
+
// eslint-disable-next-line prefer-const
|
|
1558
|
+
var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
|
|
1559
|
+
adjusted_value >>>= 0;
|
|
1504
1560
|
if (emnapiCtx.feature.supportBigInt) {
|
|
1505
1561
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1506
|
-
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(
|
|
1562
|
+
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
|
|
1507
1563
|
}
|
|
1508
1564
|
else {
|
|
1509
|
-
$emnapiSetValueI64(adjusted_value,
|
|
1565
|
+
$emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
|
|
1510
1566
|
}
|
|
1511
1567
|
return envObject.clearLastError();
|
|
1512
1568
|
}
|
|
@@ -1674,6 +1730,7 @@
|
|
|
1674
1730
|
var asyncId = asyncContext.asyncId;
|
|
1675
1731
|
var triggerAsyncId = asyncContext.triggerAsyncId;
|
|
1676
1732
|
if (result) {
|
|
1733
|
+
result >>>= 0;
|
|
1677
1734
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1678
1735
|
HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
|
|
1679
1736
|
HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
|
|
@@ -1717,11 +1774,13 @@
|
|
|
1717
1774
|
return;
|
|
1718
1775
|
var resource = emnapiCtx.handleStore.get(async_resource).value;
|
|
1719
1776
|
var callback = emnapiCtx.handleStore.get(cb).value;
|
|
1777
|
+
argv >>>= 0;
|
|
1778
|
+
size >>>= 0;
|
|
1720
1779
|
size = size >>> 0;
|
|
1721
1780
|
var arr = Array(size);
|
|
1722
1781
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1723
1782
|
for (; i < size; i++) {
|
|
1724
|
-
var argVal = HEAP_DATA_VIEW.
|
|
1783
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
1725
1784
|
arr[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
1726
1785
|
}
|
|
1727
1786
|
var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, {
|
|
@@ -1729,10 +1788,11 @@
|
|
|
1729
1788
|
triggerAsyncId: trigger_async_id
|
|
1730
1789
|
});
|
|
1731
1790
|
if (result) {
|
|
1791
|
+
result >>>= 0;
|
|
1732
1792
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1733
1793
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1734
1794
|
v = envObject.ensureHandleId(ret);
|
|
1735
|
-
HEAP_DATA_VIEW.
|
|
1795
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
1736
1796
|
}
|
|
1737
1797
|
}
|
|
1738
1798
|
/** @__sig ippp */
|
|
@@ -1759,6 +1819,7 @@
|
|
|
1759
1819
|
var low = Number(numberValue & BigInt(0xffffffff));
|
|
1760
1820
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1761
1821
|
var high = Number(numberValue >> BigInt(32));
|
|
1822
|
+
result >>>= 0;
|
|
1762
1823
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1763
1824
|
HEAP_DATA_VIEW.setInt32(result, low, true);
|
|
1764
1825
|
HEAP_DATA_VIEW.setInt32(result + 4, high, true);
|
|
@@ -1769,6 +1830,7 @@
|
|
|
1769
1830
|
if (!emnapiNodeBinding) {
|
|
1770
1831
|
return 9 /* napi_status.napi_generic_failure */;
|
|
1771
1832
|
}
|
|
1833
|
+
async_context >>>= 0;
|
|
1772
1834
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1773
1835
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
1774
1836
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
@@ -1817,14 +1879,17 @@
|
|
|
1817
1879
|
if (typeof v8func !== 'function') {
|
|
1818
1880
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1819
1881
|
}
|
|
1882
|
+
async_context >>>= 0;
|
|
1820
1883
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1821
1884
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
1822
1885
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
1823
1886
|
var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
|
|
1887
|
+
argv >>>= 0;
|
|
1888
|
+
argc >>>= 0;
|
|
1824
1889
|
argc = argc >>> 0;
|
|
1825
1890
|
var arr = Array(argc);
|
|
1826
1891
|
for (; i < argc; i++) {
|
|
1827
|
-
var argVal = HEAP_DATA_VIEW.
|
|
1892
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
1828
1893
|
arr[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
1829
1894
|
}
|
|
1830
1895
|
var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr);
|
|
@@ -1834,9 +1899,10 @@
|
|
|
1834
1899
|
if (ret.status !== 0 /* napi_status.napi_ok */)
|
|
1835
1900
|
return envObject.setLastError(ret.status);
|
|
1836
1901
|
if (result) {
|
|
1902
|
+
result >>>= 0;
|
|
1837
1903
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1838
1904
|
v = envObject.ensureHandleId(ret.value);
|
|
1839
|
-
HEAP_DATA_VIEW.
|
|
1905
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
1840
1906
|
}
|
|
1841
1907
|
return envObject.getReturnStatus();
|
|
1842
1908
|
}
|
|
@@ -1871,32 +1937,62 @@
|
|
|
1871
1937
|
* ```
|
|
1872
1938
|
*/
|
|
1873
1939
|
var emnapiTSFN = {
|
|
1940
|
+
_liveSet: {},
|
|
1874
1941
|
offset: {
|
|
1942
|
+
__size__: 0,
|
|
1875
1943
|
/* napi_ref */ resource: 0,
|
|
1876
|
-
/* double */ async_id:
|
|
1877
|
-
/* double */ trigger_async_id:
|
|
1878
|
-
/* size_t */ queue_size:
|
|
1879
|
-
/*
|
|
1880
|
-
/*
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
/* size_t */
|
|
1885
|
-
/*
|
|
1886
|
-
/*
|
|
1887
|
-
/* void* */
|
|
1888
|
-
/*
|
|
1889
|
-
/*
|
|
1890
|
-
/*
|
|
1891
|
-
/*
|
|
1892
|
-
/*
|
|
1893
|
-
/*
|
|
1894
|
-
|
|
1944
|
+
/* double */ async_id: 0,
|
|
1945
|
+
/* double */ trigger_async_id: 0,
|
|
1946
|
+
/* size_t */ queue_size: 0,
|
|
1947
|
+
/* bool */ is_some: 0,
|
|
1948
|
+
/* void* */ queue: 0,
|
|
1949
|
+
// Reuse uv_async_t storage as JS-side wakeup state: pending event + scheduled drain.
|
|
1950
|
+
async_pending: 0,
|
|
1951
|
+
async_u_fd: 0,
|
|
1952
|
+
/* size_t */ thread_count: 0,
|
|
1953
|
+
/* int32_t */ state: 0,
|
|
1954
|
+
/* atomic_uchar */ dispatch_state: 0,
|
|
1955
|
+
/* void* */ context: 0,
|
|
1956
|
+
/* size_t */ max_queue_size: 0,
|
|
1957
|
+
/* napi_ref */ ref: 0,
|
|
1958
|
+
/* napi_env */ env: 0,
|
|
1959
|
+
/* void* */ finalize_data: 0,
|
|
1960
|
+
/* napi_finalize */ finalize_cb: 0,
|
|
1961
|
+
/* napi_threadsafe_function_call_js */ call_js_cb: 0,
|
|
1962
|
+
/* bool */ handles_closing: 0,
|
|
1963
|
+
/* bool */ async_ref: 0,
|
|
1964
|
+
/* int32_t */ mutex: 0,
|
|
1965
|
+
/* int32_t */ cond: 0
|
|
1895
1966
|
},
|
|
1896
1967
|
init: function () {
|
|
1968
|
+
emnapiTSFN._liveSet = new Set();
|
|
1969
|
+
emnapiTSFN.offset.__size__ = 184 /* NapiTSFNOffset32.__size__ */;
|
|
1970
|
+
emnapiTSFN.offset.resource = 0 /* NapiTSFNOffset32.async_resource_resource */;
|
|
1971
|
+
emnapiTSFN.offset.async_id = 8 /* NapiTSFNOffset32.async_resource_async_context_async_id */;
|
|
1972
|
+
emnapiTSFN.offset.trigger_async_id = 16 /* NapiTSFNOffset32.async_resource_async_context_trigger_async_id */;
|
|
1973
|
+
emnapiTSFN.offset.queue_size = 60 /* NapiTSFNOffset32.queue_size */;
|
|
1974
|
+
emnapiTSFN.offset.is_some = 24 /* NapiTSFNOffset32.async_resource_is_some */;
|
|
1975
|
+
emnapiTSFN.offset.queue = 64 /* NapiTSFNOffset32.queue */;
|
|
1976
|
+
emnapiTSFN.offset.async_pending = 132 /* NapiTSFNOffset32.async_pending */;
|
|
1977
|
+
emnapiTSFN.offset.async_u_fd = 96 /* NapiTSFNOffset32.async_u_fd */;
|
|
1978
|
+
emnapiTSFN.offset.thread_count = 136 /* NapiTSFNOffset32.thread_count */;
|
|
1979
|
+
emnapiTSFN.offset.state = 140 /* NapiTSFNOffset32.state */;
|
|
1980
|
+
emnapiTSFN.offset.dispatch_state = 144 /* NapiTSFNOffset32.dispatch_state */;
|
|
1981
|
+
emnapiTSFN.offset.context = 148 /* NapiTSFNOffset32.context */;
|
|
1982
|
+
emnapiTSFN.offset.max_queue_size = 152 /* NapiTSFNOffset32.max_queue_size */;
|
|
1983
|
+
emnapiTSFN.offset.ref = 156 /* NapiTSFNOffset32.ref */;
|
|
1984
|
+
emnapiTSFN.offset.env = 160 /* NapiTSFNOffset32.env */;
|
|
1985
|
+
emnapiTSFN.offset.finalize_data = 164 /* NapiTSFNOffset32.finalize_data */;
|
|
1986
|
+
emnapiTSFN.offset.finalize_cb = 168 /* NapiTSFNOffset32.finalize_cb */;
|
|
1987
|
+
emnapiTSFN.offset.call_js_cb = 172 /* NapiTSFNOffset32.call_js_cb */;
|
|
1988
|
+
emnapiTSFN.offset.handles_closing = 176 /* NapiTSFNOffset32.handles_closing */;
|
|
1989
|
+
emnapiTSFN.offset.async_ref = 180 /* NapiTSFNOffset32.async_ref */;
|
|
1990
|
+
emnapiTSFN.offset.mutex = 32 /* NapiTSFNOffset32.mutex */;
|
|
1991
|
+
emnapiTSFN.offset.cond = 56 /* NapiTSFNOffset32.cond */;
|
|
1992
|
+
emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
|
|
1897
1993
|
if (typeof PThread !== 'undefined') {
|
|
1898
1994
|
PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
|
|
1899
|
-
PThread.
|
|
1995
|
+
Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
|
|
1900
1996
|
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
1901
1997
|
PThread.getNewWorker = function () {
|
|
1902
1998
|
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
@@ -1917,7 +2013,10 @@
|
|
|
1917
2013
|
var type = __emnapi__.type;
|
|
1918
2014
|
var payload = __emnapi__.payload;
|
|
1919
2015
|
if (type === 'tsfn-send') {
|
|
1920
|
-
emnapiTSFN.
|
|
2016
|
+
var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
|
|
2017
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
2018
|
+
emnapiTSFN.enqueue(payload.tsfn);
|
|
2019
|
+
}
|
|
1921
2020
|
}
|
|
1922
2021
|
}
|
|
1923
2022
|
};
|
|
@@ -1939,18 +2038,40 @@
|
|
|
1939
2038
|
}
|
|
1940
2039
|
return true;
|
|
1941
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
|
+
},
|
|
1942
2056
|
initQueue: function (func) {
|
|
1943
2057
|
var size = 2 * 4;
|
|
1944
2058
|
var queue = _malloc(size);
|
|
1945
2059
|
if (!queue)
|
|
1946
2060
|
return false;
|
|
1947
|
-
|
|
2061
|
+
queue >>>= 0;
|
|
2062
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
|
|
1948
2063
|
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
1949
2064
|
return true;
|
|
1950
2065
|
},
|
|
1951
2066
|
destroyQueue: function (func) {
|
|
1952
2067
|
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
1953
2068
|
if (queue) {
|
|
2069
|
+
var node = emnapiTSFN.loadSizeTypeValue(queue, false);
|
|
2070
|
+
while (node !== 0) {
|
|
2071
|
+
var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
|
|
2072
|
+
_free(node);
|
|
2073
|
+
node = next;
|
|
2074
|
+
}
|
|
1954
2075
|
_free(queue);
|
|
1955
2076
|
}
|
|
1956
2077
|
},
|
|
@@ -1963,6 +2084,7 @@
|
|
|
1963
2084
|
var node = _malloc(size);
|
|
1964
2085
|
if (!node)
|
|
1965
2086
|
throw new Error('OOM');
|
|
2087
|
+
node >>>= 0;
|
|
1966
2088
|
emnapiTSFN.storeSizeTypeValue(node, data, false);
|
|
1967
2089
|
emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
|
|
1968
2090
|
if (head === 0 && tail === 0) {
|
|
@@ -1998,11 +2120,11 @@
|
|
|
1998
2120
|
var waitCondition = function () {
|
|
1999
2121
|
var queueSize = emnapiTSFN.getQueueSize(func);
|
|
2000
2122
|
var maxSize = emnapiTSFN.getMaxQueueSize(func);
|
|
2001
|
-
|
|
2002
|
-
return queueSize >= maxSize && maxSize > 0 && !isClosing;
|
|
2123
|
+
return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0 /* State.kOpen */;
|
|
2003
2124
|
};
|
|
2004
2125
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
2005
|
-
|
|
2126
|
+
var shouldDelete = false;
|
|
2127
|
+
var ret = mutex.execute(function () {
|
|
2006
2128
|
while (waitCondition()) {
|
|
2007
2129
|
if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) {
|
|
2008
2130
|
return 15 /* napi_status.napi_queue_full */;
|
|
@@ -2019,31 +2141,35 @@
|
|
|
2019
2141
|
}
|
|
2020
2142
|
cond.wait();
|
|
2021
2143
|
}
|
|
2022
|
-
if (emnapiTSFN.
|
|
2023
|
-
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
2024
|
-
return 1 /* napi_status.napi_invalid_arg */;
|
|
2025
|
-
}
|
|
2026
|
-
else {
|
|
2027
|
-
emnapiTSFN.subThreadCount(func);
|
|
2028
|
-
return 16 /* napi_status.napi_closing */;
|
|
2029
|
-
}
|
|
2030
|
-
}
|
|
2031
|
-
else {
|
|
2144
|
+
if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
|
|
2032
2145
|
emnapiTSFN.pushQueue(func, data);
|
|
2033
2146
|
emnapiTSFN.send(func);
|
|
2034
2147
|
return 0 /* napi_status.napi_ok */;
|
|
2035
2148
|
}
|
|
2149
|
+
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
2150
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
2151
|
+
}
|
|
2152
|
+
emnapiTSFN.subThreadCount(func);
|
|
2153
|
+
if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
2154
|
+
return 16 /* napi_status.napi_closing */;
|
|
2155
|
+
}
|
|
2156
|
+
shouldDelete = true;
|
|
2157
|
+
return 16 /* napi_status.napi_closing */;
|
|
2036
2158
|
});
|
|
2159
|
+
if (shouldDelete) {
|
|
2160
|
+
emnapiTSFN.destroy(func);
|
|
2161
|
+
}
|
|
2162
|
+
return ret;
|
|
2037
2163
|
},
|
|
2038
2164
|
getMutex: function (func) {
|
|
2039
2165
|
var index = func + emnapiTSFN.offset.mutex;
|
|
2040
2166
|
var mutex = {
|
|
2041
2167
|
lock: function () {
|
|
2042
2168
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
2043
|
-
var i32a = new Int32Array(
|
|
2169
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
2044
2170
|
if (isBrowserMain) {
|
|
2045
2171
|
while (true) {
|
|
2046
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
2172
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
2047
2173
|
if (oldValue === 0) {
|
|
2048
2174
|
return;
|
|
2049
2175
|
}
|
|
@@ -2051,11 +2177,11 @@
|
|
|
2051
2177
|
}
|
|
2052
2178
|
else {
|
|
2053
2179
|
while (true) {
|
|
2054
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
2180
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
2055
2181
|
if (oldValue === 0) {
|
|
2056
2182
|
return;
|
|
2057
2183
|
}
|
|
2058
|
-
Atomics.wait(i32a, 0,
|
|
2184
|
+
Atomics.wait(i32a, 0, 10);
|
|
2059
2185
|
}
|
|
2060
2186
|
}
|
|
2061
2187
|
},
|
|
@@ -2063,21 +2189,21 @@
|
|
|
2063
2189
|
return new Promise<void>(resolve => {
|
|
2064
2190
|
const again = (): void => { fn() }
|
|
2065
2191
|
const fn = (): void => {
|
|
2066
|
-
const i32a = new Int32Array(
|
|
2067
|
-
const oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
2192
|
+
const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
|
|
2193
|
+
const oldValue = Atomics.compareExchange(i32a, 0, 0, 10)
|
|
2068
2194
|
if (oldValue === 0) {
|
|
2069
2195
|
resolve()
|
|
2070
2196
|
return
|
|
2071
2197
|
}
|
|
2072
|
-
(Atomics as any).waitAsync(i32a, 0,
|
|
2198
|
+
(Atomics as any).waitAsync(i32a, 0, 10).value.then(again)
|
|
2073
2199
|
}
|
|
2074
2200
|
fn()
|
|
2075
2201
|
})
|
|
2076
2202
|
}, */
|
|
2077
2203
|
unlock: function () {
|
|
2078
|
-
var i32a = new Int32Array(
|
|
2079
|
-
var oldValue = Atomics.compareExchange(i32a, 0,
|
|
2080
|
-
if (oldValue !==
|
|
2204
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
2205
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
2206
|
+
if (oldValue !== 10) {
|
|
2081
2207
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
2082
2208
|
}
|
|
2083
2209
|
Atomics.notify(i32a, 0, 1);
|
|
@@ -2109,14 +2235,14 @@
|
|
|
2109
2235
|
var mutex = emnapiTSFN.getMutex(func);
|
|
2110
2236
|
var cond = {
|
|
2111
2237
|
wait: function () {
|
|
2112
|
-
var i32a = new Int32Array(
|
|
2238
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
2113
2239
|
var value = Atomics.load(i32a, 0);
|
|
2114
2240
|
mutex.unlock();
|
|
2115
2241
|
Atomics.wait(i32a, 0, value);
|
|
2116
2242
|
mutex.lock();
|
|
2117
2243
|
},
|
|
2118
2244
|
/* waitAsync () {
|
|
2119
|
-
const i32a = new Int32Array(
|
|
2245
|
+
const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
|
|
2120
2246
|
const value = Atomics.load(i32a, 0)
|
|
2121
2247
|
mutex.unlock()
|
|
2122
2248
|
const lock = (): Promise<void> => mutex.lockAsync()
|
|
@@ -2127,7 +2253,7 @@
|
|
|
2127
2253
|
}
|
|
2128
2254
|
}, */
|
|
2129
2255
|
signal: function () {
|
|
2130
|
-
var i32a = new Int32Array(
|
|
2256
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
2131
2257
|
Atomics.add(i32a, 0, 1);
|
|
2132
2258
|
Atomics.notify(i32a, 0, 1);
|
|
2133
2259
|
}
|
|
@@ -2140,15 +2266,15 @@
|
|
|
2140
2266
|
addQueueSize: function (func) {
|
|
2141
2267
|
var offset = emnapiTSFN.offset.queue_size;
|
|
2142
2268
|
var arr, index;
|
|
2143
|
-
arr = new Uint32Array(
|
|
2144
|
-
index = (func + offset)
|
|
2269
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
2270
|
+
index = (func + offset) >>> 2;
|
|
2145
2271
|
Atomics.add(arr, index, 1);
|
|
2146
2272
|
},
|
|
2147
2273
|
subQueueSize: function (func) {
|
|
2148
2274
|
var offset = emnapiTSFN.offset.queue_size;
|
|
2149
2275
|
var arr, index;
|
|
2150
|
-
arr = new Uint32Array(
|
|
2151
|
-
index = (func + offset)
|
|
2276
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
2277
|
+
index = (func + offset) >>> 2;
|
|
2152
2278
|
Atomics.sub(arr, index, 1);
|
|
2153
2279
|
},
|
|
2154
2280
|
getThreadCount: function (func) {
|
|
@@ -2157,31 +2283,31 @@
|
|
|
2157
2283
|
addThreadCount: function (func) {
|
|
2158
2284
|
var offset = emnapiTSFN.offset.thread_count;
|
|
2159
2285
|
var arr, index;
|
|
2160
|
-
arr = new Uint32Array(
|
|
2161
|
-
index = (func + offset)
|
|
2286
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
2287
|
+
index = (func + offset) >>> 2;
|
|
2162
2288
|
Atomics.add(arr, index, 1);
|
|
2163
2289
|
},
|
|
2164
2290
|
subThreadCount: function (func) {
|
|
2165
2291
|
var offset = emnapiTSFN.offset.thread_count;
|
|
2166
2292
|
var arr, index;
|
|
2167
|
-
arr = new Uint32Array(
|
|
2168
|
-
index = (func + offset)
|
|
2293
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
2294
|
+
index = (func + offset) >>> 2;
|
|
2169
2295
|
Atomics.sub(arr, index, 1);
|
|
2170
2296
|
},
|
|
2171
|
-
|
|
2172
|
-
return Atomics.load(new Int32Array(
|
|
2297
|
+
getState: function (func) {
|
|
2298
|
+
return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
|
|
2173
2299
|
},
|
|
2174
|
-
|
|
2175
|
-
Atomics.store(new Int32Array(
|
|
2300
|
+
setState: function (func, value) {
|
|
2301
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
|
|
2176
2302
|
},
|
|
2177
2303
|
getHandlesClosing: function (func) {
|
|
2178
|
-
return Atomics.load(new
|
|
2304
|
+
return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
|
|
2179
2305
|
},
|
|
2180
2306
|
setHandlesClosing: function (func, value) {
|
|
2181
|
-
Atomics.store(new
|
|
2307
|
+
Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
|
|
2182
2308
|
},
|
|
2183
2309
|
getDispatchState: function (func) {
|
|
2184
|
-
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);
|
|
2185
2311
|
},
|
|
2186
2312
|
getContext: function (func) {
|
|
2187
2313
|
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
@@ -2211,68 +2337,98 @@
|
|
|
2211
2337
|
var ret;
|
|
2212
2338
|
var arr;
|
|
2213
2339
|
if (unsigned) {
|
|
2214
|
-
arr = new Uint32Array(
|
|
2215
|
-
ret = Atomics.load(arr, offset
|
|
2340
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
2341
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
2216
2342
|
return ret;
|
|
2217
2343
|
}
|
|
2218
2344
|
else {
|
|
2219
|
-
arr = new Int32Array(
|
|
2220
|
-
ret = Atomics.load(arr, offset
|
|
2345
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
2346
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
2221
2347
|
return ret;
|
|
2222
2348
|
}
|
|
2223
2349
|
},
|
|
2224
2350
|
storeSizeTypeValue: function (offset, value, unsigned) {
|
|
2225
2351
|
var arr;
|
|
2226
2352
|
if (unsigned) {
|
|
2227
|
-
arr = new Uint32Array(
|
|
2228
|
-
Atomics.store(arr, offset
|
|
2353
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
2354
|
+
Atomics.store(arr, offset >>> 2, value);
|
|
2229
2355
|
return undefined;
|
|
2230
2356
|
}
|
|
2231
2357
|
else {
|
|
2232
|
-
arr = new Int32Array(
|
|
2233
|
-
Atomics.store(arr, offset
|
|
2358
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
2359
|
+
Atomics.store(arr, offset >>> 2, value >>> 0);
|
|
2234
2360
|
return undefined;
|
|
2235
2361
|
}
|
|
2236
2362
|
},
|
|
2363
|
+
releaseResources: function (func) {
|
|
2364
|
+
if (emnapiTSFN.getState(func) !== 2 /* State.kClosed */) {
|
|
2365
|
+
emnapiTSFN.setState(func, 2 /* State.kClosed */);
|
|
2366
|
+
var env = emnapiTSFN.getEnv(func);
|
|
2367
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
2368
|
+
var ref = emnapiTSFN.getRef(func);
|
|
2369
|
+
if (ref) {
|
|
2370
|
+
emnapiCtx.refStore.get(ref).dispose();
|
|
2371
|
+
}
|
|
2372
|
+
var resource = emnapiTSFN.getResource(func);
|
|
2373
|
+
emnapiCtx.refStore.get(resource).dispose();
|
|
2374
|
+
emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
|
|
2375
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2376
|
+
HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
|
|
2377
|
+
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
2378
|
+
envObject.unref();
|
|
2379
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
2380
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
2381
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
2382
|
+
if (Atomics.load(arr, asyncRefOffset) > 0) {
|
|
2383
|
+
Atomics.store(arr, asyncRefOffset, 0);
|
|
2384
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
2385
|
+
}
|
|
2386
|
+
if (emnapiNodeBinding) {
|
|
2387
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
2388
|
+
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
2389
|
+
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
2390
|
+
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
2391
|
+
}
|
|
2392
|
+
}
|
|
2393
|
+
},
|
|
2237
2394
|
destroy: function (func) {
|
|
2395
|
+
emnapiTSFN._liveSet.delete(func);
|
|
2238
2396
|
emnapiTSFN.destroyQueue(func);
|
|
2239
|
-
|
|
2240
|
-
var envObject = emnapiCtx.envStore.get(env);
|
|
2241
|
-
var ref = emnapiTSFN.getRef(func);
|
|
2242
|
-
if (ref) {
|
|
2243
|
-
emnapiCtx.refStore.get(ref).dispose();
|
|
2244
|
-
}
|
|
2245
|
-
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
2246
|
-
envObject.unref();
|
|
2247
|
-
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
|
|
2248
|
-
var arr = new Int32Array(wasmMemory.buffer);
|
|
2249
|
-
if (Atomics.load(arr, asyncRefOffset)) {
|
|
2250
|
-
Atomics.store(arr, asyncRefOffset, 0);
|
|
2251
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
2252
|
-
}
|
|
2253
|
-
var resource = emnapiTSFN.getResource(func);
|
|
2254
|
-
emnapiCtx.refStore.get(resource).dispose();
|
|
2255
|
-
if (emnapiNodeBinding) {
|
|
2256
|
-
var view = new DataView(wasmMemory.buffer);
|
|
2257
|
-
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
2258
|
-
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
2259
|
-
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
2260
|
-
}
|
|
2397
|
+
emnapiTSFN.releaseResources(func);
|
|
2261
2398
|
_free(func);
|
|
2262
2399
|
},
|
|
2263
|
-
|
|
2400
|
+
emptyQueue: function (func) {
|
|
2401
|
+
var drainQueue = [];
|
|
2402
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
2403
|
+
while (emnapiTSFN.getQueueSize(func) > 0) {
|
|
2404
|
+
drainQueue.push(emnapiTSFN.shiftQueue(func));
|
|
2405
|
+
}
|
|
2406
|
+
});
|
|
2264
2407
|
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
2265
2408
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2266
2409
|
var context = emnapiTSFN.getContext(func);
|
|
2267
2410
|
var data;
|
|
2268
|
-
|
|
2411
|
+
for (var i = 0; i < drainQueue.length; i++) {
|
|
2269
2412
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2270
|
-
data =
|
|
2413
|
+
data = drainQueue[i];
|
|
2271
2414
|
if (callJsCb) {
|
|
2272
2415
|
(wasmTable.get(callJsCb))(0, 0, context, data);
|
|
2273
2416
|
}
|
|
2274
2417
|
}
|
|
2275
|
-
|
|
2418
|
+
},
|
|
2419
|
+
maybeDelete: function (func) {
|
|
2420
|
+
var shouldDelete = false;
|
|
2421
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
2422
|
+
if (emnapiTSFN.getThreadCount(func) > 0) {
|
|
2423
|
+
emnapiTSFN.releaseResources(func);
|
|
2424
|
+
}
|
|
2425
|
+
else {
|
|
2426
|
+
shouldDelete = true;
|
|
2427
|
+
}
|
|
2428
|
+
});
|
|
2429
|
+
if (shouldDelete) {
|
|
2430
|
+
emnapiTSFN.destroy(func);
|
|
2431
|
+
}
|
|
2276
2432
|
},
|
|
2277
2433
|
finalize: function (func) {
|
|
2278
2434
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -2287,12 +2443,13 @@
|
|
|
2287
2443
|
envObject.callFinalizerInternal(0, finalize, data, context);
|
|
2288
2444
|
};
|
|
2289
2445
|
try {
|
|
2446
|
+
emnapiTSFN.emptyQueue(func);
|
|
2290
2447
|
if (finalize) {
|
|
2291
2448
|
if (emnapiNodeBinding) {
|
|
2292
2449
|
var resource = emnapiTSFN.getResource(func);
|
|
2293
2450
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
2294
2451
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
2295
|
-
var view = new DataView(
|
|
2452
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
2296
2453
|
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
2297
2454
|
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
2298
2455
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
@@ -2304,7 +2461,7 @@
|
|
|
2304
2461
|
f();
|
|
2305
2462
|
}
|
|
2306
2463
|
}
|
|
2307
|
-
emnapiTSFN.
|
|
2464
|
+
emnapiTSFN.maybeDelete(func);
|
|
2308
2465
|
}
|
|
2309
2466
|
finally {
|
|
2310
2467
|
emnapiCtx.closeScope(envObject);
|
|
@@ -2320,7 +2477,7 @@
|
|
|
2320
2477
|
try {
|
|
2321
2478
|
if (set_closing) {
|
|
2322
2479
|
emnapiTSFN.getMutex(func).execute(function () {
|
|
2323
|
-
emnapiTSFN.
|
|
2480
|
+
emnapiTSFN.setState(func, 1 /* State.kClosing */);
|
|
2324
2481
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
2325
2482
|
emnapiTSFN.getCond(func).signal();
|
|
2326
2483
|
}
|
|
@@ -2330,6 +2487,7 @@
|
|
|
2330
2487
|
return;
|
|
2331
2488
|
}
|
|
2332
2489
|
emnapiTSFN.setHandlesClosing(func, 1);
|
|
2490
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
|
|
2333
2491
|
emnapiCtx.feature.setImmediate(function () {
|
|
2334
2492
|
emnapiTSFN.finalize(func);
|
|
2335
2493
|
});
|
|
@@ -2346,10 +2504,7 @@
|
|
|
2346
2504
|
var mutex = emnapiTSFN.getMutex(func);
|
|
2347
2505
|
var cond = emnapiTSFN.getCond(func);
|
|
2348
2506
|
mutex.execute(function () {
|
|
2349
|
-
if (emnapiTSFN.
|
|
2350
|
-
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
2351
|
-
}
|
|
2352
|
-
else {
|
|
2507
|
+
if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
|
|
2353
2508
|
var size = emnapiTSFN.getQueueSize(func);
|
|
2354
2509
|
if (size > 0) {
|
|
2355
2510
|
data = emnapiTSFN.shiftQueue(func);
|
|
@@ -2362,7 +2517,7 @@
|
|
|
2362
2517
|
}
|
|
2363
2518
|
if (size === 0) {
|
|
2364
2519
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
2365
|
-
emnapiTSFN.
|
|
2520
|
+
emnapiTSFN.setState(func, 1 /* State.kClosing */);
|
|
2366
2521
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
2367
2522
|
cond.signal();
|
|
2368
2523
|
}
|
|
@@ -2373,6 +2528,9 @@
|
|
|
2373
2528
|
has_more = true;
|
|
2374
2529
|
}
|
|
2375
2530
|
}
|
|
2531
|
+
else {
|
|
2532
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
2533
|
+
}
|
|
2376
2534
|
});
|
|
2377
2535
|
if (popped_value) {
|
|
2378
2536
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -2401,7 +2559,7 @@
|
|
|
2401
2559
|
var resource = emnapiTSFN.getResource(func);
|
|
2402
2560
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
2403
2561
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
2404
|
-
var view = new DataView(
|
|
2562
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
2405
2563
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
2406
2564
|
asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
|
|
2407
2565
|
triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
|
|
@@ -2420,8 +2578,9 @@
|
|
|
2420
2578
|
dispatch: function (func) {
|
|
2421
2579
|
var has_more = true;
|
|
2422
2580
|
var iterations_left = 1000;
|
|
2423
|
-
var
|
|
2424
|
-
var
|
|
2581
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
2582
|
+
var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
|
|
2583
|
+
var index = dispatchStateAddress >>> 2;
|
|
2425
2584
|
while (has_more && --iterations_left !== 0) {
|
|
2426
2585
|
Atomics.store(ui32a, index, 1);
|
|
2427
2586
|
has_more = emnapiTSFN.dispatchOne(func);
|
|
@@ -2433,25 +2592,86 @@
|
|
|
2433
2592
|
emnapiTSFN.send(func);
|
|
2434
2593
|
}
|
|
2435
2594
|
},
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2595
|
+
enqueue: function (func) {
|
|
2596
|
+
// `pending` means a worker thread has requested a wakeup that has not
|
|
2597
|
+
// been drained on the main thread yet.
|
|
2598
|
+
var pending = func + emnapiTSFN.offset.async_pending;
|
|
2599
|
+
// `scheduled` prevents queueing the same main-thread drain chain more than
|
|
2600
|
+
// once while a previous wakeup is still in flight.
|
|
2601
|
+
var scheduled = func + emnapiTSFN.offset.async_u_fd;
|
|
2602
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
|
|
2603
|
+
if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
|
|
2439
2604
|
return;
|
|
2440
2605
|
}
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2606
|
+
// Match uv_async_send-style coalescing in JS: the first turn represents
|
|
2607
|
+
// the wakeup reaching the main thread, and the second turn performs the
|
|
2608
|
+
// actual TSFN drain after nearby Send/Signal calls have had a chance to
|
|
2609
|
+
// collapse into the shared AsyncProgressWorker state.
|
|
2610
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
2611
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
2612
|
+
return;
|
|
2613
|
+
}
|
|
2614
|
+
if (Atomics.load(i32a, pending >>> 2) === 0) {
|
|
2615
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
2616
|
+
return;
|
|
2617
|
+
}
|
|
2618
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
2619
|
+
try {
|
|
2620
|
+
// Consume the coalesced wakeup once, then let dispatch() observe any
|
|
2621
|
+
// queue mutations through dispatch_state like the C implementation.
|
|
2622
|
+
if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
|
|
2623
|
+
return;
|
|
2624
|
+
}
|
|
2625
|
+
// After destroy(), the func address is freed. Skip dispatch
|
|
2626
|
+
// to avoid use-after-free (JS-side lifecycle check).
|
|
2627
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
2628
|
+
return;
|
|
2629
|
+
}
|
|
2630
|
+
emnapiTSFN.dispatch(func);
|
|
2631
|
+
}
|
|
2632
|
+
finally {
|
|
2633
|
+
// Allow a later wakeup to schedule a new drain chain. If another
|
|
2634
|
+
// worker-thread send raced with this drain, enqueue one more turn.
|
|
2635
|
+
if (emnapiTSFN._liveSet.has(func)) {
|
|
2636
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
2637
|
+
if (Atomics.load(i32a, pending >>> 2) !== 0) {
|
|
2638
|
+
emnapiTSFN.enqueue(func);
|
|
2639
|
+
}
|
|
2447
2640
|
}
|
|
2448
2641
|
}
|
|
2449
2642
|
});
|
|
2643
|
+
});
|
|
2644
|
+
},
|
|
2645
|
+
send: function (func) {
|
|
2646
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
2647
|
+
var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
|
|
2648
|
+
if ((current_state & 1) === 1) {
|
|
2649
|
+
return;
|
|
2450
2650
|
}
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2651
|
+
var pendng = func + emnapiTSFN.offset.async_pending;
|
|
2652
|
+
// A wakeup is already pending, so this send only needs to leave the queued
|
|
2653
|
+
// work in the TSFN queue and let the existing drain pick it up.
|
|
2654
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
2655
|
+
return;
|
|
2656
|
+
}
|
|
2657
|
+
if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
|
|
2658
|
+
if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
|
|
2659
|
+
// Worker threads only post a wakeup token. Main-thread draining is
|
|
2660
|
+
// serialized by enqueue() once the message is received.
|
|
2661
|
+
postMessage({
|
|
2662
|
+
__emnapi__: {
|
|
2663
|
+
type: 'tsfn-send',
|
|
2664
|
+
payload: {
|
|
2665
|
+
tsfn: func
|
|
2666
|
+
}
|
|
2667
|
+
}
|
|
2668
|
+
});
|
|
2669
|
+
}
|
|
2670
|
+
else {
|
|
2671
|
+
// On the main thread we can skip the cross-thread hop and schedule the
|
|
2672
|
+
// coalesced drain chain directly.
|
|
2673
|
+
emnapiTSFN.enqueue(func);
|
|
2674
|
+
}
|
|
2455
2675
|
}
|
|
2456
2676
|
}
|
|
2457
2677
|
};
|
|
@@ -2464,6 +2684,13 @@
|
|
|
2464
2684
|
envObject.checkGCAccess();
|
|
2465
2685
|
if (!async_resource_name)
|
|
2466
2686
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2687
|
+
max_queue_size >>>= 0;
|
|
2688
|
+
initial_thread_count >>>= 0;
|
|
2689
|
+
env >>>= 0;
|
|
2690
|
+
thread_finalize_data >>>= 0;
|
|
2691
|
+
thread_finalize_cb >>>= 0;
|
|
2692
|
+
context >>>= 0;
|
|
2693
|
+
call_js_cb >>>= 0;
|
|
2467
2694
|
max_queue_size = max_queue_size >>> 0;
|
|
2468
2695
|
initial_thread_count = initial_thread_count >>> 0;
|
|
2469
2696
|
if (initial_thread_count === 0) {
|
|
@@ -2472,6 +2699,7 @@
|
|
|
2472
2699
|
if (!result)
|
|
2473
2700
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2474
2701
|
var ref = 0;
|
|
2702
|
+
func >>>= 0;
|
|
2475
2703
|
if (!func) {
|
|
2476
2704
|
if (!call_js_cb)
|
|
2477
2705
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
@@ -2503,35 +2731,40 @@
|
|
|
2503
2731
|
asyncResourceName = String(asyncResourceName);
|
|
2504
2732
|
var resource_name = envObject.ensureHandleId(asyncResourceName);
|
|
2505
2733
|
// tsfn create
|
|
2506
|
-
var sizeofTSFN = emnapiTSFN.offset.
|
|
2734
|
+
var sizeofTSFN = emnapiTSFN.offset.__size__;
|
|
2735
|
+
// eslint-disable-next-line prefer-const
|
|
2507
2736
|
var tsfn = _malloc(sizeofTSFN);
|
|
2508
2737
|
if (!tsfn)
|
|
2509
2738
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
2510
|
-
|
|
2739
|
+
tsfn >>>= 0;
|
|
2740
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
2511
2741
|
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */);
|
|
2512
2742
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2513
2743
|
var resource_ = resourceRef.id;
|
|
2514
2744
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2515
|
-
HEAP_DATA_VIEW.
|
|
2745
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
|
|
2516
2746
|
if (!emnapiTSFN.initQueue(tsfn)) {
|
|
2517
2747
|
_free(tsfn);
|
|
2518
2748
|
resourceRef.dispose();
|
|
2519
2749
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
2520
2750
|
}
|
|
2521
2751
|
_emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
|
|
2752
|
+
HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
|
|
2522
2753
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
|
|
2523
|
-
HEAP_DATA_VIEW.
|
|
2754
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
|
|
2524
2755
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
|
|
2525
|
-
HEAP_DATA_VIEW.
|
|
2526
|
-
HEAP_DATA_VIEW.
|
|
2527
|
-
HEAP_DATA_VIEW.
|
|
2528
|
-
HEAP_DATA_VIEW.
|
|
2529
|
-
HEAP_DATA_VIEW.
|
|
2756
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true);
|
|
2757
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true);
|
|
2758
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
|
|
2759
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
|
|
2760
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
|
|
2530
2761
|
emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
|
|
2762
|
+
emnapiTSFN._liveSet.add(tsfn);
|
|
2531
2763
|
envObject.ref();
|
|
2532
2764
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
2533
|
-
HEAP_DATA_VIEW.
|
|
2534
|
-
|
|
2765
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
|
|
2766
|
+
result >>>= 0;
|
|
2767
|
+
HEAP_DATA_VIEW.setUint32(result, tsfn, true);
|
|
2535
2768
|
return envObject.clearLastError();
|
|
2536
2769
|
}
|
|
2537
2770
|
/** @__sig ipp */
|
|
@@ -2540,10 +2773,12 @@
|
|
|
2540
2773
|
abort();
|
|
2541
2774
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2542
2775
|
}
|
|
2776
|
+
func >>>= 0;
|
|
2777
|
+
result >>>= 0;
|
|
2543
2778
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2544
2779
|
var context = emnapiTSFN.getContext(func);
|
|
2545
2780
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2546
|
-
HEAP_DATA_VIEW.
|
|
2781
|
+
HEAP_DATA_VIEW.setUint32(result, context, true);
|
|
2547
2782
|
return 0 /* napi_status.napi_ok */;
|
|
2548
2783
|
}
|
|
2549
2784
|
/** @__sig ippi */
|
|
@@ -2552,6 +2787,8 @@
|
|
|
2552
2787
|
abort();
|
|
2553
2788
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2554
2789
|
}
|
|
2790
|
+
func >>>= 0;
|
|
2791
|
+
data >>>= 0;
|
|
2555
2792
|
return emnapiTSFN.push(func, data, mode);
|
|
2556
2793
|
}
|
|
2557
2794
|
/** @__sig ip */
|
|
@@ -2560,13 +2797,14 @@
|
|
|
2560
2797
|
abort();
|
|
2561
2798
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2562
2799
|
}
|
|
2800
|
+
func >>>= 0;
|
|
2563
2801
|
var mutex = emnapiTSFN.getMutex(func);
|
|
2564
2802
|
return mutex.execute(function () {
|
|
2565
|
-
if (emnapiTSFN.
|
|
2566
|
-
|
|
2803
|
+
if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
|
|
2804
|
+
emnapiTSFN.addThreadCount(func);
|
|
2805
|
+
return 0 /* napi_status.napi_ok */;
|
|
2567
2806
|
}
|
|
2568
|
-
|
|
2569
|
-
return 0 /* napi_status.napi_ok */;
|
|
2807
|
+
return 16 /* napi_status.napi_closing */;
|
|
2570
2808
|
});
|
|
2571
2809
|
}
|
|
2572
2810
|
/** @__sig ipi */
|
|
@@ -2575,26 +2813,36 @@
|
|
|
2575
2813
|
abort();
|
|
2576
2814
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2577
2815
|
}
|
|
2816
|
+
func >>>= 0;
|
|
2578
2817
|
var mutex = emnapiTSFN.getMutex(func);
|
|
2579
2818
|
var cond = emnapiTSFN.getCond(func);
|
|
2580
|
-
|
|
2819
|
+
var shouldDelete = false;
|
|
2820
|
+
var ret = mutex.execute(function () {
|
|
2581
2821
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
2582
2822
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2583
2823
|
}
|
|
2584
2824
|
emnapiTSFN.subThreadCount(func);
|
|
2585
2825
|
if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
if (
|
|
2826
|
+
if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
|
|
2827
|
+
if (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
|
|
2828
|
+
emnapiTSFN.setState(func, 1 /* State.kClosing */);
|
|
2829
|
+
}
|
|
2830
|
+
if (emnapiTSFN.getState(func) === 1 /* State.kClosing */ && emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
2591
2831
|
cond.signal();
|
|
2592
2832
|
}
|
|
2593
2833
|
emnapiTSFN.send(func);
|
|
2594
2834
|
}
|
|
2595
2835
|
}
|
|
2836
|
+
if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
2837
|
+
return 0 /* napi_status.napi_ok */;
|
|
2838
|
+
}
|
|
2839
|
+
shouldDelete = true;
|
|
2596
2840
|
return 0 /* napi_status.napi_ok */;
|
|
2597
2841
|
});
|
|
2842
|
+
if (shouldDelete) {
|
|
2843
|
+
emnapiTSFN.destroy(func);
|
|
2844
|
+
}
|
|
2845
|
+
return ret;
|
|
2598
2846
|
}
|
|
2599
2847
|
/** @__sig ipp */
|
|
2600
2848
|
function napi_unref_threadsafe_function(env, func) {
|
|
@@ -2602,11 +2850,16 @@
|
|
|
2602
2850
|
abort();
|
|
2603
2851
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2604
2852
|
}
|
|
2605
|
-
|
|
2606
|
-
var
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2853
|
+
func >>>= 0;
|
|
2854
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
2855
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
2856
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
2857
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
2858
|
+
if (currentValue > 0) {
|
|
2859
|
+
Atomics.store(arr, asyncRefOffset, currentValue - 1);
|
|
2860
|
+
if (currentValue === 1) {
|
|
2861
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
2862
|
+
}
|
|
2610
2863
|
}
|
|
2611
2864
|
return 0 /* napi_status.napi_ok */;
|
|
2612
2865
|
}
|
|
@@ -2616,34 +2869,73 @@
|
|
|
2616
2869
|
abort();
|
|
2617
2870
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2618
2871
|
}
|
|
2619
|
-
|
|
2620
|
-
var
|
|
2621
|
-
|
|
2622
|
-
|
|
2872
|
+
func >>>= 0;
|
|
2873
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
2874
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
2875
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
2876
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
2877
|
+
if (!currentValue) {
|
|
2623
2878
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
2624
2879
|
}
|
|
2880
|
+
Atomics.store(arr, asyncRefOffset, currentValue + 1);
|
|
2625
2881
|
return 0 /* napi_status.napi_ok */;
|
|
2626
2882
|
}
|
|
2627
2883
|
var emnapiAWMT = {
|
|
2628
|
-
|
|
2629
|
-
runningWorkers: [],
|
|
2630
|
-
workQueue: [],
|
|
2884
|
+
pool: [],
|
|
2631
2885
|
workerReady: null,
|
|
2886
|
+
globalAddress: 0,
|
|
2887
|
+
globalOffset: {
|
|
2888
|
+
idle_threads: 0,
|
|
2889
|
+
q: 1 * 4,
|
|
2890
|
+
next: 1 * 4,
|
|
2891
|
+
prev: 2 * 4,
|
|
2892
|
+
mutex: 3 * 4,
|
|
2893
|
+
cond: 4 * 4,
|
|
2894
|
+
exit_message: 5 * 4,
|
|
2895
|
+
end: 7 * 4
|
|
2896
|
+
},
|
|
2632
2897
|
offset: {
|
|
2633
2898
|
/* napi_ref */ resource: 0,
|
|
2634
2899
|
/* double */ async_id: 8,
|
|
2635
2900
|
/* double */ trigger_async_id: 16,
|
|
2636
2901
|
/* napi_env */ env: 24,
|
|
2637
|
-
/*
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2902
|
+
/* int32_t */ status: 1 * 4 + 24, // 0 for pending, 1 for cancelled, 2 for completed
|
|
2903
|
+
queue: 2 * 4 + 24,
|
|
2904
|
+
queue_next: 2 * 4 + 24,
|
|
2905
|
+
queue_prev: 3 * 4 + 24,
|
|
2906
|
+
/* void* */ data: 4 * 4 + 24,
|
|
2907
|
+
/* napi_async_execute_callback */ execute: 5 * 4 + 24,
|
|
2908
|
+
/* napi_async_complete_callback */ complete: 6 * 4 + 24,
|
|
2909
|
+
end: 7 * 4 + 24
|
|
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;
|
|
2641
2925
|
},
|
|
2642
2926
|
init: function () {
|
|
2643
|
-
emnapiAWMT.
|
|
2644
|
-
emnapiAWMT.runningWorkers = [];
|
|
2645
|
-
emnapiAWMT.workQueue = [];
|
|
2927
|
+
emnapiAWMT.pool = [];
|
|
2646
2928
|
emnapiAWMT.workerReady = null;
|
|
2929
|
+
if (typeof PThread !== 'undefined') {
|
|
2930
|
+
PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
|
|
2931
|
+
Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
|
|
2932
|
+
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
2933
|
+
PThread.getNewWorker = function () {
|
|
2934
|
+
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
2935
|
+
emnapiAWMT.addListener(r);
|
|
2936
|
+
return r;
|
|
2937
|
+
};
|
|
2938
|
+
}
|
|
2647
2939
|
},
|
|
2648
2940
|
addListener: function (worker) {
|
|
2649
2941
|
if (!worker)
|
|
@@ -2657,18 +2949,8 @@
|
|
|
2657
2949
|
var type = __emnapi__.type;
|
|
2658
2950
|
var payload = __emnapi__.payload;
|
|
2659
2951
|
if (type === 'async-work-complete') {
|
|
2660
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
2661
|
-
emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
|
|
2662
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
2663
|
-
emnapiAWMT.checkIdleWorker();
|
|
2664
2952
|
emnapiAWMT.callComplete(payload.work, 0 /* napi_status.napi_ok */);
|
|
2665
2953
|
}
|
|
2666
|
-
else if (type === 'async-work-queue') {
|
|
2667
|
-
emnapiAWMT.scheduleWork(payload.work);
|
|
2668
|
-
}
|
|
2669
|
-
else if (type === 'async-work-cancel') {
|
|
2670
|
-
emnapiAWMT.cancelWork(payload.work);
|
|
2671
|
-
}
|
|
2672
2954
|
}
|
|
2673
2955
|
};
|
|
2674
2956
|
var dispose = function () {
|
|
@@ -2689,6 +2971,26 @@
|
|
|
2689
2971
|
}
|
|
2690
2972
|
return true;
|
|
2691
2973
|
},
|
|
2974
|
+
initGlobal: function () {
|
|
2975
|
+
if (!emnapiAWMT.globalAddress) {
|
|
2976
|
+
emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
|
|
2977
|
+
emnapiAWMT.globalAddress >>>= 0;
|
|
2978
|
+
var size = emnapiAWMT.globalOffset.end;
|
|
2979
|
+
var addr = emnapiAWMT.globalAddress;
|
|
2980
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
|
|
2981
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
|
|
2982
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
|
|
2983
|
+
}
|
|
2984
|
+
},
|
|
2985
|
+
terminateWorkers: function () {
|
|
2986
|
+
emnapiAWMT.pool.forEach(function (w) {
|
|
2987
|
+
var _a, _b;
|
|
2988
|
+
(_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
2989
|
+
(_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
2990
|
+
w.terminate();
|
|
2991
|
+
});
|
|
2992
|
+
emnapiAWMT.pool.length = 0;
|
|
2993
|
+
},
|
|
2692
2994
|
initWorkers: function (n) {
|
|
2693
2995
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
2694
2996
|
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
@@ -2696,137 +2998,212 @@
|
|
|
2696
2998
|
}
|
|
2697
2999
|
if (emnapiAWMT.workerReady)
|
|
2698
3000
|
return emnapiAWMT.workerReady;
|
|
2699
|
-
if (typeof onCreateWorker !== 'function') {
|
|
2700
|
-
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
2701
|
-
}
|
|
2702
|
-
var promises = [];
|
|
2703
|
-
var args = [];
|
|
2704
3001
|
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
2705
3002
|
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
2706
3003
|
}
|
|
3004
|
+
var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
|
|
3005
|
+
var args = [];
|
|
3006
|
+
emnapiAWMT.initGlobal();
|
|
2707
3007
|
for (var i = 0; i < n; ++i) {
|
|
2708
|
-
args.push(
|
|
3008
|
+
args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
|
|
2709
3009
|
}
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
var p = PThread.loadWasmModuleToWorker(worker);
|
|
2714
|
-
emnapiAWMT.addListener(worker);
|
|
2715
|
-
promises.push(p.then(function () {
|
|
2716
|
-
if (typeof worker.unref === 'function') {
|
|
2717
|
-
worker.unref();
|
|
2718
|
-
}
|
|
2719
|
-
}));
|
|
2720
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
2721
|
-
var arg = args[i];
|
|
2722
|
-
worker.threadBlockBase = arg;
|
|
2723
|
-
worker.postMessage({
|
|
2724
|
-
__emnapi__: {
|
|
2725
|
-
type: 'async-worker-init',
|
|
2726
|
-
payload: { arg: arg }
|
|
2727
|
-
}
|
|
2728
|
-
});
|
|
2729
|
-
};
|
|
2730
|
-
for (var i = 0; i < n; ++i) {
|
|
2731
|
-
_loop_1(i);
|
|
3010
|
+
var promises = args.map(function (index) {
|
|
3011
|
+
if (index === 0) {
|
|
3012
|
+
return Promise.reject(new Error('Failed to create async worker'));
|
|
2732
3013
|
}
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
_free(arg);
|
|
3014
|
+
var worker;
|
|
3015
|
+
if (index < 0) {
|
|
3016
|
+
worker = emnapiAWMT.pool[-index - 1];
|
|
3017
|
+
if (worker)
|
|
3018
|
+
return worker.whenLoaded;
|
|
2739
3019
|
}
|
|
2740
|
-
|
|
2741
|
-
|
|
3020
|
+
index >>>= 0;
|
|
3021
|
+
var tidOffset = 20;
|
|
3022
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
|
|
3023
|
+
var tid = view.getInt32(index + tidOffset, true);
|
|
3024
|
+
worker = PThread.pthreads[tid];
|
|
3025
|
+
return worker.whenLoaded;
|
|
3026
|
+
});
|
|
2742
3027
|
emnapiAWMT.workerReady = Promise.all(promises);
|
|
2743
3028
|
return emnapiAWMT.workerReady;
|
|
2744
3029
|
},
|
|
2745
|
-
checkIdleWorker: function () {
|
|
2746
|
-
if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
|
|
2747
|
-
var worker = emnapiAWMT.unusedWorkers.shift();
|
|
2748
|
-
var work = emnapiAWMT.workQueue.shift();
|
|
2749
|
-
emnapiAWMT.runningWorkers.push(worker);
|
|
2750
|
-
worker.postMessage({
|
|
2751
|
-
__emnapi__: {
|
|
2752
|
-
type: 'async-work-execute',
|
|
2753
|
-
payload: { work: work }
|
|
2754
|
-
}
|
|
2755
|
-
});
|
|
2756
|
-
}
|
|
2757
|
-
},
|
|
2758
3030
|
getResource: function (work) {
|
|
2759
|
-
|
|
3031
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
|
|
3032
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3033
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
|
|
2760
3034
|
},
|
|
2761
3035
|
getExecute: function (work) {
|
|
2762
|
-
|
|
3036
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
|
|
3037
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3038
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
|
|
2763
3039
|
},
|
|
2764
3040
|
getComplete: function (work) {
|
|
2765
|
-
|
|
3041
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
|
|
3042
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3043
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
|
|
2766
3044
|
},
|
|
2767
3045
|
getEnv: function (work) {
|
|
2768
|
-
|
|
3046
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
|
|
3047
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3048
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
|
|
2769
3049
|
},
|
|
2770
3050
|
getData: function (work) {
|
|
2771
|
-
|
|
3051
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
|
|
3052
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3053
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
|
|
3054
|
+
},
|
|
3055
|
+
getMutex: function () {
|
|
3056
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
|
|
3057
|
+
var mutex = {
|
|
3058
|
+
lock: function () {
|
|
3059
|
+
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
3060
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
3061
|
+
if (isBrowserMain) {
|
|
3062
|
+
while (true) {
|
|
3063
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
3064
|
+
if (oldValue === 0) {
|
|
3065
|
+
return;
|
|
3066
|
+
}
|
|
3067
|
+
}
|
|
3068
|
+
}
|
|
3069
|
+
else {
|
|
3070
|
+
while (true) {
|
|
3071
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
3072
|
+
if (oldValue === 0) {
|
|
3073
|
+
return;
|
|
3074
|
+
}
|
|
3075
|
+
Atomics.wait(i32a, 0, 10);
|
|
3076
|
+
}
|
|
3077
|
+
}
|
|
3078
|
+
},
|
|
3079
|
+
unlock: function () {
|
|
3080
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
3081
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
3082
|
+
if (oldValue !== 10) {
|
|
3083
|
+
throw new Error('Tried to unlock while not holding the mutex');
|
|
3084
|
+
}
|
|
3085
|
+
Atomics.notify(i32a, 0, 1);
|
|
3086
|
+
},
|
|
3087
|
+
execute: function (fn) {
|
|
3088
|
+
mutex.lock();
|
|
3089
|
+
try {
|
|
3090
|
+
return fn();
|
|
3091
|
+
}
|
|
3092
|
+
finally {
|
|
3093
|
+
mutex.unlock();
|
|
3094
|
+
}
|
|
3095
|
+
}
|
|
3096
|
+
};
|
|
3097
|
+
return mutex;
|
|
3098
|
+
},
|
|
3099
|
+
getCond: function () {
|
|
3100
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
|
|
3101
|
+
var mutex = emnapiAWMT.getMutex();
|
|
3102
|
+
var cond = {
|
|
3103
|
+
wait: function () {
|
|
3104
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
3105
|
+
var value = Atomics.load(i32a, 0);
|
|
3106
|
+
mutex.unlock();
|
|
3107
|
+
Atomics.wait(i32a, 0, value);
|
|
3108
|
+
mutex.lock();
|
|
3109
|
+
},
|
|
3110
|
+
signal: function () {
|
|
3111
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
3112
|
+
Atomics.add(i32a, 0, 1);
|
|
3113
|
+
Atomics.notify(i32a, 0, 1);
|
|
3114
|
+
}
|
|
3115
|
+
};
|
|
3116
|
+
return cond;
|
|
3117
|
+
},
|
|
3118
|
+
queueInit: function (q) {
|
|
3119
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
3120
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3121
|
+
HEAP_DATA_VIEW.setUint32(q, q, true);
|
|
3122
|
+
HEAP_DATA_VIEW.setUint32(q + 4, q, true);
|
|
3123
|
+
},
|
|
3124
|
+
queueInsertTail: function (h, q) {
|
|
3125
|
+
emnapiAWMT.ensureBufferFor(h + 4 + 4);
|
|
3126
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
3127
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3128
|
+
HEAP_DATA_VIEW.setUint32(q, h, true);
|
|
3129
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3130
|
+
var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
|
|
3131
|
+
HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
|
|
3132
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3133
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
3134
|
+
HEAP_DATA_VIEW.setUint32(qprev, q, true);
|
|
3135
|
+
HEAP_DATA_VIEW.setUint32(h + 4, q, true);
|
|
3136
|
+
},
|
|
3137
|
+
queueRemove: function (q) {
|
|
3138
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
3139
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3140
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3141
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
3142
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3143
|
+
var qnext = HEAP_DATA_VIEW.getUint32(q, true);
|
|
3144
|
+
HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
|
|
3145
|
+
HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
|
|
3146
|
+
},
|
|
3147
|
+
queueEmpty: function (q) {
|
|
3148
|
+
emnapiAWMT.ensureBufferFor(q + 4);
|
|
3149
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3150
|
+
// eslint-disable-next-line eqeqeq
|
|
3151
|
+
return q == HEAP_DATA_VIEW.getUint32(q, true);
|
|
2772
3152
|
},
|
|
2773
3153
|
scheduleWork: function (work) {
|
|
2774
3154
|
var _a;
|
|
2775
|
-
if (
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
}
|
|
3155
|
+
if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
|
|
3156
|
+
emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
|
|
3157
|
+
emnapiAWMT.workerReady.ready = true;
|
|
3158
|
+
}).catch(function (err) {
|
|
3159
|
+
emnapiAWMT.workerReady = null;
|
|
3160
|
+
throw err;
|
|
2782
3161
|
});
|
|
2783
|
-
return;
|
|
2784
3162
|
}
|
|
2785
3163
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
2786
|
-
emnapiAWMT.
|
|
2787
|
-
|
|
2788
|
-
|
|
3164
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
3165
|
+
Atomics.store(statusBuffer, 0, 0 /* AsyncWorkStatus.Pending */);
|
|
3166
|
+
var mutex = emnapiAWMT.getMutex();
|
|
3167
|
+
var cond = emnapiAWMT.getCond();
|
|
3168
|
+
mutex.lock();
|
|
3169
|
+
try {
|
|
3170
|
+
emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
|
|
2789
3171
|
}
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
}, fail);
|
|
2800
|
-
}
|
|
2801
|
-
catch (err) {
|
|
2802
|
-
fail(err);
|
|
2803
|
-
}
|
|
3172
|
+
catch (err) {
|
|
3173
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
3174
|
+
mutex.unlock();
|
|
3175
|
+
throw err;
|
|
3176
|
+
}
|
|
3177
|
+
emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
|
|
3178
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3179
|
+
if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
|
|
3180
|
+
cond.signal();
|
|
2804
3181
|
}
|
|
3182
|
+
mutex.unlock();
|
|
2805
3183
|
},
|
|
2806
3184
|
cancelWork: function (work) {
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
}
|
|
2815
|
-
|
|
3185
|
+
var cancelled = false;
|
|
3186
|
+
emnapiAWMT.getMutex().execute(function () {
|
|
3187
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
|
|
3188
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3189
|
+
cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2 /* AsyncWorkStatus.Completed */;
|
|
3190
|
+
if (cancelled) {
|
|
3191
|
+
emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
|
|
3192
|
+
}
|
|
3193
|
+
});
|
|
3194
|
+
if (!cancelled) {
|
|
3195
|
+
return 9 /* napi_status.napi_generic_failure */;
|
|
2816
3196
|
}
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
emnapiAWMT.workQueue.splice(index, 1);
|
|
2820
|
-
emnapiCtx.feature.setImmediate(function () {
|
|
2821
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
2822
|
-
emnapiAWMT.checkIdleWorker();
|
|
2823
|
-
emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
|
|
2824
|
-
});
|
|
2825
|
-
return 0 /* napi_status.napi_ok */;
|
|
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 */) {
|
|
3198
|
+
return 9 /* napi_status.napi_generic_failure */;
|
|
2826
3199
|
}
|
|
2827
|
-
|
|
3200
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
3201
|
+
emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
|
|
3202
|
+
});
|
|
3203
|
+
return 0 /* napi_status.napi_ok */;
|
|
2828
3204
|
},
|
|
2829
3205
|
callComplete: function (work, status) {
|
|
3206
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
2830
3207
|
var complete = emnapiAWMT.getComplete(work);
|
|
2831
3208
|
var env = emnapiAWMT.getEnv(work);
|
|
2832
3209
|
var data = emnapiAWMT.getData(work);
|
|
@@ -2844,7 +3221,7 @@
|
|
|
2844
3221
|
var resource = emnapiAWMT.getResource(work);
|
|
2845
3222
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
2846
3223
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
2847
|
-
var view = new DataView(
|
|
3224
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
2848
3225
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
2849
3226
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
2850
3227
|
emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
|
|
@@ -2861,6 +3238,7 @@
|
|
|
2861
3238
|
}
|
|
2862
3239
|
}
|
|
2863
3240
|
};
|
|
3241
|
+
emnapiAWMT.init();
|
|
2864
3242
|
/** @__sig ippppppp */
|
|
2865
3243
|
var napi_create_async_work = singleThreadAsyncWork
|
|
2866
3244
|
? function (env, resource, resource_name, execute, complete, data, result) {
|
|
@@ -2885,8 +3263,9 @@
|
|
|
2885
3263
|
var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
|
|
2886
3264
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2887
3265
|
var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
|
|
3266
|
+
result >>>= 0;
|
|
2888
3267
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2889
|
-
HEAP_DATA_VIEW.
|
|
3268
|
+
HEAP_DATA_VIEW.setUint32(result, id, true);
|
|
2890
3269
|
return envObject.clearLastError();
|
|
2891
3270
|
}
|
|
2892
3271
|
: function (env, resource, resource_name, execute, complete, data, result) {
|
|
@@ -2912,19 +3291,22 @@
|
|
|
2912
3291
|
var aw = _malloc(sizeofAW);
|
|
2913
3292
|
if (!aw)
|
|
2914
3293
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
2915
|
-
|
|
3294
|
+
aw >>>= 0;
|
|
3295
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
|
|
2916
3296
|
var s = envObject.ensureHandleId(resourceObject);
|
|
2917
3297
|
var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1 /* ReferenceOwnership.kUserland */);
|
|
2918
3298
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2919
3299
|
var resource_ = resourceRef.id;
|
|
2920
3300
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2921
|
-
HEAP_DATA_VIEW.
|
|
3301
|
+
HEAP_DATA_VIEW.setUint32(aw, resource_, true);
|
|
2922
3302
|
_emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id);
|
|
2923
|
-
HEAP_DATA_VIEW.
|
|
2924
|
-
HEAP_DATA_VIEW.
|
|
2925
|
-
HEAP_DATA_VIEW.
|
|
2926
|
-
HEAP_DATA_VIEW.
|
|
2927
|
-
|
|
3303
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true);
|
|
3304
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
|
|
3305
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
|
|
3306
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
|
|
3307
|
+
emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
|
|
3308
|
+
result >>>= 0;
|
|
3309
|
+
HEAP_DATA_VIEW.setUint32(result, aw, true);
|
|
2928
3310
|
return envObject.clearLastError();
|
|
2929
3311
|
};
|
|
2930
3312
|
/** @__sig ipp */
|
|
@@ -2937,6 +3319,7 @@
|
|
|
2937
3319
|
envObject.checkGCAccess();
|
|
2938
3320
|
if (!work)
|
|
2939
3321
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3322
|
+
work >>>= 0;
|
|
2940
3323
|
emnapiAWST.remove(work);
|
|
2941
3324
|
return envObject.clearLastError();
|
|
2942
3325
|
}
|
|
@@ -2948,10 +3331,11 @@
|
|
|
2948
3331
|
envObject.checkGCAccess();
|
|
2949
3332
|
if (!work)
|
|
2950
3333
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3334
|
+
work >>>= 0;
|
|
2951
3335
|
var resource = emnapiAWMT.getResource(work);
|
|
2952
3336
|
emnapiCtx.refStore.get(resource).dispose();
|
|
2953
3337
|
if (emnapiNodeBinding) {
|
|
2954
|
-
var view = new DataView(
|
|
3338
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
2955
3339
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
2956
3340
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
2957
3341
|
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
@@ -2967,6 +3351,7 @@
|
|
|
2967
3351
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2968
3352
|
if (!work)
|
|
2969
3353
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3354
|
+
work >>>= 0;
|
|
2970
3355
|
emnapiAWST.queue(work);
|
|
2971
3356
|
return envObject.clearLastError();
|
|
2972
3357
|
}
|
|
@@ -2976,6 +3361,7 @@
|
|
|
2976
3361
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2977
3362
|
if (!work)
|
|
2978
3363
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3364
|
+
work >>>= 0;
|
|
2979
3365
|
emnapiAWMT.scheduleWork(work);
|
|
2980
3366
|
return envObject.clearLastError();
|
|
2981
3367
|
};
|
|
@@ -2987,6 +3373,7 @@
|
|
|
2987
3373
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2988
3374
|
if (!work)
|
|
2989
3375
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3376
|
+
work >>>= 0;
|
|
2990
3377
|
var status = emnapiAWST.cancel(work);
|
|
2991
3378
|
if (status === 0 /* napi_status.napi_ok */)
|
|
2992
3379
|
return envObject.clearLastError();
|
|
@@ -2998,42 +3385,129 @@
|
|
|
2998
3385
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2999
3386
|
if (!work)
|
|
3000
3387
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3388
|
+
work >>>= 0;
|
|
3001
3389
|
var status = emnapiAWMT.cancelWork(work);
|
|
3002
3390
|
if (status === 0 /* napi_status.napi_ok */)
|
|
3003
3391
|
return envObject.clearLastError();
|
|
3004
3392
|
return envObject.setLastError(status);
|
|
3005
3393
|
};
|
|
3006
|
-
|
|
3394
|
+
/** @__sig pp */
|
|
3395
|
+
function _emnapi_async_worker(globalAddress) {
|
|
3396
|
+
globalAddress >>>= 0;
|
|
3397
|
+
emnapiAWMT.globalAddress = globalAddress;
|
|
3398
|
+
var mutex = emnapiAWMT.getMutex();
|
|
3399
|
+
var cond = emnapiAWMT.getCond();
|
|
3400
|
+
mutex.lock();
|
|
3401
|
+
var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
|
|
3402
|
+
var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
|
|
3403
|
+
var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
|
|
3404
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3405
|
+
for (;;) {
|
|
3406
|
+
emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
|
|
3407
|
+
while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
|
|
3408
|
+
Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
3409
|
+
cond.wait();
|
|
3410
|
+
Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
3411
|
+
}
|
|
3412
|
+
var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
|
|
3413
|
+
if (q === exitMessageAddr) {
|
|
3414
|
+
cond.signal();
|
|
3415
|
+
mutex.unlock();
|
|
3416
|
+
break;
|
|
3417
|
+
}
|
|
3418
|
+
var work = q - emnapiAWMT.offset.queue;
|
|
3419
|
+
emnapiAWMT.queueRemove(q);
|
|
3420
|
+
emnapiAWMT.queueInit(q);
|
|
3421
|
+
mutex.unlock();
|
|
3422
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
3423
|
+
if (Atomics.load(statusBuffer, 0) === 1 /* AsyncWorkStatus.Cancelled */) {
|
|
3424
|
+
abort('unreachable');
|
|
3425
|
+
}
|
|
3426
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3427
|
+
var execute = emnapiAWMT.getExecute(work);
|
|
3428
|
+
var env = emnapiAWMT.getEnv(work);
|
|
3429
|
+
var data = emnapiAWMT.getData(work);
|
|
3430
|
+
(wasmTable.get(execute))(env, data);
|
|
3431
|
+
Atomics.store(statusBuffer, 0, 2 /* AsyncWorkStatus.Completed */);
|
|
3432
|
+
var postMessage_1 = napiModule.postMessage;
|
|
3433
|
+
postMessage_1({
|
|
3434
|
+
__emnapi__: {
|
|
3435
|
+
type: 'async-work-complete',
|
|
3436
|
+
payload: { work: work }
|
|
3437
|
+
}
|
|
3438
|
+
});
|
|
3439
|
+
mutex.lock();
|
|
3440
|
+
}
|
|
3441
|
+
return 0;
|
|
3442
|
+
}
|
|
3443
|
+
/** @__sig ipp */
|
|
3444
|
+
function _emnapi_spawn_worker(f, globalAddress) {
|
|
3445
|
+
if (typeof onCreateWorker !== 'function') {
|
|
3446
|
+
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
3447
|
+
}
|
|
3448
|
+
var promises = [];
|
|
3449
|
+
var args = [];
|
|
3450
|
+
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
3451
|
+
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
3452
|
+
}
|
|
3453
|
+
args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
|
|
3454
|
+
var handleError = function (e) {
|
|
3455
|
+
if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
|
|
3456
|
+
emnapiAWMT.terminateWorkers();
|
|
3457
|
+
}
|
|
3458
|
+
};
|
|
3459
|
+
var ret;
|
|
3460
|
+
try {
|
|
3461
|
+
var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
|
|
3462
|
+
var p = PThread.loadWasmModuleToWorker(worker_1);
|
|
3463
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
3464
|
+
worker_1.on('error', handleError);
|
|
3465
|
+
}
|
|
3466
|
+
else {
|
|
3467
|
+
worker_1.addEventListener('error', handleError, false);
|
|
3468
|
+
}
|
|
3469
|
+
emnapiAWMT.addListener(worker_1);
|
|
3470
|
+
emnapiTSFN.addListener(worker_1);
|
|
3471
|
+
promises.push(p.then(function () {
|
|
3472
|
+
if (typeof worker_1.unref === 'function') {
|
|
3473
|
+
worker_1.unref();
|
|
3474
|
+
}
|
|
3475
|
+
}));
|
|
3476
|
+
ret = emnapiAWMT.pool.push(worker_1) - 1;
|
|
3477
|
+
var arg = args[0];
|
|
3478
|
+
worker_1.threadBlockBase = arg;
|
|
3479
|
+
worker_1.postMessage({
|
|
3480
|
+
__emnapi__: {
|
|
3481
|
+
type: 'async-worker-init',
|
|
3482
|
+
payload: { arg: arg, func: [f, globalAddress] }
|
|
3483
|
+
}
|
|
3484
|
+
});
|
|
3485
|
+
}
|
|
3486
|
+
catch (err) {
|
|
3487
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3488
|
+
var arg = args[0];
|
|
3489
|
+
_free(arg);
|
|
3490
|
+
throw err;
|
|
3491
|
+
}
|
|
3492
|
+
return ret;
|
|
3493
|
+
}
|
|
3494
|
+
function initWorker(startArg, func) {
|
|
3007
3495
|
if (napiModule.childThread) {
|
|
3008
3496
|
if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
|
|
3009
3497
|
throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
|
|
3010
3498
|
}
|
|
3011
3499
|
wasmInstance.exports.emnapi_async_worker_init(startArg);
|
|
3500
|
+
(wasmTable.get(func[0]))(func[1]);
|
|
3012
3501
|
}
|
|
3013
3502
|
else {
|
|
3014
3503
|
throw new Error('startThread is only available in child threads');
|
|
3015
3504
|
}
|
|
3016
3505
|
}
|
|
3017
|
-
function executeAsyncWork(work) {
|
|
3018
|
-
if (!ENVIRONMENT_IS_PTHREAD)
|
|
3019
|
-
return;
|
|
3020
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3021
|
-
var execute = emnapiAWMT.getExecute(work);
|
|
3022
|
-
var env = emnapiAWMT.getEnv(work);
|
|
3023
|
-
var data = emnapiAWMT.getData(work);
|
|
3024
|
-
(wasmTable.get(execute))(env, data);
|
|
3025
|
-
var postMessage = napiModule.postMessage;
|
|
3026
|
-
postMessage({
|
|
3027
|
-
__emnapi__: {
|
|
3028
|
-
type: 'async-work-complete',
|
|
3029
|
-
payload: { work: work }
|
|
3030
|
-
}
|
|
3031
|
-
});
|
|
3032
|
-
}
|
|
3033
3506
|
napiModule.initWorker = initWorker;
|
|
3034
|
-
napiModule.executeAsyncWork = executeAsyncWork;
|
|
3035
3507
|
var asyncWorkMod = /*#__PURE__*/ Object.freeze({
|
|
3036
3508
|
__proto__: null,
|
|
3509
|
+
_emnapi_async_worker: _emnapi_async_worker,
|
|
3510
|
+
_emnapi_spawn_worker: _emnapi_spawn_worker,
|
|
3037
3511
|
napi_cancel_async_work: napi_cancel_async_work,
|
|
3038
3512
|
napi_create_async_work: napi_create_async_work,
|
|
3039
3513
|
napi_delete_async_work: napi_delete_async_work,
|
|
@@ -3056,6 +3530,10 @@
|
|
|
3056
3530
|
emnapiExternalMemory.table = new WeakMap();
|
|
3057
3531
|
emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
|
|
3058
3532
|
},
|
|
3533
|
+
isSharedArrayBuffer: function (value) {
|
|
3534
|
+
return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
|
|
3535
|
+
(Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
|
|
3536
|
+
},
|
|
3059
3537
|
isDetachedArrayBuffer: function (arrayBuffer) {
|
|
3060
3538
|
if (arrayBuffer.byteLength === 0) {
|
|
3061
3539
|
try {
|
|
@@ -3099,6 +3577,7 @@
|
|
|
3099
3577
|
var pointer = _malloc(arrayBuffer.byteLength);
|
|
3100
3578
|
if (!pointer)
|
|
3101
3579
|
throw new Error('Out of memory');
|
|
3580
|
+
pointer >>>= 0;
|
|
3102
3581
|
new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
|
|
3103
3582
|
info.address = pointer;
|
|
3104
3583
|
info.ownership = emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
|
|
@@ -3120,8 +3599,7 @@
|
|
|
3120
3599
|
}
|
|
3121
3600
|
return view;
|
|
3122
3601
|
}
|
|
3123
|
-
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
|
|
3124
|
-
((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
|
|
3602
|
+
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
|
|
3125
3603
|
if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
|
|
3126
3604
|
var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
|
|
3127
3605
|
var Ctor = info.Ctor;
|
|
@@ -3151,6 +3629,75 @@
|
|
|
3151
3629
|
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
3152
3630
|
}
|
|
3153
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
|
+
};
|
|
3154
3701
|
/* eslint-disable @typescript-eslint/indent */
|
|
3155
3702
|
/**
|
|
3156
3703
|
* @__postset
|
|
@@ -3261,7 +3808,7 @@
|
|
|
3261
3808
|
ptr >>>= 0;
|
|
3262
3809
|
var HEAPU8 = new Uint8Array(wasmMemory.buffer);
|
|
3263
3810
|
var end = ptr;
|
|
3264
|
-
if (length === -1) {
|
|
3811
|
+
if (length === -1 || length === 4294967295) {
|
|
3265
3812
|
for (; HEAPU8[end];)
|
|
3266
3813
|
++end;
|
|
3267
3814
|
}
|
|
@@ -3352,12 +3899,12 @@
|
|
|
3352
3899
|
return '';
|
|
3353
3900
|
ptr >>>= 0;
|
|
3354
3901
|
var end = ptr;
|
|
3355
|
-
if (length === -1) {
|
|
3356
|
-
var idx = end
|
|
3902
|
+
if (length === -1 || length === 4294967295) {
|
|
3903
|
+
var idx = end >>> 1;
|
|
3357
3904
|
var HEAPU16 = new Uint16Array(wasmMemory.buffer);
|
|
3358
3905
|
while (HEAPU16[idx])
|
|
3359
3906
|
++idx;
|
|
3360
|
-
end = idx << 1;
|
|
3907
|
+
end = (idx << 1) >>> 0;
|
|
3361
3908
|
}
|
|
3362
3909
|
else {
|
|
3363
3910
|
end = ptr + (length >>> 0) * 2;
|
|
@@ -3390,12 +3937,13 @@
|
|
|
3390
3937
|
return outPtr - startPtr;
|
|
3391
3938
|
},
|
|
3392
3939
|
newString: function (env, str, length, result, stringMaker) {
|
|
3940
|
+
length >>>= 0;
|
|
3393
3941
|
if (!env)
|
|
3394
3942
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3395
3943
|
// @ts-expect-error
|
|
3396
3944
|
var envObject = emnapiCtx.envStore.get(env);
|
|
3397
3945
|
envObject.checkGCAccess();
|
|
3398
|
-
var autoLength = length === -1;
|
|
3946
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
3399
3947
|
var sizelength = length >>> 0;
|
|
3400
3948
|
if (length !== 0) {
|
|
3401
3949
|
if (!str)
|
|
@@ -3405,20 +3953,23 @@
|
|
|
3405
3953
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3406
3954
|
if (!(autoLength || (sizelength <= 2147483647)))
|
|
3407
3955
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3956
|
+
str >>>= 0;
|
|
3408
3957
|
var strValue = stringMaker(str, autoLength, sizelength);
|
|
3958
|
+
result >>>= 0;
|
|
3409
3959
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3410
3960
|
var value = emnapiCtx.addToCurrentScope(strValue).id;
|
|
3411
3961
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3412
|
-
HEAP_DATA_VIEW.
|
|
3962
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3413
3963
|
return envObject.clearLastError();
|
|
3414
3964
|
},
|
|
3415
3965
|
newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
|
|
3966
|
+
length >>>= 0;
|
|
3416
3967
|
if (!env)
|
|
3417
3968
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3418
3969
|
// @ts-expect-error
|
|
3419
3970
|
var envObject = emnapiCtx.envStore.get(env);
|
|
3420
3971
|
envObject.checkGCAccess();
|
|
3421
|
-
var autoLength = length === -1;
|
|
3972
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
3422
3973
|
var sizelength = length >>> 0;
|
|
3423
3974
|
if (length !== 0) {
|
|
3424
3975
|
if (!str)
|
|
@@ -3464,6 +4015,7 @@
|
|
|
3464
4015
|
if (!handle.isArray()) {
|
|
3465
4016
|
return envObject.setLastError(8 /* napi_status.napi_array_expected */);
|
|
3466
4017
|
}
|
|
4018
|
+
result >>>= 0;
|
|
3467
4019
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3468
4020
|
var v = handle.value.length >>> 0;
|
|
3469
4021
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3487,19 +4039,59 @@
|
|
|
3487
4039
|
if (!arraybuffer)
|
|
3488
4040
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3489
4041
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
3490
|
-
if (!handle.isArrayBuffer()) {
|
|
4042
|
+
if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
3491
4043
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3492
4044
|
}
|
|
3493
4045
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3494
4046
|
if (data) {
|
|
4047
|
+
data >>>= 0;
|
|
3495
4048
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3496
4049
|
var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
|
|
3497
|
-
HEAP_DATA_VIEW.
|
|
4050
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
4051
|
+
}
|
|
4052
|
+
if (byte_length) {
|
|
4053
|
+
byte_length >>>= 0;
|
|
4054
|
+
HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
|
|
4055
|
+
}
|
|
4056
|
+
return envObject.clearLastError();
|
|
4057
|
+
}
|
|
4058
|
+
/**
|
|
4059
|
+
* @__sig ippp
|
|
4060
|
+
*/
|
|
4061
|
+
function node_api_set_prototype(env, object, value) {
|
|
4062
|
+
if (!env)
|
|
4063
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
4064
|
+
// @ts-expect-error
|
|
4065
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4066
|
+
envObject.checkGCAccess();
|
|
4067
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4068
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4069
|
+
if (!envObject.canCallIntoJs())
|
|
4070
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
4071
|
+
envObject.clearLastError();
|
|
4072
|
+
try {
|
|
4073
|
+
if (!value)
|
|
4074
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4075
|
+
var obj = emnapiCtx.handleStore.get(object).value;
|
|
4076
|
+
if (obj == null) {
|
|
4077
|
+
throw new TypeError('Cannot convert undefined or null to object');
|
|
4078
|
+
}
|
|
4079
|
+
var type = typeof obj;
|
|
4080
|
+
var v = void 0;
|
|
4081
|
+
try {
|
|
4082
|
+
v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
|
|
4083
|
+
}
|
|
4084
|
+
catch (_) {
|
|
4085
|
+
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
4086
|
+
}
|
|
4087
|
+
var val = emnapiCtx.handleStore.get(value).value;
|
|
4088
|
+
Object.setPrototypeOf(v, val);
|
|
4089
|
+
return envObject.getReturnStatus();
|
|
3498
4090
|
}
|
|
3499
|
-
|
|
3500
|
-
|
|
4091
|
+
catch (err) {
|
|
4092
|
+
envObject.tryCatch.setError(err);
|
|
4093
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3501
4094
|
}
|
|
3502
|
-
return envObject.clearLastError();
|
|
3503
4095
|
}
|
|
3504
4096
|
/**
|
|
3505
4097
|
* @__sig ippp
|
|
@@ -3531,10 +4123,11 @@
|
|
|
3531
4123
|
catch (_) {
|
|
3532
4124
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
3533
4125
|
}
|
|
4126
|
+
result >>>= 0;
|
|
3534
4127
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3535
4128
|
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
3536
4129
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3537
|
-
HEAP_DATA_VIEW.
|
|
4130
|
+
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
3538
4131
|
return envObject.getReturnStatus();
|
|
3539
4132
|
}
|
|
3540
4133
|
catch (err) {
|
|
@@ -3560,6 +4153,7 @@
|
|
|
3560
4153
|
var v = handle.value;
|
|
3561
4154
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3562
4155
|
if (type) {
|
|
4156
|
+
type >>>= 0;
|
|
3563
4157
|
var t = void 0;
|
|
3564
4158
|
if (v instanceof Int8Array) {
|
|
3565
4159
|
t = 0 /* napi_typedarray_type.napi_int8_array */;
|
|
@@ -3582,6 +4176,9 @@
|
|
|
3582
4176
|
else if (v instanceof Uint32Array) {
|
|
3583
4177
|
t = 6 /* napi_typedarray_type.napi_uint32_array */;
|
|
3584
4178
|
}
|
|
4179
|
+
else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
|
|
4180
|
+
t = 11 /* napi_typedarray_type.napi_float16_array */;
|
|
4181
|
+
}
|
|
3585
4182
|
else if (v instanceof Float32Array) {
|
|
3586
4183
|
t = 7 /* napi_typedarray_type.napi_float32_array */;
|
|
3587
4184
|
}
|
|
@@ -3600,24 +4197,27 @@
|
|
|
3600
4197
|
}
|
|
3601
4198
|
HEAP_DATA_VIEW.setInt32(type, t, true);
|
|
3602
4199
|
}
|
|
4200
|
+
v = emnapiExternalMemory.getOrUpdateMemoryView(v);
|
|
3603
4201
|
if (length) {
|
|
4202
|
+
length >>>= 0;
|
|
3604
4203
|
HEAP_DATA_VIEW.setUint32(length, v.length, true);
|
|
3605
4204
|
}
|
|
3606
|
-
var buffer;
|
|
3607
4205
|
if (data || arraybuffer) {
|
|
3608
|
-
buffer = v.buffer;
|
|
3609
4206
|
if (data) {
|
|
4207
|
+
data >>>= 0;
|
|
3610
4208
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3611
4209
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
3612
|
-
HEAP_DATA_VIEW.
|
|
4210
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
3613
4211
|
}
|
|
3614
4212
|
if (arraybuffer) {
|
|
4213
|
+
arraybuffer >>>= 0;
|
|
3615
4214
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3616
|
-
var ab = envObject.ensureHandleId(buffer);
|
|
3617
|
-
HEAP_DATA_VIEW.
|
|
4215
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
4216
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
3618
4217
|
}
|
|
3619
4218
|
}
|
|
3620
4219
|
if (byte_offset) {
|
|
4220
|
+
byte_offset >>>= 0;
|
|
3621
4221
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
3622
4222
|
}
|
|
3623
4223
|
return envObject.clearLastError();
|
|
@@ -3656,26 +4256,28 @@
|
|
|
3656
4256
|
if (!handle.isDataView()) {
|
|
3657
4257
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3658
4258
|
}
|
|
3659
|
-
var v = handle.value;
|
|
4259
|
+
var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
|
|
3660
4260
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3661
4261
|
if (byte_length) {
|
|
4262
|
+
byte_length >>>= 0;
|
|
3662
4263
|
HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
|
|
3663
4264
|
}
|
|
3664
|
-
var buffer;
|
|
3665
4265
|
if (data || arraybuffer) {
|
|
3666
|
-
buffer = v.buffer;
|
|
3667
4266
|
if (data) {
|
|
4267
|
+
data >>>= 0;
|
|
3668
4268
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3669
4269
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
3670
|
-
HEAP_DATA_VIEW.
|
|
4270
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
3671
4271
|
}
|
|
3672
4272
|
if (arraybuffer) {
|
|
4273
|
+
arraybuffer >>>= 0;
|
|
3673
4274
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3674
|
-
var ab = envObject.ensureHandleId(buffer);
|
|
3675
|
-
HEAP_DATA_VIEW.
|
|
4275
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
4276
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
3676
4277
|
}
|
|
3677
4278
|
}
|
|
3678
4279
|
if (byte_offset) {
|
|
4280
|
+
byte_offset >>>= 0;
|
|
3679
4281
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
3680
4282
|
}
|
|
3681
4283
|
return envObject.clearLastError();
|
|
@@ -3705,6 +4307,7 @@
|
|
|
3705
4307
|
if (!handle.isDate()) {
|
|
3706
4308
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3707
4309
|
}
|
|
4310
|
+
result >>>= 0;
|
|
3708
4311
|
v = handle.value.valueOf();
|
|
3709
4312
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3710
4313
|
HEAP_DATA_VIEW.setFloat64(result, v, true);
|
|
@@ -3732,6 +4335,7 @@
|
|
|
3732
4335
|
if (typeof handle.value !== 'boolean') {
|
|
3733
4336
|
return envObject.setLastError(7 /* napi_status.napi_boolean_expected */);
|
|
3734
4337
|
}
|
|
4338
|
+
result >>>= 0;
|
|
3735
4339
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3736
4340
|
var r = handle.value ? 1 : 0;
|
|
3737
4341
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3755,6 +4359,7 @@
|
|
|
3755
4359
|
if (typeof handle.value !== 'number') {
|
|
3756
4360
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
3757
4361
|
}
|
|
4362
|
+
result >>>= 0;
|
|
3758
4363
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3759
4364
|
var r = handle.value;
|
|
3760
4365
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3784,6 +4389,8 @@
|
|
|
3784
4389
|
if (typeof numberValue !== 'bigint') {
|
|
3785
4390
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
3786
4391
|
}
|
|
4392
|
+
lossless >>>= 0;
|
|
4393
|
+
result >>>= 0;
|
|
3787
4394
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3788
4395
|
if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
|
|
3789
4396
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -3826,6 +4433,8 @@
|
|
|
3826
4433
|
if (typeof numberValue !== 'bigint') {
|
|
3827
4434
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
3828
4435
|
}
|
|
4436
|
+
lossless >>>= 0;
|
|
4437
|
+
result >>>= 0;
|
|
3829
4438
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3830
4439
|
if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
|
|
3831
4440
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -3863,8 +4472,12 @@
|
|
|
3863
4472
|
return envObject.setLastError(17 /* napi_status.napi_bigint_expected */);
|
|
3864
4473
|
}
|
|
3865
4474
|
var isMinus = handle.value < BigInt(0);
|
|
4475
|
+
sign_bit >>>= 0;
|
|
4476
|
+
words >>>= 0;
|
|
4477
|
+
word_count >>>= 0;
|
|
3866
4478
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3867
4479
|
var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
|
|
4480
|
+
word_count_int >>>= 0;
|
|
3868
4481
|
var wordCount = 0;
|
|
3869
4482
|
var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
|
|
3870
4483
|
while (bigintValue !== BigInt(0)) {
|
|
@@ -3918,10 +4531,11 @@
|
|
|
3918
4531
|
if (!handle.isExternal()) {
|
|
3919
4532
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3920
4533
|
}
|
|
4534
|
+
result >>>= 0;
|
|
3921
4535
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3922
4536
|
var p = handle.data();
|
|
3923
4537
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3924
|
-
HEAP_DATA_VIEW.
|
|
4538
|
+
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
3925
4539
|
return envObject.clearLastError();
|
|
3926
4540
|
}
|
|
3927
4541
|
/**
|
|
@@ -3941,6 +4555,7 @@
|
|
|
3941
4555
|
if (typeof handle.value !== 'number') {
|
|
3942
4556
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
3943
4557
|
}
|
|
4558
|
+
result >>>= 0;
|
|
3944
4559
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3945
4560
|
var v = new Int32Array([handle.value])[0];
|
|
3946
4561
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3965,6 +4580,7 @@
|
|
|
3965
4580
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
3966
4581
|
}
|
|
3967
4582
|
var numberValue = handle.value;
|
|
4583
|
+
result >>>= 0;
|
|
3968
4584
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3969
4585
|
if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
|
|
3970
4586
|
HEAP_DATA_VIEW.setInt32(result, 0, true);
|
|
@@ -3994,6 +4610,9 @@
|
|
|
3994
4610
|
envObject.checkGCAccess();
|
|
3995
4611
|
if (!value)
|
|
3996
4612
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4613
|
+
result >>>= 0;
|
|
4614
|
+
buf >>>= 0;
|
|
4615
|
+
buf_size >>>= 0;
|
|
3997
4616
|
buf_size = buf_size >>> 0;
|
|
3998
4617
|
var handle = emnapiCtx.handleStore.get(value);
|
|
3999
4618
|
if (typeof handle.value !== 'string') {
|
|
@@ -4036,6 +4655,9 @@
|
|
|
4036
4655
|
envObject.checkGCAccess();
|
|
4037
4656
|
if (!value)
|
|
4038
4657
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4658
|
+
result >>>= 0;
|
|
4659
|
+
buf >>>= 0;
|
|
4660
|
+
buf_size >>>= 0;
|
|
4039
4661
|
buf_size = buf_size >>> 0;
|
|
4040
4662
|
var handle = emnapiCtx.handleStore.get(value);
|
|
4041
4663
|
if (typeof handle.value !== 'string') {
|
|
@@ -4072,6 +4694,9 @@
|
|
|
4072
4694
|
envObject.checkGCAccess();
|
|
4073
4695
|
if (!value)
|
|
4074
4696
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4697
|
+
result >>>= 0;
|
|
4698
|
+
buf >>>= 0;
|
|
4699
|
+
buf_size >>>= 0;
|
|
4075
4700
|
buf_size = buf_size >>> 0;
|
|
4076
4701
|
var handle = emnapiCtx.handleStore.get(value);
|
|
4077
4702
|
if (typeof handle.value !== 'string') {
|
|
@@ -4112,6 +4737,7 @@
|
|
|
4112
4737
|
if (typeof handle.value !== 'number') {
|
|
4113
4738
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
4114
4739
|
}
|
|
4740
|
+
result >>>= 0;
|
|
4115
4741
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4116
4742
|
var v = new Uint32Array([handle.value])[0];
|
|
4117
4743
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -4138,7 +4764,8 @@
|
|
|
4138
4764
|
napi_get_value_string_latin1: napi_get_value_string_latin1,
|
|
4139
4765
|
napi_get_value_string_utf16: napi_get_value_string_utf16,
|
|
4140
4766
|
napi_get_value_string_utf8: napi_get_value_string_utf8,
|
|
4141
|
-
napi_get_value_uint32: napi_get_value_uint32
|
|
4767
|
+
napi_get_value_uint32: napi_get_value_uint32,
|
|
4768
|
+
node_api_set_prototype: node_api_set_prototype
|
|
4142
4769
|
});
|
|
4143
4770
|
/**
|
|
4144
4771
|
* @__sig ipip
|
|
@@ -4151,10 +4778,11 @@
|
|
|
4151
4778
|
envObject.checkGCAccess();
|
|
4152
4779
|
if (!result)
|
|
4153
4780
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4781
|
+
result >>>= 0;
|
|
4154
4782
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4155
4783
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
4156
4784
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4157
|
-
HEAP_DATA_VIEW.
|
|
4785
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4158
4786
|
return envObject.clearLastError();
|
|
4159
4787
|
}
|
|
4160
4788
|
/**
|
|
@@ -4168,10 +4796,11 @@
|
|
|
4168
4796
|
envObject.checkGCAccess();
|
|
4169
4797
|
if (!result)
|
|
4170
4798
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4799
|
+
result >>>= 0;
|
|
4171
4800
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4172
4801
|
var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
|
|
4173
4802
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4174
|
-
HEAP_DATA_VIEW.
|
|
4803
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4175
4804
|
return envObject.clearLastError();
|
|
4176
4805
|
}
|
|
4177
4806
|
/**
|
|
@@ -4189,8 +4818,9 @@
|
|
|
4189
4818
|
value = Number(low);
|
|
4190
4819
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4191
4820
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
4821
|
+
high >>>= 0;
|
|
4192
4822
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4193
|
-
HEAP_DATA_VIEW.
|
|
4823
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
4194
4824
|
return envObject.clearLastError();
|
|
4195
4825
|
}
|
|
4196
4826
|
/**
|
|
@@ -4204,10 +4834,11 @@
|
|
|
4204
4834
|
envObject.checkGCAccess();
|
|
4205
4835
|
if (!result)
|
|
4206
4836
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4837
|
+
result >>>= 0;
|
|
4207
4838
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4208
4839
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
4209
4840
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4210
|
-
HEAP_DATA_VIEW.
|
|
4841
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4211
4842
|
return envObject.clearLastError();
|
|
4212
4843
|
}
|
|
4213
4844
|
/**
|
|
@@ -4304,8 +4935,9 @@
|
|
|
4304
4935
|
value = low;
|
|
4305
4936
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4306
4937
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
4938
|
+
high >>>= 0;
|
|
4307
4939
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4308
|
-
HEAP_DATA_VIEW.
|
|
4940
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
4309
4941
|
return envObject.clearLastError();
|
|
4310
4942
|
}
|
|
4311
4943
|
/**
|
|
@@ -4326,8 +4958,9 @@
|
|
|
4326
4958
|
value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
|
|
4327
4959
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4328
4960
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
4961
|
+
high >>>= 0;
|
|
4329
4962
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4330
|
-
HEAP_DATA_VIEW.
|
|
4963
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
4331
4964
|
return envObject.clearLastError();
|
|
4332
4965
|
}
|
|
4333
4966
|
/**
|
|
@@ -4352,6 +4985,8 @@
|
|
|
4352
4985
|
}
|
|
4353
4986
|
if (!result)
|
|
4354
4987
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4988
|
+
words >>>= 0;
|
|
4989
|
+
word_count >>>= 0;
|
|
4355
4990
|
word_count = word_count >>> 0;
|
|
4356
4991
|
if (word_count > 2147483647) {
|
|
4357
4992
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
@@ -4368,8 +5003,9 @@
|
|
|
4368
5003
|
value += wordi << BigInt(64 * i);
|
|
4369
5004
|
}
|
|
4370
5005
|
value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
|
|
5006
|
+
result >>>= 0;
|
|
4371
5007
|
v = emnapiCtx.addToCurrentScope(value).id;
|
|
4372
|
-
HEAP_DATA_VIEW.
|
|
5008
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4373
5009
|
return envObject.getReturnStatus();
|
|
4374
5010
|
}
|
|
4375
5011
|
catch (err) {
|
|
@@ -4396,6 +5032,7 @@
|
|
|
4396
5032
|
node_api_create_property_key_utf8: node_api_create_property_key_utf8
|
|
4397
5033
|
});
|
|
4398
5034
|
function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
|
|
5035
|
+
utf8name >>>= 0;
|
|
4399
5036
|
var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
|
|
4400
5037
|
var f;
|
|
4401
5038
|
var napiCallback = (wasmTable.get(cb));
|
|
@@ -4538,9 +5175,10 @@
|
|
|
4538
5175
|
if (!finalize_cb)
|
|
4539
5176
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4540
5177
|
reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1 /* ReferenceOwnership.kUserland */, finalize_cb, native_object, finalize_hint);
|
|
5178
|
+
result >>>= 0;
|
|
4541
5179
|
referenceId = reference.id;
|
|
4542
5180
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4543
|
-
HEAP_DATA_VIEW.
|
|
5181
|
+
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
4544
5182
|
}
|
|
4545
5183
|
else {
|
|
4546
5184
|
if (finalize_cb) {
|
|
@@ -4588,10 +5226,11 @@
|
|
|
4588
5226
|
if (!ref)
|
|
4589
5227
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4590
5228
|
if (result) {
|
|
5229
|
+
result >>>= 0;
|
|
4591
5230
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4592
5231
|
data = ref.data();
|
|
4593
5232
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4594
|
-
HEAP_DATA_VIEW.
|
|
5233
|
+
HEAP_DATA_VIEW.setUint32(result, data, true);
|
|
4595
5234
|
}
|
|
4596
5235
|
if (action === 1 /* UnwrapAction.RemoveWrap */) {
|
|
4597
5236
|
binding.wrapped = 0;
|
|
@@ -4631,12 +5270,15 @@
|
|
|
4631
5270
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4632
5271
|
if (!constructor)
|
|
4633
5272
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5273
|
+
length >>>= 0;
|
|
5274
|
+
properties >>>= 0;
|
|
5275
|
+
property_count >>>= 0;
|
|
4634
5276
|
property_count = property_count >>> 0;
|
|
4635
5277
|
if (property_count > 0) {
|
|
4636
5278
|
if (!properties)
|
|
4637
5279
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4638
5280
|
}
|
|
4639
|
-
if ((length
|
|
5281
|
+
if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
|
|
4640
5282
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4641
5283
|
}
|
|
4642
5284
|
var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
|
|
@@ -4648,14 +5290,15 @@
|
|
|
4648
5290
|
for (var i = 0; i < property_count; i++) {
|
|
4649
5291
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4650
5292
|
propPtr = properties + (i * (4 * 8));
|
|
4651
|
-
var utf8Name = HEAP_DATA_VIEW.
|
|
4652
|
-
var name_1 = HEAP_DATA_VIEW.
|
|
4653
|
-
var method = HEAP_DATA_VIEW.
|
|
4654
|
-
var getter = HEAP_DATA_VIEW.
|
|
4655
|
-
var setter = HEAP_DATA_VIEW.
|
|
4656
|
-
var value = HEAP_DATA_VIEW.
|
|
5293
|
+
var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
|
|
5294
|
+
var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
|
|
5295
|
+
var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
|
|
5296
|
+
var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
|
|
5297
|
+
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
5298
|
+
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
4657
5299
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
4658
|
-
|
|
5300
|
+
attributes >>>= 0;
|
|
5301
|
+
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
4659
5302
|
if (utf8Name) {
|
|
4660
5303
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
4661
5304
|
}
|
|
@@ -4677,7 +5320,8 @@
|
|
|
4677
5320
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4678
5321
|
var valueHandle = emnapiCtx.addToCurrentScope(F);
|
|
4679
5322
|
valueHandleId = valueHandle.id;
|
|
4680
|
-
|
|
5323
|
+
result >>>= 0;
|
|
5324
|
+
HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
|
|
4681
5325
|
return envObject.getReturnStatus();
|
|
4682
5326
|
}
|
|
4683
5327
|
catch (err) {
|
|
@@ -4725,6 +5369,7 @@
|
|
|
4725
5369
|
if (!(value.isObject() || value.isFunction())) {
|
|
4726
5370
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
|
|
4727
5371
|
}
|
|
5372
|
+
type_tag >>>= 0;
|
|
4728
5373
|
if (!type_tag) {
|
|
4729
5374
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
|
|
4730
5375
|
}
|
|
@@ -4774,6 +5419,7 @@
|
|
|
4774
5419
|
}
|
|
4775
5420
|
var binding = envObject.getObjectBinding(value.value);
|
|
4776
5421
|
if (binding.tag !== null) {
|
|
5422
|
+
type_tag >>>= 0;
|
|
4777
5423
|
var tag = binding.tag;
|
|
4778
5424
|
var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
|
|
4779
5425
|
ret = (tag[0] === typeTag[0] &&
|
|
@@ -4784,6 +5430,7 @@
|
|
|
4784
5430
|
else {
|
|
4785
5431
|
ret = false;
|
|
4786
5432
|
}
|
|
5433
|
+
result >>>= 0;
|
|
4787
5434
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4788
5435
|
HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
|
|
4789
5436
|
return envObject.getReturnStatus();
|
|
@@ -4815,12 +5462,16 @@
|
|
|
4815
5462
|
}
|
|
4816
5463
|
var handle = handleResult.handle;
|
|
4817
5464
|
var ownership = !result ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
|
|
5465
|
+
finalize_data >>>= 0;
|
|
5466
|
+
finalize_cb >>>= 0;
|
|
5467
|
+
finalize_hint >>>= 0;
|
|
4818
5468
|
var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
|
|
4819
5469
|
if (result) {
|
|
5470
|
+
result >>>= 0;
|
|
4820
5471
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4821
5472
|
var referenceId = reference.id;
|
|
4822
5473
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4823
|
-
HEAP_DATA_VIEW.
|
|
5474
|
+
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
4824
5475
|
}
|
|
4825
5476
|
return envObject.clearLastError();
|
|
4826
5477
|
}
|
|
@@ -4864,6 +5515,9 @@
|
|
|
4864
5515
|
try {
|
|
4865
5516
|
if (!result)
|
|
4866
5517
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5518
|
+
byte_length >>>= 0;
|
|
5519
|
+
external_data >>>= 0;
|
|
5520
|
+
result >>>= 0;
|
|
4867
5521
|
byte_length = byte_length >>> 0;
|
|
4868
5522
|
if (!external_data) {
|
|
4869
5523
|
byte_length = 0;
|
|
@@ -4915,6 +5569,12 @@
|
|
|
4915
5569
|
case -1 /* emnapi_memory_view_type.emnapi_data_view */:
|
|
4916
5570
|
viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 };
|
|
4917
5571
|
break;
|
|
5572
|
+
case 11 /* emnapi_memory_view_type.emnapi_float16_array */:
|
|
5573
|
+
if (typeof Float16Array !== 'function') {
|
|
5574
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5575
|
+
}
|
|
5576
|
+
viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 };
|
|
5577
|
+
break;
|
|
4918
5578
|
case -2 /* emnapi_memory_view_type.emnapi_buffer */: {
|
|
4919
5579
|
if (!emnapiCtx.feature.Buffer) {
|
|
4920
5580
|
throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
|
|
@@ -4943,7 +5603,7 @@
|
|
|
4943
5603
|
}
|
|
4944
5604
|
value = handle.id;
|
|
4945
5605
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4946
|
-
HEAP_DATA_VIEW.
|
|
5606
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4947
5607
|
return envObject.getReturnStatus();
|
|
4948
5608
|
}
|
|
4949
5609
|
catch (err) {
|
|
@@ -4973,11 +5633,11 @@
|
|
|
4973
5633
|
offset = offset !== null && offset !== void 0 ? offset : 0;
|
|
4974
5634
|
offset = offset >>> 0;
|
|
4975
5635
|
var view;
|
|
4976
|
-
if (arrayBufferOrView instanceof ArrayBuffer) {
|
|
5636
|
+
if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
4977
5637
|
var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
|
|
4978
5638
|
if (!pointer)
|
|
4979
5639
|
throw new Error('Unknown ArrayBuffer address');
|
|
4980
|
-
if (typeof len !== 'number' || len === -1) {
|
|
5640
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
4981
5641
|
len = arrayBufferOrView.byteLength - offset;
|
|
4982
5642
|
}
|
|
4983
5643
|
len = len >>> 0;
|
|
@@ -4999,7 +5659,7 @@
|
|
|
4999
5659
|
var pointer = viewPointerInfo.address;
|
|
5000
5660
|
if (!pointer)
|
|
5001
5661
|
throw new Error('Unknown ArrayBuffer address');
|
|
5002
|
-
if (typeof len !== 'number' || len === -1) {
|
|
5662
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
5003
5663
|
len = latestView.byteLength - offset;
|
|
5004
5664
|
}
|
|
5005
5665
|
len = len >>> 0;
|
|
@@ -5036,16 +5696,20 @@
|
|
|
5036
5696
|
try {
|
|
5037
5697
|
if (!arraybuffer_or_view)
|
|
5038
5698
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5699
|
+
arraybuffer_or_view >>>= 0;
|
|
5700
|
+
offset >>>= 0;
|
|
5701
|
+
len >>>= 0;
|
|
5039
5702
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5040
|
-
var handleId = HEAP_DATA_VIEW.
|
|
5703
|
+
var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
|
|
5041
5704
|
var handle = envObject.ctx.handleStore.get(handleId);
|
|
5042
|
-
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView()) {
|
|
5705
|
+
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
5043
5706
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5044
5707
|
}
|
|
5045
5708
|
var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
|
|
5046
5709
|
if (handle.value !== ret) {
|
|
5710
|
+
arraybuffer_or_view >>>= 0;
|
|
5047
5711
|
v = envObject.ensureHandleId(ret);
|
|
5048
|
-
HEAP_DATA_VIEW.
|
|
5712
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
|
|
5049
5713
|
}
|
|
5050
5714
|
return envObject.getReturnStatus();
|
|
5051
5715
|
}
|
|
@@ -5058,7 +5722,7 @@
|
|
|
5058
5722
|
var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer;
|
|
5059
5723
|
var isDataView = arrayBufferOrView instanceof DataView;
|
|
5060
5724
|
var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView;
|
|
5061
|
-
if (!isArrayBuffer && !isTypedArray && !isDataView) {
|
|
5725
|
+
if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
5062
5726
|
throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter');
|
|
5063
5727
|
}
|
|
5064
5728
|
var info;
|
|
@@ -5102,13 +5766,16 @@
|
|
|
5102
5766
|
p = info.address;
|
|
5103
5767
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5104
5768
|
if (address) {
|
|
5105
|
-
|
|
5769
|
+
address >>>= 0;
|
|
5770
|
+
HEAP_DATA_VIEW.setUint32(address, p, true);
|
|
5106
5771
|
}
|
|
5107
5772
|
if (ownership) {
|
|
5773
|
+
ownership >>>= 0;
|
|
5108
5774
|
ownershipOut = info.ownership;
|
|
5109
5775
|
HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
|
|
5110
5776
|
}
|
|
5111
5777
|
if (runtime_allocated) {
|
|
5778
|
+
runtime_allocated >>>= 0;
|
|
5112
5779
|
runtimeAllocated = info.runtimeAllocated;
|
|
5113
5780
|
HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
|
|
5114
5781
|
}
|
|
@@ -5138,22 +5805,129 @@
|
|
|
5138
5805
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5139
5806
|
var versions = runtimeVersion.split('.')
|
|
5140
5807
|
.map(function (n) { return Number(n); });
|
|
5808
|
+
version >>>= 0;
|
|
5141
5809
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5142
5810
|
HEAP_DATA_VIEW.setUint32(version, versions[0], true);
|
|
5143
5811
|
HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
|
|
5144
5812
|
HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
|
|
5145
5813
|
return envObject.clearLastError();
|
|
5146
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
|
+
}
|
|
5147
5917
|
var emnapiMod = /*#__PURE__*/ Object.freeze({
|
|
5148
5918
|
__proto__: null,
|
|
5919
|
+
$emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
|
|
5149
5920
|
$emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
|
|
5150
5921
|
$emnapiSyncMemory: $emnapiSyncMemory,
|
|
5922
|
+
emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
|
|
5151
5923
|
emnapi_create_memory_view: emnapi_create_memory_view,
|
|
5924
|
+
emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
|
|
5152
5925
|
emnapi_get_memory_address: emnapi_get_memory_address,
|
|
5153
5926
|
emnapi_get_runtime_version: emnapi_get_runtime_version,
|
|
5154
5927
|
emnapi_is_node_binding_available: emnapi_is_node_binding_available,
|
|
5155
5928
|
emnapi_is_support_bigint: emnapi_is_support_bigint,
|
|
5156
5929
|
emnapi_is_support_weakref: emnapi_is_support_weakref,
|
|
5930
|
+
emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
|
|
5157
5931
|
emnapi_sync_memory: emnapi_sync_memory
|
|
5158
5932
|
});
|
|
5159
5933
|
/**
|
|
@@ -5167,10 +5941,11 @@
|
|
|
5167
5941
|
envObject.checkGCAccess();
|
|
5168
5942
|
if (!result)
|
|
5169
5943
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5944
|
+
result >>>= 0;
|
|
5170
5945
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5171
5946
|
var value = emnapiCtx.addToCurrentScope([]).id;
|
|
5172
5947
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5173
|
-
HEAP_DATA_VIEW.
|
|
5948
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5174
5949
|
return envObject.clearLastError();
|
|
5175
5950
|
}
|
|
5176
5951
|
/**
|
|
@@ -5184,21 +5959,25 @@
|
|
|
5184
5959
|
envObject.checkGCAccess();
|
|
5185
5960
|
if (!result)
|
|
5186
5961
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5962
|
+
length >>>= 0;
|
|
5963
|
+
result >>>= 0;
|
|
5187
5964
|
length = length >>> 0;
|
|
5188
5965
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5189
5966
|
var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
|
|
5190
5967
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5191
|
-
HEAP_DATA_VIEW.
|
|
5968
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5192
5969
|
return envObject.clearLastError();
|
|
5193
5970
|
}
|
|
5194
|
-
function emnapiCreateArrayBuffer(byte_length, data) {
|
|
5971
|
+
function emnapiCreateArrayBuffer(byte_length, data, shared) {
|
|
5972
|
+
byte_length >>>= 0;
|
|
5195
5973
|
byte_length = byte_length >>> 0;
|
|
5196
|
-
var arrayBuffer = new ArrayBuffer(byte_length);
|
|
5974
|
+
var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
|
|
5197
5975
|
if (data) {
|
|
5976
|
+
data >>>= 0;
|
|
5198
5977
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5199
5978
|
var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
|
|
5200
5979
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5201
|
-
HEAP_DATA_VIEW.
|
|
5980
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
5202
5981
|
}
|
|
5203
5982
|
return arrayBuffer;
|
|
5204
5983
|
}
|
|
@@ -5221,10 +6000,42 @@
|
|
|
5221
6000
|
try {
|
|
5222
6001
|
if (!result)
|
|
5223
6002
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5224
|
-
|
|
6003
|
+
result >>>= 0;
|
|
6004
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
|
|
6005
|
+
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
6006
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6007
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6008
|
+
return envObject.getReturnStatus();
|
|
6009
|
+
}
|
|
6010
|
+
catch (err) {
|
|
6011
|
+
envObject.tryCatch.setError(err);
|
|
6012
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
6013
|
+
}
|
|
6014
|
+
}
|
|
6015
|
+
/**
|
|
6016
|
+
* @__sig ipppp
|
|
6017
|
+
*/
|
|
6018
|
+
function node_api_create_sharedarraybuffer(env, byte_length, data, result) {
|
|
6019
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6020
|
+
var value;
|
|
6021
|
+
if (!env)
|
|
6022
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
6023
|
+
// @ts-expect-error
|
|
6024
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
6025
|
+
envObject.checkGCAccess();
|
|
6026
|
+
if (!envObject.tryCatch.isEmpty())
|
|
6027
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
6028
|
+
if (!envObject.canCallIntoJs())
|
|
6029
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
6030
|
+
envObject.clearLastError();
|
|
6031
|
+
try {
|
|
6032
|
+
if (!result)
|
|
6033
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6034
|
+
result >>>= 0;
|
|
6035
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
|
|
5225
6036
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
5226
6037
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5227
|
-
HEAP_DATA_VIEW.
|
|
6038
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5228
6039
|
return envObject.getReturnStatus();
|
|
5229
6040
|
}
|
|
5230
6041
|
catch (err) {
|
|
@@ -5251,10 +6062,11 @@
|
|
|
5251
6062
|
try {
|
|
5252
6063
|
if (!result)
|
|
5253
6064
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6065
|
+
result >>>= 0;
|
|
5254
6066
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5255
6067
|
value = emnapiCtx.addToCurrentScope(new Date(time)).id;
|
|
5256
6068
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5257
|
-
HEAP_DATA_VIEW.
|
|
6069
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5258
6070
|
return envObject.getReturnStatus();
|
|
5259
6071
|
}
|
|
5260
6072
|
catch (err) {
|
|
@@ -5288,9 +6100,10 @@
|
|
|
5288
6100
|
if (finalize_cb) {
|
|
5289
6101
|
emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, data, finalize_hint);
|
|
5290
6102
|
}
|
|
6103
|
+
result >>>= 0;
|
|
5291
6104
|
value = externalHandle.id;
|
|
5292
6105
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5293
|
-
HEAP_DATA_VIEW.
|
|
6106
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5294
6107
|
return envObject.clearLastError();
|
|
5295
6108
|
}
|
|
5296
6109
|
catch (err) {
|
|
@@ -5317,6 +6130,9 @@
|
|
|
5317
6130
|
try {
|
|
5318
6131
|
if (!result)
|
|
5319
6132
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6133
|
+
byte_length >>>= 0;
|
|
6134
|
+
external_data >>>= 0;
|
|
6135
|
+
result >>>= 0;
|
|
5320
6136
|
byte_length = byte_length >>> 0;
|
|
5321
6137
|
if (!external_data) {
|
|
5322
6138
|
byte_length = 0;
|
|
@@ -5359,7 +6175,66 @@
|
|
|
5359
6175
|
}
|
|
5360
6176
|
value = handle.id;
|
|
5361
6177
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5362
|
-
HEAP_DATA_VIEW.
|
|
6178
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6179
|
+
return envObject.getReturnStatus();
|
|
6180
|
+
}
|
|
6181
|
+
catch (err) {
|
|
6182
|
+
envObject.tryCatch.setError(err);
|
|
6183
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
6184
|
+
}
|
|
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);
|
|
5363
6238
|
return envObject.getReturnStatus();
|
|
5364
6239
|
}
|
|
5365
6240
|
catch (err) {
|
|
@@ -5378,10 +6253,61 @@
|
|
|
5378
6253
|
envObject.checkGCAccess();
|
|
5379
6254
|
if (!result)
|
|
5380
6255
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6256
|
+
result >>>= 0;
|
|
5381
6257
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5382
6258
|
var value = emnapiCtx.addToCurrentScope({}).id;
|
|
5383
6259
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5384
|
-
HEAP_DATA_VIEW.
|
|
6260
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6261
|
+
return envObject.clearLastError();
|
|
6262
|
+
}
|
|
6263
|
+
/**
|
|
6264
|
+
* @__sig ipppppp
|
|
6265
|
+
*/
|
|
6266
|
+
function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
|
|
6267
|
+
if (!env)
|
|
6268
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
6269
|
+
// @ts-expect-error
|
|
6270
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
6271
|
+
envObject.checkGCAccess();
|
|
6272
|
+
if (!result)
|
|
6273
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6274
|
+
property_count >>>= 0;
|
|
6275
|
+
property_count = property_count >>> 0;
|
|
6276
|
+
if (property_count > 0) {
|
|
6277
|
+
if (!property_names)
|
|
6278
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6279
|
+
if (!property_values)
|
|
6280
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6281
|
+
}
|
|
6282
|
+
var v8_prototype_or_null = prototype_or_null
|
|
6283
|
+
? emnapiCtx.handleStore.get(prototype_or_null).value
|
|
6284
|
+
: null;
|
|
6285
|
+
var properties = {};
|
|
6286
|
+
property_names >>>= 0;
|
|
6287
|
+
property_values >>>= 0;
|
|
6288
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6289
|
+
for (var i = 0; i < property_count; i++) {
|
|
6290
|
+
var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
|
|
6291
|
+
if (!(typeof name_value === "string" || typeof name_value === "symbol"))
|
|
6292
|
+
return envObject.setLastError(4 /* napi_status.napi_name_expected */);
|
|
6293
|
+
properties[name_value] = {
|
|
6294
|
+
value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
|
|
6295
|
+
writable: true,
|
|
6296
|
+
enumerable: true,
|
|
6297
|
+
configurable: true
|
|
6298
|
+
};
|
|
6299
|
+
}
|
|
6300
|
+
var obj;
|
|
6301
|
+
try {
|
|
6302
|
+
obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties);
|
|
6303
|
+
}
|
|
6304
|
+
catch (_) {
|
|
6305
|
+
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
6306
|
+
}
|
|
6307
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6308
|
+
var value = emnapiCtx.addToCurrentScope(obj).id;
|
|
6309
|
+
result >>>= 0;
|
|
6310
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5385
6311
|
return envObject.clearLastError();
|
|
5386
6312
|
}
|
|
5387
6313
|
/**
|
|
@@ -5395,11 +6321,12 @@
|
|
|
5395
6321
|
envObject.checkGCAccess();
|
|
5396
6322
|
if (!result)
|
|
5397
6323
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6324
|
+
result >>>= 0;
|
|
5398
6325
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5399
6326
|
if (!description) {
|
|
5400
6327
|
// eslint-disable-next-line symbol-description, @typescript-eslint/no-unused-vars
|
|
5401
6328
|
var value = emnapiCtx.addToCurrentScope(Symbol()).id;
|
|
5402
|
-
HEAP_DATA_VIEW.
|
|
6329
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5403
6330
|
}
|
|
5404
6331
|
else {
|
|
5405
6332
|
var handle = emnapiCtx.handleStore.get(description);
|
|
@@ -5409,7 +6336,7 @@
|
|
|
5409
6336
|
}
|
|
5410
6337
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5411
6338
|
var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id;
|
|
5412
|
-
HEAP_DATA_VIEW.
|
|
6339
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
5413
6340
|
}
|
|
5414
6341
|
return envObject.clearLastError();
|
|
5415
6342
|
}
|
|
@@ -5435,10 +6362,9 @@
|
|
|
5435
6362
|
if (!result)
|
|
5436
6363
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5437
6364
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
5438
|
-
if (!handle.isArrayBuffer()) {
|
|
5439
|
-
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5440
|
-
}
|
|
5441
6365
|
var buffer = handle.value;
|
|
6366
|
+
byte_offset >>>= 0;
|
|
6367
|
+
length >>>= 0;
|
|
5442
6368
|
var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
|
|
5443
6369
|
var _a;
|
|
5444
6370
|
byte_offset = byte_offset >>> 0;
|
|
@@ -5469,37 +6395,48 @@
|
|
|
5469
6395
|
});
|
|
5470
6396
|
}
|
|
5471
6397
|
}
|
|
6398
|
+
result >>>= 0;
|
|
5472
6399
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5473
6400
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
5474
6401
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5475
|
-
HEAP_DATA_VIEW.
|
|
6402
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5476
6403
|
return envObject.getReturnStatus();
|
|
5477
6404
|
};
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
|
|
5488
|
-
|
|
5489
|
-
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
|
|
5498
|
-
|
|
5499
|
-
|
|
5500
|
-
|
|
5501
|
-
|
|
5502
|
-
|
|
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:
|
|
6435
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6436
|
+
}
|
|
6437
|
+
}
|
|
6438
|
+
else {
|
|
6439
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5503
6440
|
}
|
|
5504
6441
|
}
|
|
5505
6442
|
catch (err) {
|
|
@@ -5532,18 +6469,21 @@
|
|
|
5532
6469
|
if (!Buffer) {
|
|
5533
6470
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
|
|
5534
6471
|
}
|
|
6472
|
+
result >>>= 0;
|
|
5535
6473
|
var buffer = void 0;
|
|
6474
|
+
size >>>= 0;
|
|
5536
6475
|
size = size >>> 0;
|
|
5537
6476
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5538
6477
|
if (!data || (size === 0)) {
|
|
5539
6478
|
buffer = Buffer.alloc(size);
|
|
5540
6479
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
5541
|
-
HEAP_DATA_VIEW.
|
|
6480
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5542
6481
|
}
|
|
5543
6482
|
else {
|
|
5544
6483
|
pointer = _malloc(size);
|
|
5545
6484
|
if (!pointer)
|
|
5546
6485
|
throw new Error('Out of memory');
|
|
6486
|
+
pointer >>>= 0;
|
|
5547
6487
|
new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
|
|
5548
6488
|
var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
|
|
5549
6489
|
var viewDescriptor = {
|
|
@@ -5556,8 +6496,9 @@
|
|
|
5556
6496
|
emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor);
|
|
5557
6497
|
(_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
|
|
5558
6498
|
value = emnapiCtx.addToCurrentScope(buffer_1).id;
|
|
5559
|
-
HEAP_DATA_VIEW.
|
|
5560
|
-
|
|
6499
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6500
|
+
data >>>= 0;
|
|
6501
|
+
HEAP_DATA_VIEW.setUint32(data, pointer, true);
|
|
5561
6502
|
}
|
|
5562
6503
|
return envObject.getReturnStatus();
|
|
5563
6504
|
}
|
|
@@ -5589,12 +6530,15 @@
|
|
|
5589
6530
|
if (!Buffer) {
|
|
5590
6531
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', '');
|
|
5591
6532
|
}
|
|
5592
|
-
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data);
|
|
6533
|
+
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
|
|
5593
6534
|
var buffer = Buffer.from(arrayBuffer);
|
|
6535
|
+
data >>>= 0;
|
|
6536
|
+
length >>>= 0;
|
|
5594
6537
|
buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
|
|
5595
6538
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
6539
|
+
result >>>= 0;
|
|
5596
6540
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5597
|
-
HEAP_DATA_VIEW.
|
|
6541
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5598
6542
|
return envObject.getReturnStatus();
|
|
5599
6543
|
}
|
|
5600
6544
|
catch (err) {
|
|
@@ -5629,6 +6573,8 @@
|
|
|
5629
6573
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5630
6574
|
if (!result)
|
|
5631
6575
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6576
|
+
byte_offset >>>= 0;
|
|
6577
|
+
byte_length >>>= 0;
|
|
5632
6578
|
byte_offset = byte_offset >>> 0;
|
|
5633
6579
|
byte_length = byte_length >>> 0;
|
|
5634
6580
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
@@ -5657,10 +6603,11 @@
|
|
|
5657
6603
|
});
|
|
5658
6604
|
}
|
|
5659
6605
|
}
|
|
6606
|
+
result >>>= 0;
|
|
5660
6607
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5661
6608
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
5662
6609
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5663
|
-
HEAP_DATA_VIEW.
|
|
6610
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5664
6611
|
return envObject.getReturnStatus();
|
|
5665
6612
|
}
|
|
5666
6613
|
catch (err) {
|
|
@@ -5672,8 +6619,6 @@
|
|
|
5672
6619
|
* @__sig ippppp
|
|
5673
6620
|
*/
|
|
5674
6621
|
function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
|
|
5675
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5676
|
-
var value;
|
|
5677
6622
|
if (!env)
|
|
5678
6623
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5679
6624
|
// @ts-expect-error
|
|
@@ -5689,35 +6634,42 @@
|
|
|
5689
6634
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5690
6635
|
if (!result)
|
|
5691
6636
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6637
|
+
byte_length >>>= 0;
|
|
6638
|
+
byte_offset >>>= 0;
|
|
5692
6639
|
byte_length = byte_length >>> 0;
|
|
5693
6640
|
byte_offset = byte_offset >>> 0;
|
|
5694
|
-
var
|
|
5695
|
-
|
|
5696
|
-
|
|
5697
|
-
|
|
5698
|
-
|
|
5699
|
-
|
|
5700
|
-
|
|
5701
|
-
|
|
5702
|
-
|
|
5703
|
-
|
|
5704
|
-
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
|
|
5711
|
-
|
|
5712
|
-
runtimeAllocated: 0
|
|
5713
|
-
});
|
|
6641
|
+
var value = emnapiCtx.handleStore.get(arraybuffer).value;
|
|
6642
|
+
var createDataview = function (buffer) {
|
|
6643
|
+
if ((byte_length + byte_offset) > buffer.byteLength) {
|
|
6644
|
+
var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
|
|
6645
|
+
err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
|
|
6646
|
+
throw err;
|
|
6647
|
+
}
|
|
6648
|
+
var dataview = new DataView(buffer, byte_offset, byte_length);
|
|
6649
|
+
if (buffer === wasmMemory.buffer) {
|
|
6650
|
+
if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
|
|
6651
|
+
emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
|
|
6652
|
+
Ctor: DataView,
|
|
6653
|
+
address: byte_offset,
|
|
6654
|
+
length: byte_length,
|
|
6655
|
+
ownership: 1 /* ReferenceOwnership.kUserland */,
|
|
6656
|
+
runtimeAllocated: 0
|
|
6657
|
+
});
|
|
6658
|
+
}
|
|
5714
6659
|
}
|
|
6660
|
+
result >>>= 0;
|
|
6661
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6662
|
+
var v = emnapiCtx.addToCurrentScope(dataview).id;
|
|
6663
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6664
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6665
|
+
return envObject.getReturnStatus();
|
|
6666
|
+
};
|
|
6667
|
+
if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
|
|
6668
|
+
return createDataview(value);
|
|
6669
|
+
}
|
|
6670
|
+
else {
|
|
6671
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5715
6672
|
}
|
|
5716
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5717
|
-
value = emnapiCtx.addToCurrentScope(dataview).id;
|
|
5718
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5719
|
-
HEAP_DATA_VIEW.setInt32(result, value, true);
|
|
5720
|
-
return envObject.getReturnStatus();
|
|
5721
6673
|
}
|
|
5722
6674
|
catch (err) {
|
|
5723
6675
|
envObject.tryCatch.setError(err);
|
|
@@ -5735,7 +6687,10 @@
|
|
|
5735
6687
|
envObject.checkGCAccess();
|
|
5736
6688
|
if (!result)
|
|
5737
6689
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5738
|
-
|
|
6690
|
+
length >>>= 0;
|
|
6691
|
+
utf8description >>>= 0;
|
|
6692
|
+
result >>>= 0;
|
|
6693
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
5739
6694
|
var sizelength = length >>> 0;
|
|
5740
6695
|
if (length !== 0) {
|
|
5741
6696
|
if (!utf8description)
|
|
@@ -5748,7 +6703,7 @@
|
|
|
5748
6703
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5749
6704
|
var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id;
|
|
5750
6705
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5751
|
-
HEAP_DATA_VIEW.
|
|
6706
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5752
6707
|
return envObject.clearLastError();
|
|
5753
6708
|
}
|
|
5754
6709
|
var createMod = /*#__PURE__*/ Object.freeze({
|
|
@@ -5767,6 +6722,9 @@
|
|
|
5767
6722
|
napi_create_symbol: napi_create_symbol,
|
|
5768
6723
|
napi_create_typedarray: napi_create_typedarray,
|
|
5769
6724
|
node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
|
|
6725
|
+
node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
|
|
6726
|
+
node_api_create_object_with_properties: node_api_create_object_with_properties,
|
|
6727
|
+
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
5770
6728
|
node_api_symbol_for: node_api_symbol_for
|
|
5771
6729
|
});
|
|
5772
6730
|
/** @__sig ipip */
|
|
@@ -5778,10 +6736,11 @@
|
|
|
5778
6736
|
envObject.checkGCAccess();
|
|
5779
6737
|
if (!result)
|
|
5780
6738
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6739
|
+
result >>>= 0;
|
|
5781
6740
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5782
6741
|
var v = value === 0 ? 3 /* GlobalHandle.FALSE */ : 4 /* GlobalHandle.TRUE */;
|
|
5783
6742
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5784
|
-
HEAP_DATA_VIEW.
|
|
6743
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
5785
6744
|
return envObject.clearLastError();
|
|
5786
6745
|
}
|
|
5787
6746
|
/** @__sig ipp */
|
|
@@ -5793,10 +6752,11 @@
|
|
|
5793
6752
|
envObject.checkGCAccess();
|
|
5794
6753
|
if (!result)
|
|
5795
6754
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6755
|
+
result >>>= 0;
|
|
5796
6756
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5797
6757
|
var value = 5 /* GlobalHandle.GLOBAL */;
|
|
5798
6758
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5799
|
-
HEAP_DATA_VIEW.
|
|
6759
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5800
6760
|
return envObject.clearLastError();
|
|
5801
6761
|
}
|
|
5802
6762
|
/** @__sig ipp */
|
|
@@ -5808,10 +6768,11 @@
|
|
|
5808
6768
|
envObject.checkGCAccess();
|
|
5809
6769
|
if (!result)
|
|
5810
6770
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6771
|
+
result >>>= 0;
|
|
5811
6772
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5812
6773
|
var value = 2 /* GlobalHandle.NULL */;
|
|
5813
6774
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5814
|
-
HEAP_DATA_VIEW.
|
|
6775
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5815
6776
|
return envObject.clearLastError();
|
|
5816
6777
|
}
|
|
5817
6778
|
/** @__sig ipp */
|
|
@@ -5823,10 +6784,11 @@
|
|
|
5823
6784
|
envObject.checkGCAccess();
|
|
5824
6785
|
if (!result)
|
|
5825
6786
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6787
|
+
result >>>= 0;
|
|
5826
6788
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5827
6789
|
var value = 1 /* GlobalHandle.UNDEFINED */;
|
|
5828
6790
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5829
|
-
HEAP_DATA_VIEW.
|
|
6791
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5830
6792
|
return envObject.clearLastError();
|
|
5831
6793
|
}
|
|
5832
6794
|
var globalMod = /*#__PURE__*/ Object.freeze({
|
|
@@ -5841,6 +6803,9 @@
|
|
|
5841
6803
|
if (!env)
|
|
5842
6804
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5843
6805
|
var envObject = emnapiCtx.envStore.get(env);
|
|
6806
|
+
data >>>= 0;
|
|
6807
|
+
finalize_cb >>>= 0;
|
|
6808
|
+
finalize_hint >>>= 0;
|
|
5844
6809
|
envObject.setInstanceData(data, finalize_cb, finalize_hint);
|
|
5845
6810
|
return envObject.clearLastError();
|
|
5846
6811
|
}
|
|
@@ -5851,10 +6816,11 @@
|
|
|
5851
6816
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5852
6817
|
if (!data)
|
|
5853
6818
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6819
|
+
data >>>= 0;
|
|
5854
6820
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5855
6821
|
var value = envObject.getInstanceData();
|
|
5856
6822
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5857
|
-
HEAP_DATA_VIEW.
|
|
6823
|
+
HEAP_DATA_VIEW.setUint32(data, value, true);
|
|
5858
6824
|
return envObject.clearLastError();
|
|
5859
6825
|
}
|
|
5860
6826
|
var envMod = /*#__PURE__*/ Object.freeze({
|
|
@@ -5864,6 +6830,9 @@
|
|
|
5864
6830
|
});
|
|
5865
6831
|
/** @__sig vpppp */
|
|
5866
6832
|
function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
|
|
6833
|
+
error_code >>>= 0;
|
|
6834
|
+
engine_error_code >>>= 0;
|
|
6835
|
+
engine_reserved >>>= 0;
|
|
5867
6836
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5868
6837
|
var lastError = envObject.lastError;
|
|
5869
6838
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -5872,10 +6841,11 @@
|
|
|
5872
6841
|
var engineErrorCode = lastError.engineErrorCode >>> 0;
|
|
5873
6842
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5874
6843
|
var engineReserved = lastError.engineReserved;
|
|
6844
|
+
engineReserved >>>= 0;
|
|
5875
6845
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5876
6846
|
HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
|
|
5877
6847
|
HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
|
|
5878
|
-
HEAP_DATA_VIEW.
|
|
6848
|
+
HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true);
|
|
5879
6849
|
}
|
|
5880
6850
|
/** @__sig ipp */
|
|
5881
6851
|
function napi_throw(env, error) {
|
|
@@ -5915,6 +6885,8 @@
|
|
|
5915
6885
|
try {
|
|
5916
6886
|
if (!msg)
|
|
5917
6887
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6888
|
+
code >>>= 0;
|
|
6889
|
+
msg >>>= 0;
|
|
5918
6890
|
var error = new Error(emnapiString.UTF8ToString(msg, -1));
|
|
5919
6891
|
if (code)
|
|
5920
6892
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -5941,6 +6913,8 @@
|
|
|
5941
6913
|
try {
|
|
5942
6914
|
if (!msg)
|
|
5943
6915
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6916
|
+
code >>>= 0;
|
|
6917
|
+
msg >>>= 0;
|
|
5944
6918
|
var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
|
|
5945
6919
|
if (code)
|
|
5946
6920
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -5967,6 +6941,8 @@
|
|
|
5967
6941
|
try {
|
|
5968
6942
|
if (!msg)
|
|
5969
6943
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6944
|
+
code >>>= 0;
|
|
6945
|
+
msg >>>= 0;
|
|
5970
6946
|
var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
|
|
5971
6947
|
if (code)
|
|
5972
6948
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -5993,6 +6969,8 @@
|
|
|
5993
6969
|
try {
|
|
5994
6970
|
if (!msg)
|
|
5995
6971
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6972
|
+
code >>>= 0;
|
|
6973
|
+
msg >>>= 0;
|
|
5996
6974
|
var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
|
|
5997
6975
|
if (code)
|
|
5998
6976
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -6015,6 +6993,7 @@
|
|
|
6015
6993
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6016
6994
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6017
6995
|
var r = envObject.tryCatch.hasCaught();
|
|
6996
|
+
result >>>= 0;
|
|
6018
6997
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6019
6998
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
6020
6999
|
return envObject.clearLastError();
|
|
@@ -6042,10 +7021,11 @@
|
|
|
6042
7021
|
}
|
|
6043
7022
|
error.code = codeValue;
|
|
6044
7023
|
}
|
|
7024
|
+
result >>>= 0;
|
|
6045
7025
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6046
7026
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
6047
7027
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6048
|
-
HEAP_DATA_VIEW.
|
|
7028
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6049
7029
|
return envObject.clearLastError();
|
|
6050
7030
|
}
|
|
6051
7031
|
/** @__sig ipppp */
|
|
@@ -6071,10 +7051,11 @@
|
|
|
6071
7051
|
}
|
|
6072
7052
|
error.code = codeValue;
|
|
6073
7053
|
}
|
|
7054
|
+
result >>>= 0;
|
|
6074
7055
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6075
7056
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
6076
7057
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6077
|
-
HEAP_DATA_VIEW.
|
|
7058
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6078
7059
|
return envObject.clearLastError();
|
|
6079
7060
|
}
|
|
6080
7061
|
/** @__sig ipppp */
|
|
@@ -6100,10 +7081,11 @@
|
|
|
6100
7081
|
}
|
|
6101
7082
|
error.code = codeValue;
|
|
6102
7083
|
}
|
|
7084
|
+
result >>>= 0;
|
|
6103
7085
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6104
7086
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
6105
7087
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6106
|
-
HEAP_DATA_VIEW.
|
|
7088
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6107
7089
|
return envObject.clearLastError();
|
|
6108
7090
|
}
|
|
6109
7091
|
/** @__sig ipppp */
|
|
@@ -6129,10 +7111,11 @@
|
|
|
6129
7111
|
}
|
|
6130
7112
|
error.code = codeValue;
|
|
6131
7113
|
}
|
|
7114
|
+
result >>>= 0;
|
|
6132
7115
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6133
7116
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
6134
7117
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6135
|
-
HEAP_DATA_VIEW.
|
|
7118
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6136
7119
|
return envObject.clearLastError();
|
|
6137
7120
|
}
|
|
6138
7121
|
/** @__sig ipp */
|
|
@@ -6144,22 +7127,27 @@
|
|
|
6144
7127
|
envObject.checkGCAccess();
|
|
6145
7128
|
if (!result)
|
|
6146
7129
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7130
|
+
result >>>= 0;
|
|
6147
7131
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6148
7132
|
if (!envObject.tryCatch.hasCaught()) {
|
|
6149
|
-
HEAP_DATA_VIEW.
|
|
7133
|
+
HEAP_DATA_VIEW.setUint32(result, 1, true); // ID_UNDEFINED
|
|
6150
7134
|
return envObject.clearLastError();
|
|
6151
7135
|
}
|
|
6152
7136
|
else {
|
|
6153
7137
|
var err = envObject.tryCatch.exception();
|
|
6154
7138
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6155
7139
|
var value = envObject.ensureHandleId(err);
|
|
6156
|
-
HEAP_DATA_VIEW.
|
|
7140
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6157
7141
|
envObject.tryCatch.reset();
|
|
6158
7142
|
}
|
|
6159
7143
|
return envObject.clearLastError();
|
|
6160
7144
|
}
|
|
6161
7145
|
/** @__sig vpppp */
|
|
6162
7146
|
function napi_fatal_error(location, location_len, message, message_len) {
|
|
7147
|
+
location >>>= 0;
|
|
7148
|
+
location_len >>>= 0;
|
|
7149
|
+
message >>>= 0;
|
|
7150
|
+
message_len >>>= 0;
|
|
6163
7151
|
var locationStr = emnapiString.UTF8ToString(location, location_len);
|
|
6164
7152
|
var messageStr = emnapiString.UTF8ToString(message, message_len);
|
|
6165
7153
|
if (emnapiNodeBinding) {
|
|
@@ -6216,9 +7204,23 @@
|
|
|
6216
7204
|
node_api_throw_syntax_error: node_api_throw_syntax_error
|
|
6217
7205
|
});
|
|
6218
7206
|
/** @__sig ipppppp */
|
|
6219
|
-
function
|
|
7207
|
+
function _emnapi_create_function(env, utf8name, length, cb, data, result) {
|
|
7208
|
+
length >>>= 0;
|
|
7209
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
7210
|
+
var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
|
|
7211
|
+
if (fresult.status !== 0 /* napi_status.napi_ok */)
|
|
7212
|
+
return envObject.setLastError(fresult.status);
|
|
7213
|
+
var f = fresult.f;
|
|
7214
|
+
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
7215
|
+
result >>>= 0;
|
|
6220
7216
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6221
|
-
var value;
|
|
7217
|
+
var value = valueHandle.id;
|
|
7218
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7219
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
7220
|
+
return envObject.getReturnStatus();
|
|
7221
|
+
}
|
|
7222
|
+
/** @__sig ipppppp */
|
|
7223
|
+
function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
6222
7224
|
if (!env)
|
|
6223
7225
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
6224
7226
|
// @ts-expect-error
|
|
@@ -6234,15 +7236,7 @@
|
|
|
6234
7236
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6235
7237
|
if (!cb)
|
|
6236
7238
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6237
|
-
|
|
6238
|
-
if (fresult.status !== 0 /* napi_status.napi_ok */)
|
|
6239
|
-
return envObject.setLastError(fresult.status);
|
|
6240
|
-
var f = fresult.f;
|
|
6241
|
-
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
6242
|
-
value = valueHandle.id;
|
|
6243
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6244
|
-
HEAP_DATA_VIEW.setInt32(result, value, true);
|
|
6245
|
-
return envObject.getReturnStatus();
|
|
7239
|
+
return _emnapi_create_function(env, utf8name, length, cb, data, result);
|
|
6246
7240
|
}
|
|
6247
7241
|
catch (err) {
|
|
6248
7242
|
envObject.tryCatch.setError(err);
|
|
@@ -6257,22 +7251,25 @@
|
|
|
6257
7251
|
if (!cbinfo)
|
|
6258
7252
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6259
7253
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
7254
|
+
argc >>>= 0;
|
|
7255
|
+
argv >>>= 0;
|
|
6260
7256
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6261
7257
|
if (argv) {
|
|
6262
7258
|
if (!argc)
|
|
6263
7259
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6264
7260
|
var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
|
|
7261
|
+
argcValue >>>= 0;
|
|
6265
7262
|
var len = cbinfoValue.args.length;
|
|
6266
7263
|
var arrlen = argcValue < len ? argcValue : len;
|
|
6267
7264
|
var i = 0;
|
|
6268
7265
|
for (; i < arrlen; i++) {
|
|
6269
7266
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6270
7267
|
var argVal = envObject.ensureHandleId(cbinfoValue.args[i]);
|
|
6271
|
-
HEAP_DATA_VIEW.
|
|
7268
|
+
HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true);
|
|
6272
7269
|
}
|
|
6273
7270
|
if (i < argcValue) {
|
|
6274
7271
|
for (; i < argcValue; i++) {
|
|
6275
|
-
HEAP_DATA_VIEW.
|
|
7272
|
+
HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true);
|
|
6276
7273
|
}
|
|
6277
7274
|
}
|
|
6278
7275
|
}
|
|
@@ -6280,12 +7277,14 @@
|
|
|
6280
7277
|
HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
|
|
6281
7278
|
}
|
|
6282
7279
|
if (this_arg) {
|
|
7280
|
+
this_arg >>>= 0;
|
|
6283
7281
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6284
7282
|
var v = envObject.ensureHandleId(cbinfoValue.thiz);
|
|
6285
|
-
HEAP_DATA_VIEW.
|
|
7283
|
+
HEAP_DATA_VIEW.setUint32(this_arg, v, true);
|
|
6286
7284
|
}
|
|
6287
7285
|
if (data) {
|
|
6288
|
-
|
|
7286
|
+
data >>>= 0;
|
|
7287
|
+
HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
|
|
6289
7288
|
}
|
|
6290
7289
|
return envObject.clearLastError();
|
|
6291
7290
|
}
|
|
@@ -6307,6 +7306,9 @@
|
|
|
6307
7306
|
try {
|
|
6308
7307
|
if (!recv)
|
|
6309
7308
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7309
|
+
argc >>>= 0;
|
|
7310
|
+
argv >>>= 0;
|
|
7311
|
+
result >>>= 0;
|
|
6310
7312
|
argc = argc >>> 0;
|
|
6311
7313
|
if (argc > 0) {
|
|
6312
7314
|
if (!argv)
|
|
@@ -6321,13 +7323,13 @@
|
|
|
6321
7323
|
var args = [];
|
|
6322
7324
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6323
7325
|
for (; i < argc; i++) {
|
|
6324
|
-
var argVal = HEAP_DATA_VIEW.
|
|
7326
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
6325
7327
|
args.push(emnapiCtx.handleStore.get(argVal).value);
|
|
6326
7328
|
}
|
|
6327
7329
|
var ret = v8func.apply(v8recv, args);
|
|
6328
7330
|
if (result) {
|
|
6329
7331
|
v = envObject.ensureHandleId(ret);
|
|
6330
|
-
HEAP_DATA_VIEW.
|
|
7332
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6331
7333
|
}
|
|
6332
7334
|
return envObject.clearLastError();
|
|
6333
7335
|
}
|
|
@@ -6354,6 +7356,9 @@
|
|
|
6354
7356
|
try {
|
|
6355
7357
|
if (!constructor)
|
|
6356
7358
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7359
|
+
argc >>>= 0;
|
|
7360
|
+
argv >>>= 0;
|
|
7361
|
+
result >>>= 0;
|
|
6357
7362
|
argc = argc >>> 0;
|
|
6358
7363
|
if (argc > 0) {
|
|
6359
7364
|
if (!argv)
|
|
@@ -6369,7 +7374,7 @@
|
|
|
6369
7374
|
if (emnapiCtx.feature.supportReflect) {
|
|
6370
7375
|
var argList = Array(argc);
|
|
6371
7376
|
for (i = 0; i < argc; i++) {
|
|
6372
|
-
var argVal = HEAP_DATA_VIEW.
|
|
7377
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
6373
7378
|
argList[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
6374
7379
|
}
|
|
6375
7380
|
ret = Reflect.construct(Ctor, argList, Ctor);
|
|
@@ -6378,7 +7383,7 @@
|
|
|
6378
7383
|
var args = Array(argc + 1);
|
|
6379
7384
|
args[0] = undefined;
|
|
6380
7385
|
for (i = 0; i < argc; i++) {
|
|
6381
|
-
var argVal = HEAP_DATA_VIEW.
|
|
7386
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
6382
7387
|
args[i + 1] = emnapiCtx.handleStore.get(argVal).value;
|
|
6383
7388
|
}
|
|
6384
7389
|
var BoundCtor = Ctor.bind.apply(Ctor, args);
|
|
@@ -6386,7 +7391,7 @@
|
|
|
6386
7391
|
}
|
|
6387
7392
|
if (result) {
|
|
6388
7393
|
v = envObject.ensureHandleId(ret);
|
|
6389
|
-
HEAP_DATA_VIEW.
|
|
7394
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6390
7395
|
}
|
|
6391
7396
|
return envObject.getReturnStatus();
|
|
6392
7397
|
}
|
|
@@ -6406,19 +7411,22 @@
|
|
|
6406
7411
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6407
7412
|
if (!result)
|
|
6408
7413
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7414
|
+
result >>>= 0;
|
|
6409
7415
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
6410
7416
|
var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
|
|
7417
|
+
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain, @typescript-eslint/no-unused-vars
|
|
6411
7418
|
var value = thiz == null || thiz.constructor == null
|
|
6412
7419
|
? 0
|
|
6413
7420
|
: thiz instanceof fn
|
|
6414
7421
|
? envObject.ensureHandleId(thiz.constructor)
|
|
6415
7422
|
: 0;
|
|
6416
7423
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6417
|
-
HEAP_DATA_VIEW.
|
|
7424
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6418
7425
|
return envObject.clearLastError();
|
|
6419
7426
|
}
|
|
6420
7427
|
var functionMod = /*#__PURE__*/ Object.freeze({
|
|
6421
7428
|
__proto__: null,
|
|
7429
|
+
_emnapi_create_function: _emnapi_create_function,
|
|
6422
7430
|
napi_call_function: napi_call_function,
|
|
6423
7431
|
napi_create_function: napi_create_function,
|
|
6424
7432
|
napi_get_cb_info: napi_get_cb_info,
|
|
@@ -6436,8 +7444,9 @@
|
|
|
6436
7444
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6437
7445
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6438
7446
|
var scope = emnapiCtx.openScope(envObject);
|
|
7447
|
+
result >>>= 0;
|
|
6439
7448
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6440
|
-
HEAP_DATA_VIEW.
|
|
7449
|
+
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
6441
7450
|
return envObject.clearLastError();
|
|
6442
7451
|
}
|
|
6443
7452
|
/** @__sig ipp */
|
|
@@ -6466,8 +7475,9 @@
|
|
|
6466
7475
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6467
7476
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6468
7477
|
var scope = emnapiCtx.openScope(envObject);
|
|
7478
|
+
result >>>= 0;
|
|
6469
7479
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6470
|
-
HEAP_DATA_VIEW.
|
|
7480
|
+
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
6471
7481
|
return envObject.clearLastError();
|
|
6472
7482
|
}
|
|
6473
7483
|
/** @__sig ipp */
|
|
@@ -6500,11 +7510,13 @@
|
|
|
6500
7510
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6501
7511
|
var scopeObject = emnapiCtx.scopeStore.get(scope);
|
|
6502
7512
|
if (!scopeObject.escapeCalled()) {
|
|
7513
|
+
escapee >>>= 0;
|
|
7514
|
+
result >>>= 0;
|
|
6503
7515
|
var newHandle = scopeObject.escape(escapee);
|
|
6504
7516
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6505
7517
|
var value = newHandle ? newHandle.id : 0;
|
|
6506
7518
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6507
|
-
HEAP_DATA_VIEW.
|
|
7519
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6508
7520
|
return envObject.clearLastError();
|
|
6509
7521
|
}
|
|
6510
7522
|
return envObject.setLastError(12 /* napi_status.napi_escape_called_twice */);
|
|
@@ -6528,8 +7540,9 @@
|
|
|
6528
7540
|
}
|
|
6529
7541
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6530
7542
|
var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1 /* ReferenceOwnership.kUserland */);
|
|
7543
|
+
result >>>= 0;
|
|
6531
7544
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6532
|
-
HEAP_DATA_VIEW.
|
|
7545
|
+
HEAP_DATA_VIEW.setUint32(result, ref.id, true);
|
|
6533
7546
|
return envObject.clearLastError();
|
|
6534
7547
|
}
|
|
6535
7548
|
/** @__sig ipp */
|
|
@@ -6554,6 +7567,7 @@
|
|
|
6554
7567
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6555
7568
|
var count = emnapiCtx.refStore.get(ref).ref();
|
|
6556
7569
|
if (result) {
|
|
7570
|
+
result >>>= 0;
|
|
6557
7571
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6558
7572
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
6559
7573
|
}
|
|
@@ -6576,6 +7590,7 @@
|
|
|
6576
7590
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6577
7591
|
var count = reference.unref();
|
|
6578
7592
|
if (result) {
|
|
7593
|
+
result >>>= 0;
|
|
6579
7594
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6580
7595
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
6581
7596
|
}
|
|
@@ -6595,8 +7610,9 @@
|
|
|
6595
7610
|
var reference = emnapiCtx.refStore.get(ref);
|
|
6596
7611
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6597
7612
|
var handleId = reference.get(envObject);
|
|
7613
|
+
result >>>= 0;
|
|
6598
7614
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6599
|
-
HEAP_DATA_VIEW.
|
|
7615
|
+
HEAP_DATA_VIEW.setUint32(result, handleId, true);
|
|
6600
7616
|
return envObject.clearLastError();
|
|
6601
7617
|
}
|
|
6602
7618
|
/** @__sig ippp */
|
|
@@ -6606,6 +7622,8 @@
|
|
|
6606
7622
|
var envObject = emnapiCtx.envStore.get(env);
|
|
6607
7623
|
if (!fun)
|
|
6608
7624
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7625
|
+
fun >>>= 0;
|
|
7626
|
+
arg >>>= 0;
|
|
6609
7627
|
emnapiCtx.addCleanupHook(envObject, fun, arg);
|
|
6610
7628
|
return 0 /* napi_status.napi_ok */;
|
|
6611
7629
|
}
|
|
@@ -6616,6 +7634,8 @@
|
|
|
6616
7634
|
var envObject = emnapiCtx.envStore.get(env);
|
|
6617
7635
|
if (!fun)
|
|
6618
7636
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7637
|
+
fun >>>= 0;
|
|
7638
|
+
arg >>>= 0;
|
|
6619
7639
|
emnapiCtx.removeCleanupHook(envObject, fun, arg);
|
|
6620
7640
|
return 0 /* napi_status.napi_ok */;
|
|
6621
7641
|
}
|
|
@@ -6682,11 +7702,13 @@
|
|
|
6682
7702
|
var p = new Promise(function (resolve, reject) {
|
|
6683
7703
|
var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
|
|
6684
7704
|
deferredObjectId = deferredObject.id;
|
|
6685
|
-
|
|
7705
|
+
deferred >>>= 0;
|
|
7706
|
+
HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
|
|
6686
7707
|
});
|
|
7708
|
+
promise >>>= 0;
|
|
6687
7709
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6688
7710
|
value = emnapiCtx.addToCurrentScope(p).id;
|
|
6689
|
-
HEAP_DATA_VIEW.
|
|
7711
|
+
HEAP_DATA_VIEW.setUint32(promise, value, true);
|
|
6690
7712
|
return envObject.getReturnStatus();
|
|
6691
7713
|
}
|
|
6692
7714
|
catch (err) {
|
|
@@ -6758,6 +7780,7 @@
|
|
|
6758
7780
|
if (!is_promise)
|
|
6759
7781
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6760
7782
|
var h = emnapiCtx.handleStore.get(value);
|
|
7783
|
+
is_promise >>>= 0;
|
|
6761
7784
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6762
7785
|
var r = h.isPromise() ? 1 : 0;
|
|
6763
7786
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -6905,10 +7928,11 @@
|
|
|
6905
7928
|
}
|
|
6906
7929
|
}
|
|
6907
7930
|
}
|
|
7931
|
+
result >>>= 0;
|
|
6908
7932
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6909
7933
|
value = emnapiCtx.addToCurrentScope(ret).id;
|
|
6910
7934
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6911
|
-
HEAP_DATA_VIEW.
|
|
7935
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6912
7936
|
return envObject.getReturnStatus();
|
|
6913
7937
|
}
|
|
6914
7938
|
catch (err) {
|
|
@@ -6983,6 +8007,7 @@
|
|
|
6983
8007
|
catch (_) {
|
|
6984
8008
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
6985
8009
|
}
|
|
8010
|
+
result >>>= 0;
|
|
6986
8011
|
r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
|
|
6987
8012
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6988
8013
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -7025,10 +8050,11 @@
|
|
|
7025
8050
|
catch (_) {
|
|
7026
8051
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
7027
8052
|
}
|
|
8053
|
+
result >>>= 0;
|
|
7028
8054
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7029
8055
|
value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
|
|
7030
8056
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7031
|
-
HEAP_DATA_VIEW.
|
|
8057
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
7032
8058
|
return envObject.getReturnStatus();
|
|
7033
8059
|
}
|
|
7034
8060
|
catch (err) {
|
|
@@ -7072,6 +8098,7 @@
|
|
|
7072
8098
|
}
|
|
7073
8099
|
}
|
|
7074
8100
|
if (result) {
|
|
8101
|
+
result >>>= 0;
|
|
7075
8102
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7076
8103
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
7077
8104
|
}
|
|
@@ -7119,6 +8146,7 @@
|
|
|
7119
8146
|
return envObject.setLastError(4 /* napi_status.napi_name_expected */);
|
|
7120
8147
|
}
|
|
7121
8148
|
r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
|
|
8149
|
+
result >>>= 0;
|
|
7122
8150
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7123
8151
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
7124
8152
|
return envObject.getReturnStatus();
|
|
@@ -7152,6 +8180,7 @@
|
|
|
7152
8180
|
if (!cname) {
|
|
7153
8181
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7154
8182
|
}
|
|
8183
|
+
cname >>>= 0;
|
|
7155
8184
|
emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
|
|
7156
8185
|
return envObject.getReturnStatus();
|
|
7157
8186
|
}
|
|
@@ -7193,6 +8222,8 @@
|
|
|
7193
8222
|
catch (_) {
|
|
7194
8223
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
7195
8224
|
}
|
|
8225
|
+
utf8name >>>= 0;
|
|
8226
|
+
result >>>= 0;
|
|
7196
8227
|
r = emnapiString.UTF8ToString(utf8name, -1) in v;
|
|
7197
8228
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7198
8229
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
@@ -7236,10 +8267,12 @@
|
|
|
7236
8267
|
catch (_) {
|
|
7237
8268
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
7238
8269
|
}
|
|
8270
|
+
utf8name >>>= 0;
|
|
8271
|
+
result >>>= 0;
|
|
7239
8272
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7240
8273
|
value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
|
|
7241
8274
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7242
|
-
HEAP_DATA_VIEW.
|
|
8275
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
7243
8276
|
return envObject.getReturnStatus();
|
|
7244
8277
|
}
|
|
7245
8278
|
catch (err) {
|
|
@@ -7306,6 +8339,7 @@
|
|
|
7306
8339
|
catch (_) {
|
|
7307
8340
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
7308
8341
|
}
|
|
8342
|
+
result >>>= 0;
|
|
7309
8343
|
r = ((index >>> 0) in v) ? 1 : 0;
|
|
7310
8344
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7311
8345
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -7346,10 +8380,11 @@
|
|
|
7346
8380
|
catch (_) {
|
|
7347
8381
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
7348
8382
|
}
|
|
8383
|
+
result >>>= 0;
|
|
7349
8384
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7350
8385
|
value = envObject.ensureHandleId(v[index >>> 0]);
|
|
7351
8386
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7352
|
-
HEAP_DATA_VIEW.
|
|
8387
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
7353
8388
|
return envObject.getReturnStatus();
|
|
7354
8389
|
}
|
|
7355
8390
|
catch (err) {
|
|
@@ -7390,6 +8425,7 @@
|
|
|
7390
8425
|
}
|
|
7391
8426
|
}
|
|
7392
8427
|
if (result) {
|
|
8428
|
+
result >>>= 0;
|
|
7393
8429
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7394
8430
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
7395
8431
|
}
|
|
@@ -7415,6 +8451,8 @@
|
|
|
7415
8451
|
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
7416
8452
|
envObject.clearLastError();
|
|
7417
8453
|
try {
|
|
8454
|
+
properties >>>= 0;
|
|
8455
|
+
property_count >>>= 0;
|
|
7418
8456
|
property_count = property_count >>> 0;
|
|
7419
8457
|
if (property_count > 0) {
|
|
7420
8458
|
if (!properties)
|
|
@@ -7432,14 +8470,15 @@
|
|
|
7432
8470
|
for (var i = 0; i < property_count; i++) {
|
|
7433
8471
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7434
8472
|
propPtr = properties + (i * (4 * 8));
|
|
7435
|
-
var utf8Name = HEAP_DATA_VIEW.
|
|
7436
|
-
var name_2 = HEAP_DATA_VIEW.
|
|
7437
|
-
var method = HEAP_DATA_VIEW.
|
|
7438
|
-
var getter = HEAP_DATA_VIEW.
|
|
7439
|
-
var setter = HEAP_DATA_VIEW.
|
|
7440
|
-
var value = HEAP_DATA_VIEW.
|
|
8473
|
+
var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
|
|
8474
|
+
var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
|
|
8475
|
+
var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
|
|
8476
|
+
var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
|
|
8477
|
+
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
8478
|
+
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
7441
8479
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
7442
|
-
|
|
8480
|
+
attributes >>>= 0;
|
|
8481
|
+
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
7443
8482
|
if (utf8Name) {
|
|
7444
8483
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
7445
8484
|
}
|
|
@@ -7563,10 +8602,11 @@
|
|
|
7563
8602
|
}
|
|
7564
8603
|
var g = emnapiCtx.handleStore.get(5 /* GlobalHandle.GLOBAL */).value;
|
|
7565
8604
|
var ret = g.eval(v8Script.value);
|
|
8605
|
+
result >>>= 0;
|
|
7566
8606
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7567
8607
|
value = envObject.ensureHandleId(ret);
|
|
7568
8608
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7569
|
-
HEAP_DATA_VIEW.
|
|
8609
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
7570
8610
|
status = envObject.getReturnStatus();
|
|
7571
8611
|
}
|
|
7572
8612
|
catch (err) {
|
|
@@ -7591,6 +8631,7 @@
|
|
|
7591
8631
|
if (!result)
|
|
7592
8632
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7593
8633
|
var v = emnapiCtx.handleStore.get(value);
|
|
8634
|
+
result >>>= 0;
|
|
7594
8635
|
var r;
|
|
7595
8636
|
if (v.isNumber()) {
|
|
7596
8637
|
r = 3 /* napi_valuetype.napi_number */;
|
|
@@ -7655,9 +8696,10 @@
|
|
|
7655
8696
|
if (!result)
|
|
7656
8697
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7657
8698
|
var handle = emnapiCtx.handleStore.get(value);
|
|
8699
|
+
result >>>= 0;
|
|
7658
8700
|
v = handle.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */;
|
|
7659
8701
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7660
|
-
HEAP_DATA_VIEW.
|
|
8702
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
7661
8703
|
return envObject.getReturnStatus();
|
|
7662
8704
|
}
|
|
7663
8705
|
catch (err) {
|
|
@@ -7688,10 +8730,11 @@
|
|
|
7688
8730
|
if (handle.isBigInt()) {
|
|
7689
8731
|
throw new TypeError('Cannot convert a BigInt value to a number');
|
|
7690
8732
|
}
|
|
8733
|
+
result >>>= 0;
|
|
7691
8734
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7692
8735
|
v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
|
|
7693
8736
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7694
|
-
HEAP_DATA_VIEW.
|
|
8737
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
7695
8738
|
return envObject.getReturnStatus();
|
|
7696
8739
|
}
|
|
7697
8740
|
catch (err) {
|
|
@@ -7722,10 +8765,11 @@
|
|
|
7722
8765
|
if (handle.value == null) {
|
|
7723
8766
|
throw new TypeError('Cannot convert undefined or null to object');
|
|
7724
8767
|
}
|
|
8768
|
+
result >>>= 0;
|
|
7725
8769
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7726
8770
|
v = envObject.ensureHandleId(Object(handle.value));
|
|
7727
8771
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7728
|
-
HEAP_DATA_VIEW.
|
|
8772
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
7729
8773
|
return envObject.getReturnStatus();
|
|
7730
8774
|
}
|
|
7731
8775
|
catch (err) {
|
|
@@ -7756,10 +8800,11 @@
|
|
|
7756
8800
|
if (handle.isSymbol()) {
|
|
7757
8801
|
throw new TypeError('Cannot convert a Symbol value to a string');
|
|
7758
8802
|
}
|
|
8803
|
+
result >>>= 0;
|
|
7759
8804
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7760
8805
|
v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
|
|
7761
8806
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7762
|
-
HEAP_DATA_VIEW.
|
|
8807
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
7763
8808
|
return envObject.getReturnStatus();
|
|
7764
8809
|
}
|
|
7765
8810
|
catch (err) {
|
|
@@ -7788,6 +8833,7 @@
|
|
|
7788
8833
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7789
8834
|
if (!constructor)
|
|
7790
8835
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
8836
|
+
result >>>= 0;
|
|
7791
8837
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7792
8838
|
HEAP_DATA_VIEW.setInt8(result, 0, true);
|
|
7793
8839
|
var ctor = emnapiCtx.handleStore.get(constructor);
|
|
@@ -7817,6 +8863,7 @@
|
|
|
7817
8863
|
if (!result)
|
|
7818
8864
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7819
8865
|
var h = emnapiCtx.handleStore.get(value);
|
|
8866
|
+
result >>>= 0;
|
|
7820
8867
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7821
8868
|
var r = h.isArray() ? 1 : 0;
|
|
7822
8869
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -7835,6 +8882,7 @@
|
|
|
7835
8882
|
if (!result)
|
|
7836
8883
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7837
8884
|
var h = emnapiCtx.handleStore.get(value);
|
|
8885
|
+
result >>>= 0;
|
|
7838
8886
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7839
8887
|
var r = h.isArrayBuffer() ? 1 : 0;
|
|
7840
8888
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -7842,6 +8890,28 @@
|
|
|
7842
8890
|
return envObject.clearLastError();
|
|
7843
8891
|
}
|
|
7844
8892
|
/** @__sig ippp */
|
|
8893
|
+
function node_api_is_sharedarraybuffer(env, value, result) {
|
|
8894
|
+
if (!env)
|
|
8895
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
8896
|
+
// @ts-expect-error
|
|
8897
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
8898
|
+
envObject.checkGCAccess();
|
|
8899
|
+
if (!value)
|
|
8900
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
8901
|
+
if (!result)
|
|
8902
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
8903
|
+
var h = emnapiCtx.handleStore.get(value);
|
|
8904
|
+
result >>>= 0;
|
|
8905
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8906
|
+
var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
|
|
8907
|
+
(Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
|
|
8908
|
+
? 1
|
|
8909
|
+
: 0;
|
|
8910
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
8911
|
+
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
8912
|
+
return envObject.clearLastError();
|
|
8913
|
+
}
|
|
8914
|
+
/** @__sig ippp */
|
|
7845
8915
|
function napi_is_date(env, value, result) {
|
|
7846
8916
|
if (!env)
|
|
7847
8917
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
@@ -7853,6 +8923,7 @@
|
|
|
7853
8923
|
if (!result)
|
|
7854
8924
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7855
8925
|
var h = emnapiCtx.handleStore.get(value);
|
|
8926
|
+
result >>>= 0;
|
|
7856
8927
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7857
8928
|
var r = h.isDate() ? 1 : 0;
|
|
7858
8929
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -7871,6 +8942,7 @@
|
|
|
7871
8942
|
if (!result)
|
|
7872
8943
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7873
8944
|
var val = emnapiCtx.handleStore.get(value).value;
|
|
8945
|
+
result >>>= 0;
|
|
7874
8946
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7875
8947
|
var r = (val instanceof Error) ? 1 : 0;
|
|
7876
8948
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -7889,6 +8961,7 @@
|
|
|
7889
8961
|
if (!result)
|
|
7890
8962
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7891
8963
|
var h = emnapiCtx.handleStore.get(value);
|
|
8964
|
+
result >>>= 0;
|
|
7892
8965
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7893
8966
|
var r = h.isTypedArray() ? 1 : 0;
|
|
7894
8967
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -7907,6 +8980,7 @@
|
|
|
7907
8980
|
if (!result)
|
|
7908
8981
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7909
8982
|
var h = emnapiCtx.handleStore.get(value);
|
|
8983
|
+
result >>>= 0;
|
|
7910
8984
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7911
8985
|
var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
|
|
7912
8986
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -7925,6 +8999,7 @@
|
|
|
7925
8999
|
if (!result)
|
|
7926
9000
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7927
9001
|
var h = emnapiCtx.handleStore.get(value);
|
|
9002
|
+
result >>>= 0;
|
|
7928
9003
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7929
9004
|
var r = h.isDataView() ? 1 : 0;
|
|
7930
9005
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -7954,6 +9029,7 @@
|
|
|
7954
9029
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7955
9030
|
var lv = emnapiCtx.handleStore.get(lhs).value;
|
|
7956
9031
|
var rv = emnapiCtx.handleStore.get(rhs).value;
|
|
9032
|
+
result >>>= 0;
|
|
7957
9033
|
r = (lv === rv) ? 1 : 0;
|
|
7958
9034
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7959
9035
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -8008,6 +9084,7 @@
|
|
|
8008
9084
|
if (!result)
|
|
8009
9085
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
8010
9086
|
var h = emnapiCtx.handleStore.get(arraybuffer);
|
|
9087
|
+
result >>>= 0;
|
|
8011
9088
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
8012
9089
|
if (h.isArrayBuffer() && h.value.byteLength === 0) {
|
|
8013
9090
|
try {
|
|
@@ -8044,7 +9121,8 @@
|
|
|
8044
9121
|
napi_is_error: napi_is_error,
|
|
8045
9122
|
napi_is_typedarray: napi_is_typedarray,
|
|
8046
9123
|
napi_strict_equals: napi_strict_equals,
|
|
8047
|
-
napi_typeof: napi_typeof
|
|
9124
|
+
napi_typeof: napi_typeof,
|
|
9125
|
+
node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer
|
|
8048
9126
|
});
|
|
8049
9127
|
/** @__sig ipp */
|
|
8050
9128
|
function napi_get_version(env, result) {
|
|
@@ -8065,11 +9143,13 @@
|
|
|
8065
9143
|
});
|
|
8066
9144
|
emnapiAWST.init();
|
|
8067
9145
|
emnapiExternalMemory.init();
|
|
9146
|
+
emnapiExternalSAB.init();
|
|
8068
9147
|
emnapiString.init();
|
|
8069
9148
|
emnapiTSFN.init();
|
|
8070
9149
|
PThread.init();
|
|
8071
9150
|
napiModule.emnapi.syncMemory = $emnapiSyncMemory;
|
|
8072
9151
|
napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
|
|
9152
|
+
napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
|
|
8073
9153
|
function addImports(mod) {
|
|
8074
9154
|
var keys = Object.keys(mod);
|
|
8075
9155
|
for (var i = 0; i < keys.length; ++i) {
|
|
@@ -8319,6 +9399,17 @@
|
|
|
8319
9399
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
8320
9400
|
}
|
|
8321
9401
|
|
|
9402
|
+
var __assign = function() {
|
|
9403
|
+
__assign = Object.assign || function __assign(t) {
|
|
9404
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9405
|
+
s = arguments[i];
|
|
9406
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
9407
|
+
}
|
|
9408
|
+
return t;
|
|
9409
|
+
};
|
|
9410
|
+
return __assign.apply(this, arguments);
|
|
9411
|
+
};
|
|
9412
|
+
|
|
8322
9413
|
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
8323
9414
|
var e = new Error(message);
|
|
8324
9415
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
@@ -8332,7 +9423,22 @@
|
|
|
8332
9423
|
if (typeof options.onLoad !== 'function') {
|
|
8333
9424
|
throw new TypeError('options.onLoad is not a function');
|
|
8334
9425
|
}
|
|
8335
|
-
|
|
9426
|
+
var userOnError = options.onError;
|
|
9427
|
+
_this = _super.call(this, __assign(__assign({}, options), { onError: function (err, type) {
|
|
9428
|
+
var _a;
|
|
9429
|
+
var emnapi_thread_crashed = (_a = _this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed;
|
|
9430
|
+
if (typeof emnapi_thread_crashed === 'function') {
|
|
9431
|
+
emnapi_thread_crashed();
|
|
9432
|
+
} /* else {
|
|
9433
|
+
tryWakeUpPthreadJoin(this.instance!)
|
|
9434
|
+
} */
|
|
9435
|
+
if (typeof userOnError === 'function') {
|
|
9436
|
+
userOnError(err, type);
|
|
9437
|
+
}
|
|
9438
|
+
else {
|
|
9439
|
+
throw err;
|
|
9440
|
+
}
|
|
9441
|
+
} })) || this;
|
|
8336
9442
|
_this.napiModule = undefined;
|
|
8337
9443
|
return _this;
|
|
8338
9444
|
}
|
|
@@ -8356,22 +9462,36 @@
|
|
|
8356
9462
|
if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
|
|
8357
9463
|
var type = e.data.__emnapi__.type;
|
|
8358
9464
|
var payload_1 = e.data.__emnapi__.payload;
|
|
8359
|
-
|
|
8360
|
-
|
|
8361
|
-
|
|
8362
|
-
|
|
9465
|
+
try {
|
|
9466
|
+
if (type === 'async-worker-init') {
|
|
9467
|
+
this.handleAfterLoad(e, function () {
|
|
9468
|
+
_this.napiModule.initWorker(payload_1.arg, payload_1.func);
|
|
9469
|
+
});
|
|
9470
|
+
}
|
|
8363
9471
|
}
|
|
8364
|
-
|
|
8365
|
-
this.
|
|
8366
|
-
_this.napiModule.executeAsyncWork(payload_1.work);
|
|
8367
|
-
});
|
|
9472
|
+
catch (err) {
|
|
9473
|
+
this.onError(err, type);
|
|
8368
9474
|
}
|
|
8369
9475
|
}
|
|
8370
9476
|
};
|
|
8371
9477
|
return MessageHandler;
|
|
8372
9478
|
}(ThreadMessageHandler));
|
|
9479
|
+
// function tryWakeUpPthreadJoin (instance: WebAssembly.Instance): void {
|
|
9480
|
+
// // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/thread/pthread_join.c#L18-L21
|
|
9481
|
+
// const pthread_self = instance.exports.pthread_self as () => number
|
|
9482
|
+
// const memory = instance.exports.memory as WebAssembly.Memory
|
|
9483
|
+
// if (typeof pthread_self === 'function') {
|
|
9484
|
+
// const selfThread = pthread_self()
|
|
9485
|
+
// if (selfThread && memory) {
|
|
9486
|
+
// // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/internal/pthread_impl.h#L45
|
|
9487
|
+
// const detatchState = new Int32Array(memory.buffer, selfThread + 7 * 4 /** detach_state */, 1)
|
|
9488
|
+
// Atomics.store(detatchState, 0, 0)
|
|
9489
|
+
// Atomics.notify(detatchState, 0, Infinity)
|
|
9490
|
+
// }
|
|
9491
|
+
// }
|
|
9492
|
+
// }
|
|
8373
9493
|
|
|
8374
|
-
var version = "1.
|
|
9494
|
+
var version = "1.11.1";
|
|
8375
9495
|
|
|
8376
9496
|
exports.MessageHandler = MessageHandler;
|
|
8377
9497
|
exports.ThreadManager = ThreadManager;
|