@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ThreadManager, WASIThreads, ThreadMessageHandler } from '@emnapi/wasi-threads';
|
|
2
2
|
export * from '@emnapi/wasi-threads';
|
|
3
|
-
import { __extends } from 'tslib';
|
|
3
|
+
import { __extends, __assign } from 'tslib';
|
|
4
4
|
|
|
5
5
|
/* eslint-disable no-undef */
|
|
6
6
|
var _WebAssembly = typeof WebAssembly !== 'undefined'
|
|
@@ -116,7 +116,6 @@ function createNapiModule(options) {
|
|
|
116
116
|
filename: '',
|
|
117
117
|
childThread: ENVIRONMENT_IS_PTHREAD,
|
|
118
118
|
initWorker: undefined,
|
|
119
|
-
executeAsyncWork: undefined,
|
|
120
119
|
waitThreadStart: waitThreadStart,
|
|
121
120
|
PThread: undefined,
|
|
122
121
|
init: function (options) {
|
|
@@ -165,6 +164,11 @@ function createNapiModule(options) {
|
|
|
165
164
|
napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
|
|
166
165
|
});
|
|
167
166
|
}
|
|
167
|
+
catch (e) {
|
|
168
|
+
if (e !== 'unwind') {
|
|
169
|
+
throw e;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
168
172
|
finally {
|
|
169
173
|
emnapiCtx.closeScope(envObject, scope_1);
|
|
170
174
|
}
|
|
@@ -312,6 +316,9 @@ function createNapiModule(options) {
|
|
|
312
316
|
* @__sig vppp
|
|
313
317
|
*/
|
|
314
318
|
function _emnapi_get_node_version(major, minor, patch) {
|
|
319
|
+
major >>>= 0;
|
|
320
|
+
minor >>>= 0;
|
|
321
|
+
patch >>>= 0;
|
|
315
322
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
316
323
|
var versions = (typeof process === 'object' && process !== null &&
|
|
317
324
|
typeof process.versions === 'object' && process.versions !== null &&
|
|
@@ -377,6 +384,7 @@ function createNapiModule(options) {
|
|
|
377
384
|
*/
|
|
378
385
|
function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
|
|
379
386
|
var envObject = emnapiCtx.envStore.get(env);
|
|
387
|
+
callback >>>= 0;
|
|
380
388
|
envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
|
|
381
389
|
}
|
|
382
390
|
/**
|
|
@@ -391,6 +399,31 @@ function createNapiModule(options) {
|
|
|
391
399
|
function _emnapi_ctx_decrease_waiting_request_counter() {
|
|
392
400
|
emnapiCtx.decreaseWaitingRequestCounter();
|
|
393
401
|
}
|
|
402
|
+
/**
|
|
403
|
+
* @__sig i
|
|
404
|
+
*/
|
|
405
|
+
function _emnapi_is_main_runtime_thread() {
|
|
406
|
+
return ENVIRONMENT_IS_PTHREAD ? 0 : 1;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* @__sig i
|
|
410
|
+
*/
|
|
411
|
+
function _emnapi_is_main_browser_thread() {
|
|
412
|
+
return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* @__sig v
|
|
416
|
+
*/
|
|
417
|
+
function _emnapi_unwind() {
|
|
418
|
+
// eslint-disable-next-line @typescript-eslint/no-throw-literal
|
|
419
|
+
throw 'unwind';
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* @__sig d
|
|
423
|
+
*/
|
|
424
|
+
function _emnapi_get_now() {
|
|
425
|
+
return performance.timeOrigin + performance.now();
|
|
426
|
+
}
|
|
394
427
|
function $emnapiSetValueI64(result, numberValue) {
|
|
395
428
|
var tempDouble;
|
|
396
429
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -402,18 +435,38 @@ function createNapiModule(options) {
|
|
|
402
435
|
HEAP_DATA_VIEW.setInt32(result, tempI64[0], true);
|
|
403
436
|
HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true);
|
|
404
437
|
}
|
|
438
|
+
/**
|
|
439
|
+
* @__deps $emnapiCtx
|
|
440
|
+
* @__sig p
|
|
441
|
+
*/
|
|
442
|
+
function _emnapi_open_handle_scope() {
|
|
443
|
+
return emnapiCtx.openScope().id;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* @__deps $emnapiCtx
|
|
447
|
+
* @__sig vp
|
|
448
|
+
*/
|
|
449
|
+
function _emnapi_close_handle_scope(_scope) {
|
|
450
|
+
return emnapiCtx.closeScope();
|
|
451
|
+
}
|
|
405
452
|
var utilMod = /*#__PURE__*/ Object.freeze({
|
|
406
453
|
__proto__: null,
|
|
407
454
|
$emnapiSetValueI64: $emnapiSetValueI64,
|
|
408
455
|
_emnapi_call_finalizer: _emnapi_call_finalizer,
|
|
409
456
|
_emnapi_callback_into_module: _emnapi_callback_into_module,
|
|
457
|
+
_emnapi_close_handle_scope: _emnapi_close_handle_scope,
|
|
410
458
|
_emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter,
|
|
411
459
|
_emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter,
|
|
412
460
|
_emnapi_get_node_version: _emnapi_get_node_version,
|
|
461
|
+
_emnapi_get_now: _emnapi_get_now,
|
|
462
|
+
_emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
|
|
463
|
+
_emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread,
|
|
413
464
|
_emnapi_next_tick: _emnapi_next_tick,
|
|
465
|
+
_emnapi_open_handle_scope: _emnapi_open_handle_scope,
|
|
414
466
|
_emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop,
|
|
415
467
|
_emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push,
|
|
416
468
|
_emnapi_set_immediate: _emnapi_set_immediate,
|
|
469
|
+
_emnapi_unwind: _emnapi_unwind,
|
|
417
470
|
napi_clear_last_error: napi_clear_last_error,
|
|
418
471
|
napi_set_last_error: napi_set_last_error
|
|
419
472
|
});
|
|
@@ -437,9 +490,20 @@ function createNapiModule(options) {
|
|
|
437
490
|
return worker;
|
|
438
491
|
}
|
|
439
492
|
/** @__sig vp */
|
|
493
|
+
function _emnapi_worker_ref(pthreadPtr) {
|
|
494
|
+
if (ENVIRONMENT_IS_PTHREAD)
|
|
495
|
+
return;
|
|
496
|
+
pthreadPtr >>>= 0;
|
|
497
|
+
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
498
|
+
if (worker && typeof worker.ref === 'function') {
|
|
499
|
+
worker.ref();
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
/** @__sig vp */
|
|
440
503
|
function _emnapi_worker_unref(pthreadPtr) {
|
|
441
504
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
442
505
|
return;
|
|
506
|
+
pthreadPtr >>>= 0;
|
|
443
507
|
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
444
508
|
if (worker && typeof worker.unref === 'function') {
|
|
445
509
|
worker.unref();
|
|
@@ -481,10 +545,6 @@ function createNapiModule(options) {
|
|
|
481
545
|
};
|
|
482
546
|
});
|
|
483
547
|
uvThreadpoolReady.ready = false;
|
|
484
|
-
/** @__sig i */
|
|
485
|
-
function _emnapi_is_main_browser_thread() {
|
|
486
|
-
return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
|
|
487
|
-
}
|
|
488
548
|
/** @__sig vppi */
|
|
489
549
|
function _emnapi_after_uvthreadpool_ready(callback, q, type) {
|
|
490
550
|
if (uvThreadpoolReady.ready) {
|
|
@@ -501,7 +561,7 @@ function createNapiModule(options) {
|
|
|
501
561
|
var p = [];
|
|
502
562
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
503
563
|
var _loop_1 = function (i) {
|
|
504
|
-
var pthreadPtr = HEAP_DATA_VIEW.
|
|
564
|
+
var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true);
|
|
505
565
|
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
506
566
|
p.push(new Promise(function (resolve) {
|
|
507
567
|
var handler = function (e) {
|
|
@@ -550,11 +610,10 @@ function createNapiModule(options) {
|
|
|
550
610
|
_emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready,
|
|
551
611
|
_emnapi_async_send_js: _emnapi_async_send_js,
|
|
552
612
|
_emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
|
|
553
|
-
_emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
|
|
554
613
|
_emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
|
|
614
|
+
_emnapi_worker_ref: _emnapi_worker_ref,
|
|
555
615
|
_emnapi_worker_unref: _emnapi_worker_unref
|
|
556
616
|
});
|
|
557
|
-
/* eslint-disable @typescript-eslint/indent */
|
|
558
617
|
/** @__sig ipjp */
|
|
559
618
|
function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
|
|
560
619
|
if (!env)
|
|
@@ -562,22 +621,15 @@ function createNapiModule(options) {
|
|
|
562
621
|
var envObject = emnapiCtx.envStore.get(env);
|
|
563
622
|
if (!adjusted_value)
|
|
564
623
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
}
|
|
569
|
-
var old_size = wasmMemory.buffer.byteLength;
|
|
570
|
-
var new_size = old_size + change_in_bytes_number;
|
|
571
|
-
new_size = new_size + ((65536 - new_size % 65536) % 65536);
|
|
572
|
-
if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
|
|
573
|
-
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
574
|
-
}
|
|
624
|
+
// eslint-disable-next-line prefer-const
|
|
625
|
+
var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
|
|
626
|
+
adjusted_value >>>= 0;
|
|
575
627
|
if (emnapiCtx.feature.supportBigInt) {
|
|
576
628
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
577
|
-
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(
|
|
629
|
+
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
|
|
578
630
|
}
|
|
579
631
|
else {
|
|
580
|
-
$emnapiSetValueI64(adjusted_value,
|
|
632
|
+
$emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
|
|
581
633
|
}
|
|
582
634
|
return envObject.clearLastError();
|
|
583
635
|
}
|
|
@@ -745,6 +797,7 @@ function createNapiModule(options) {
|
|
|
745
797
|
var asyncId = asyncContext.asyncId;
|
|
746
798
|
var triggerAsyncId = asyncContext.triggerAsyncId;
|
|
747
799
|
if (result) {
|
|
800
|
+
result >>>= 0;
|
|
748
801
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
749
802
|
HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
|
|
750
803
|
HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
|
|
@@ -788,11 +841,13 @@ function createNapiModule(options) {
|
|
|
788
841
|
return;
|
|
789
842
|
var resource = emnapiCtx.handleStore.get(async_resource).value;
|
|
790
843
|
var callback = emnapiCtx.handleStore.get(cb).value;
|
|
844
|
+
argv >>>= 0;
|
|
845
|
+
size >>>= 0;
|
|
791
846
|
size = size >>> 0;
|
|
792
847
|
var arr = Array(size);
|
|
793
848
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
794
849
|
for (; i < size; i++) {
|
|
795
|
-
var argVal = HEAP_DATA_VIEW.
|
|
850
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
796
851
|
arr[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
797
852
|
}
|
|
798
853
|
var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, {
|
|
@@ -800,10 +855,11 @@ function createNapiModule(options) {
|
|
|
800
855
|
triggerAsyncId: trigger_async_id
|
|
801
856
|
});
|
|
802
857
|
if (result) {
|
|
858
|
+
result >>>= 0;
|
|
803
859
|
var envObject = emnapiCtx.envStore.get(env);
|
|
804
860
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
805
861
|
v = envObject.ensureHandleId(ret);
|
|
806
|
-
HEAP_DATA_VIEW.
|
|
862
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
807
863
|
}
|
|
808
864
|
}
|
|
809
865
|
/** @__sig ippp */
|
|
@@ -830,6 +886,7 @@ function createNapiModule(options) {
|
|
|
830
886
|
var low = Number(numberValue & BigInt(0xffffffff));
|
|
831
887
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
832
888
|
var high = Number(numberValue >> BigInt(32));
|
|
889
|
+
result >>>= 0;
|
|
833
890
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
834
891
|
HEAP_DATA_VIEW.setInt32(result, low, true);
|
|
835
892
|
HEAP_DATA_VIEW.setInt32(result + 4, high, true);
|
|
@@ -840,6 +897,7 @@ function createNapiModule(options) {
|
|
|
840
897
|
if (!emnapiNodeBinding) {
|
|
841
898
|
return 9 /* napi_status.napi_generic_failure */;
|
|
842
899
|
}
|
|
900
|
+
async_context >>>= 0;
|
|
843
901
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
844
902
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
845
903
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
@@ -888,14 +946,17 @@ function createNapiModule(options) {
|
|
|
888
946
|
if (typeof v8func !== 'function') {
|
|
889
947
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
890
948
|
}
|
|
949
|
+
async_context >>>= 0;
|
|
891
950
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
892
951
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
893
952
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
894
953
|
var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
|
|
954
|
+
argv >>>= 0;
|
|
955
|
+
argc >>>= 0;
|
|
895
956
|
argc = argc >>> 0;
|
|
896
957
|
var arr = Array(argc);
|
|
897
958
|
for (; i < argc; i++) {
|
|
898
|
-
var argVal = HEAP_DATA_VIEW.
|
|
959
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
899
960
|
arr[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
900
961
|
}
|
|
901
962
|
var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr);
|
|
@@ -905,9 +966,10 @@ function createNapiModule(options) {
|
|
|
905
966
|
if (ret.status !== 0 /* napi_status.napi_ok */)
|
|
906
967
|
return envObject.setLastError(ret.status);
|
|
907
968
|
if (result) {
|
|
969
|
+
result >>>= 0;
|
|
908
970
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
909
971
|
v = envObject.ensureHandleId(ret.value);
|
|
910
|
-
HEAP_DATA_VIEW.
|
|
972
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
911
973
|
}
|
|
912
974
|
return envObject.getReturnStatus();
|
|
913
975
|
}
|
|
@@ -942,32 +1004,62 @@ function createNapiModule(options) {
|
|
|
942
1004
|
* ```
|
|
943
1005
|
*/
|
|
944
1006
|
var emnapiTSFN = {
|
|
1007
|
+
_liveSet: {},
|
|
945
1008
|
offset: {
|
|
1009
|
+
__size__: 0,
|
|
946
1010
|
/* napi_ref */ resource: 0,
|
|
947
|
-
/* double */ async_id:
|
|
948
|
-
/* double */ trigger_async_id:
|
|
949
|
-
/* size_t */ queue_size:
|
|
950
|
-
/*
|
|
951
|
-
/*
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
/* size_t */
|
|
956
|
-
/*
|
|
957
|
-
/*
|
|
958
|
-
/* void* */
|
|
959
|
-
/*
|
|
960
|
-
/*
|
|
961
|
-
/*
|
|
962
|
-
/*
|
|
963
|
-
/*
|
|
964
|
-
/*
|
|
965
|
-
|
|
1011
|
+
/* double */ async_id: 0,
|
|
1012
|
+
/* double */ trigger_async_id: 0,
|
|
1013
|
+
/* size_t */ queue_size: 0,
|
|
1014
|
+
/* bool */ is_some: 0,
|
|
1015
|
+
/* void* */ queue: 0,
|
|
1016
|
+
// Reuse uv_async_t storage as JS-side wakeup state: pending event + scheduled drain.
|
|
1017
|
+
async_pending: 0,
|
|
1018
|
+
async_u_fd: 0,
|
|
1019
|
+
/* size_t */ thread_count: 0,
|
|
1020
|
+
/* int32_t */ state: 0,
|
|
1021
|
+
/* atomic_uchar */ dispatch_state: 0,
|
|
1022
|
+
/* void* */ context: 0,
|
|
1023
|
+
/* size_t */ max_queue_size: 0,
|
|
1024
|
+
/* napi_ref */ ref: 0,
|
|
1025
|
+
/* napi_env */ env: 0,
|
|
1026
|
+
/* void* */ finalize_data: 0,
|
|
1027
|
+
/* napi_finalize */ finalize_cb: 0,
|
|
1028
|
+
/* napi_threadsafe_function_call_js */ call_js_cb: 0,
|
|
1029
|
+
/* bool */ handles_closing: 0,
|
|
1030
|
+
/* bool */ async_ref: 0,
|
|
1031
|
+
/* int32_t */ mutex: 0,
|
|
1032
|
+
/* int32_t */ cond: 0
|
|
966
1033
|
},
|
|
967
1034
|
init: function () {
|
|
1035
|
+
emnapiTSFN._liveSet = new Set();
|
|
1036
|
+
emnapiTSFN.offset.__size__ = 184 /* NapiTSFNOffset32.__size__ */;
|
|
1037
|
+
emnapiTSFN.offset.resource = 0 /* NapiTSFNOffset32.async_resource_resource */;
|
|
1038
|
+
emnapiTSFN.offset.async_id = 8 /* NapiTSFNOffset32.async_resource_async_context_async_id */;
|
|
1039
|
+
emnapiTSFN.offset.trigger_async_id = 16 /* NapiTSFNOffset32.async_resource_async_context_trigger_async_id */;
|
|
1040
|
+
emnapiTSFN.offset.queue_size = 60 /* NapiTSFNOffset32.queue_size */;
|
|
1041
|
+
emnapiTSFN.offset.is_some = 24 /* NapiTSFNOffset32.async_resource_is_some */;
|
|
1042
|
+
emnapiTSFN.offset.queue = 64 /* NapiTSFNOffset32.queue */;
|
|
1043
|
+
emnapiTSFN.offset.async_pending = 132 /* NapiTSFNOffset32.async_pending */;
|
|
1044
|
+
emnapiTSFN.offset.async_u_fd = 96 /* NapiTSFNOffset32.async_u_fd */;
|
|
1045
|
+
emnapiTSFN.offset.thread_count = 136 /* NapiTSFNOffset32.thread_count */;
|
|
1046
|
+
emnapiTSFN.offset.state = 140 /* NapiTSFNOffset32.state */;
|
|
1047
|
+
emnapiTSFN.offset.dispatch_state = 144 /* NapiTSFNOffset32.dispatch_state */;
|
|
1048
|
+
emnapiTSFN.offset.context = 148 /* NapiTSFNOffset32.context */;
|
|
1049
|
+
emnapiTSFN.offset.max_queue_size = 152 /* NapiTSFNOffset32.max_queue_size */;
|
|
1050
|
+
emnapiTSFN.offset.ref = 156 /* NapiTSFNOffset32.ref */;
|
|
1051
|
+
emnapiTSFN.offset.env = 160 /* NapiTSFNOffset32.env */;
|
|
1052
|
+
emnapiTSFN.offset.finalize_data = 164 /* NapiTSFNOffset32.finalize_data */;
|
|
1053
|
+
emnapiTSFN.offset.finalize_cb = 168 /* NapiTSFNOffset32.finalize_cb */;
|
|
1054
|
+
emnapiTSFN.offset.call_js_cb = 172 /* NapiTSFNOffset32.call_js_cb */;
|
|
1055
|
+
emnapiTSFN.offset.handles_closing = 176 /* NapiTSFNOffset32.handles_closing */;
|
|
1056
|
+
emnapiTSFN.offset.async_ref = 180 /* NapiTSFNOffset32.async_ref */;
|
|
1057
|
+
emnapiTSFN.offset.mutex = 32 /* NapiTSFNOffset32.mutex */;
|
|
1058
|
+
emnapiTSFN.offset.cond = 56 /* NapiTSFNOffset32.cond */;
|
|
1059
|
+
emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
|
|
968
1060
|
if (typeof PThread !== 'undefined') {
|
|
969
1061
|
PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
|
|
970
|
-
PThread.
|
|
1062
|
+
Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
|
|
971
1063
|
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
972
1064
|
PThread.getNewWorker = function () {
|
|
973
1065
|
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
@@ -988,7 +1080,10 @@ function createNapiModule(options) {
|
|
|
988
1080
|
var type = __emnapi__.type;
|
|
989
1081
|
var payload = __emnapi__.payload;
|
|
990
1082
|
if (type === 'tsfn-send') {
|
|
991
|
-
emnapiTSFN.
|
|
1083
|
+
var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
|
|
1084
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
1085
|
+
emnapiTSFN.enqueue(payload.tsfn);
|
|
1086
|
+
}
|
|
992
1087
|
}
|
|
993
1088
|
}
|
|
994
1089
|
};
|
|
@@ -1010,18 +1105,40 @@ function createNapiModule(options) {
|
|
|
1010
1105
|
}
|
|
1011
1106
|
return true;
|
|
1012
1107
|
},
|
|
1108
|
+
/**
|
|
1109
|
+
* When another thread grows the shared WebAssembly.Memory, this agent's
|
|
1110
|
+
* cached `wasmMemory.buffer` may still have the old shorter length
|
|
1111
|
+
* (V8 refreshes it lazily). If a pointer derived from shared memory lies
|
|
1112
|
+
* beyond the cached length, `wasmMemory.grow(0)` forces the agent to
|
|
1113
|
+
* observe the current memory size and refreshes the buffer.
|
|
1114
|
+
*/
|
|
1115
|
+
ensureBufferFor: function (end) {
|
|
1116
|
+
var buffer = wasmMemory.buffer;
|
|
1117
|
+
if (end > buffer.byteLength) {
|
|
1118
|
+
wasmMemory.grow(0);
|
|
1119
|
+
buffer = wasmMemory.buffer;
|
|
1120
|
+
}
|
|
1121
|
+
return buffer;
|
|
1122
|
+
},
|
|
1013
1123
|
initQueue: function (func) {
|
|
1014
1124
|
var size = 2 * 4;
|
|
1015
1125
|
var queue = _malloc(size);
|
|
1016
1126
|
if (!queue)
|
|
1017
1127
|
return false;
|
|
1018
|
-
|
|
1128
|
+
queue >>>= 0;
|
|
1129
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
|
|
1019
1130
|
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
1020
1131
|
return true;
|
|
1021
1132
|
},
|
|
1022
1133
|
destroyQueue: function (func) {
|
|
1023
1134
|
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
1024
1135
|
if (queue) {
|
|
1136
|
+
var node = emnapiTSFN.loadSizeTypeValue(queue, false);
|
|
1137
|
+
while (node !== 0) {
|
|
1138
|
+
var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
|
|
1139
|
+
_free(node);
|
|
1140
|
+
node = next;
|
|
1141
|
+
}
|
|
1025
1142
|
_free(queue);
|
|
1026
1143
|
}
|
|
1027
1144
|
},
|
|
@@ -1034,6 +1151,7 @@ function createNapiModule(options) {
|
|
|
1034
1151
|
var node = _malloc(size);
|
|
1035
1152
|
if (!node)
|
|
1036
1153
|
throw new Error('OOM');
|
|
1154
|
+
node >>>= 0;
|
|
1037
1155
|
emnapiTSFN.storeSizeTypeValue(node, data, false);
|
|
1038
1156
|
emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
|
|
1039
1157
|
if (head === 0 && tail === 0) {
|
|
@@ -1069,11 +1187,11 @@ function createNapiModule(options) {
|
|
|
1069
1187
|
var waitCondition = function () {
|
|
1070
1188
|
var queueSize = emnapiTSFN.getQueueSize(func);
|
|
1071
1189
|
var maxSize = emnapiTSFN.getMaxQueueSize(func);
|
|
1072
|
-
|
|
1073
|
-
return queueSize >= maxSize && maxSize > 0 && !isClosing;
|
|
1190
|
+
return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0 /* State.kOpen */;
|
|
1074
1191
|
};
|
|
1075
1192
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1076
|
-
|
|
1193
|
+
var shouldDelete = false;
|
|
1194
|
+
var ret = mutex.execute(function () {
|
|
1077
1195
|
while (waitCondition()) {
|
|
1078
1196
|
if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) {
|
|
1079
1197
|
return 15 /* napi_status.napi_queue_full */;
|
|
@@ -1090,31 +1208,35 @@ function createNapiModule(options) {
|
|
|
1090
1208
|
}
|
|
1091
1209
|
cond.wait();
|
|
1092
1210
|
}
|
|
1093
|
-
if (emnapiTSFN.
|
|
1094
|
-
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1095
|
-
return 1 /* napi_status.napi_invalid_arg */;
|
|
1096
|
-
}
|
|
1097
|
-
else {
|
|
1098
|
-
emnapiTSFN.subThreadCount(func);
|
|
1099
|
-
return 16 /* napi_status.napi_closing */;
|
|
1100
|
-
}
|
|
1101
|
-
}
|
|
1102
|
-
else {
|
|
1211
|
+
if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
|
|
1103
1212
|
emnapiTSFN.pushQueue(func, data);
|
|
1104
1213
|
emnapiTSFN.send(func);
|
|
1105
1214
|
return 0 /* napi_status.napi_ok */;
|
|
1106
1215
|
}
|
|
1216
|
+
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1217
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
1218
|
+
}
|
|
1219
|
+
emnapiTSFN.subThreadCount(func);
|
|
1220
|
+
if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1221
|
+
return 16 /* napi_status.napi_closing */;
|
|
1222
|
+
}
|
|
1223
|
+
shouldDelete = true;
|
|
1224
|
+
return 16 /* napi_status.napi_closing */;
|
|
1107
1225
|
});
|
|
1226
|
+
if (shouldDelete) {
|
|
1227
|
+
emnapiTSFN.destroy(func);
|
|
1228
|
+
}
|
|
1229
|
+
return ret;
|
|
1108
1230
|
},
|
|
1109
1231
|
getMutex: function (func) {
|
|
1110
1232
|
var index = func + emnapiTSFN.offset.mutex;
|
|
1111
1233
|
var mutex = {
|
|
1112
1234
|
lock: function () {
|
|
1113
1235
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1114
|
-
var i32a = new Int32Array(
|
|
1236
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1115
1237
|
if (isBrowserMain) {
|
|
1116
1238
|
while (true) {
|
|
1117
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1239
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1118
1240
|
if (oldValue === 0) {
|
|
1119
1241
|
return;
|
|
1120
1242
|
}
|
|
@@ -1122,11 +1244,11 @@ function createNapiModule(options) {
|
|
|
1122
1244
|
}
|
|
1123
1245
|
else {
|
|
1124
1246
|
while (true) {
|
|
1125
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1247
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1126
1248
|
if (oldValue === 0) {
|
|
1127
1249
|
return;
|
|
1128
1250
|
}
|
|
1129
|
-
Atomics.wait(i32a, 0,
|
|
1251
|
+
Atomics.wait(i32a, 0, 10);
|
|
1130
1252
|
}
|
|
1131
1253
|
}
|
|
1132
1254
|
},
|
|
@@ -1134,21 +1256,21 @@ function createNapiModule(options) {
|
|
|
1134
1256
|
return new Promise<void>(resolve => {
|
|
1135
1257
|
const again = (): void => { fn() }
|
|
1136
1258
|
const fn = (): void => {
|
|
1137
|
-
const i32a = new Int32Array(
|
|
1138
|
-
const oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1259
|
+
const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
|
|
1260
|
+
const oldValue = Atomics.compareExchange(i32a, 0, 0, 10)
|
|
1139
1261
|
if (oldValue === 0) {
|
|
1140
1262
|
resolve()
|
|
1141
1263
|
return
|
|
1142
1264
|
}
|
|
1143
|
-
(Atomics as any).waitAsync(i32a, 0,
|
|
1265
|
+
(Atomics as any).waitAsync(i32a, 0, 10).value.then(again)
|
|
1144
1266
|
}
|
|
1145
1267
|
fn()
|
|
1146
1268
|
})
|
|
1147
1269
|
}, */
|
|
1148
1270
|
unlock: function () {
|
|
1149
|
-
var i32a = new Int32Array(
|
|
1150
|
-
var oldValue = Atomics.compareExchange(i32a, 0,
|
|
1151
|
-
if (oldValue !==
|
|
1271
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1272
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1273
|
+
if (oldValue !== 10) {
|
|
1152
1274
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
1153
1275
|
}
|
|
1154
1276
|
Atomics.notify(i32a, 0, 1);
|
|
@@ -1180,14 +1302,14 @@ function createNapiModule(options) {
|
|
|
1180
1302
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1181
1303
|
var cond = {
|
|
1182
1304
|
wait: function () {
|
|
1183
|
-
var i32a = new Int32Array(
|
|
1305
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1184
1306
|
var value = Atomics.load(i32a, 0);
|
|
1185
1307
|
mutex.unlock();
|
|
1186
1308
|
Atomics.wait(i32a, 0, value);
|
|
1187
1309
|
mutex.lock();
|
|
1188
1310
|
},
|
|
1189
1311
|
/* waitAsync () {
|
|
1190
|
-
const i32a = new Int32Array(
|
|
1312
|
+
const i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1)
|
|
1191
1313
|
const value = Atomics.load(i32a, 0)
|
|
1192
1314
|
mutex.unlock()
|
|
1193
1315
|
const lock = (): Promise<void> => mutex.lockAsync()
|
|
@@ -1198,7 +1320,7 @@ function createNapiModule(options) {
|
|
|
1198
1320
|
}
|
|
1199
1321
|
}, */
|
|
1200
1322
|
signal: function () {
|
|
1201
|
-
var i32a = new Int32Array(
|
|
1323
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1202
1324
|
Atomics.add(i32a, 0, 1);
|
|
1203
1325
|
Atomics.notify(i32a, 0, 1);
|
|
1204
1326
|
}
|
|
@@ -1211,15 +1333,15 @@ function createNapiModule(options) {
|
|
|
1211
1333
|
addQueueSize: function (func) {
|
|
1212
1334
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1213
1335
|
var arr, index;
|
|
1214
|
-
arr = new Uint32Array(
|
|
1215
|
-
index = (func + offset)
|
|
1336
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1337
|
+
index = (func + offset) >>> 2;
|
|
1216
1338
|
Atomics.add(arr, index, 1);
|
|
1217
1339
|
},
|
|
1218
1340
|
subQueueSize: function (func) {
|
|
1219
1341
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1220
1342
|
var arr, index;
|
|
1221
|
-
arr = new Uint32Array(
|
|
1222
|
-
index = (func + offset)
|
|
1343
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1344
|
+
index = (func + offset) >>> 2;
|
|
1223
1345
|
Atomics.sub(arr, index, 1);
|
|
1224
1346
|
},
|
|
1225
1347
|
getThreadCount: function (func) {
|
|
@@ -1228,31 +1350,31 @@ function createNapiModule(options) {
|
|
|
1228
1350
|
addThreadCount: function (func) {
|
|
1229
1351
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1230
1352
|
var arr, index;
|
|
1231
|
-
arr = new Uint32Array(
|
|
1232
|
-
index = (func + offset)
|
|
1353
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1354
|
+
index = (func + offset) >>> 2;
|
|
1233
1355
|
Atomics.add(arr, index, 1);
|
|
1234
1356
|
},
|
|
1235
1357
|
subThreadCount: function (func) {
|
|
1236
1358
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1237
1359
|
var arr, index;
|
|
1238
|
-
arr = new Uint32Array(
|
|
1239
|
-
index = (func + offset)
|
|
1360
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1361
|
+
index = (func + offset) >>> 2;
|
|
1240
1362
|
Atomics.sub(arr, index, 1);
|
|
1241
1363
|
},
|
|
1242
|
-
|
|
1243
|
-
return Atomics.load(new Int32Array(
|
|
1364
|
+
getState: function (func) {
|
|
1365
|
+
return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
|
|
1244
1366
|
},
|
|
1245
|
-
|
|
1246
|
-
Atomics.store(new Int32Array(
|
|
1367
|
+
setState: function (func, value) {
|
|
1368
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
|
|
1247
1369
|
},
|
|
1248
1370
|
getHandlesClosing: function (func) {
|
|
1249
|
-
return Atomics.load(new
|
|
1371
|
+
return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
|
|
1250
1372
|
},
|
|
1251
1373
|
setHandlesClosing: function (func, value) {
|
|
1252
|
-
Atomics.store(new
|
|
1374
|
+
Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
|
|
1253
1375
|
},
|
|
1254
1376
|
getDispatchState: function (func) {
|
|
1255
|
-
return Atomics.load(new Uint32Array(
|
|
1377
|
+
return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
|
|
1256
1378
|
},
|
|
1257
1379
|
getContext: function (func) {
|
|
1258
1380
|
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
@@ -1282,68 +1404,98 @@ function createNapiModule(options) {
|
|
|
1282
1404
|
var ret;
|
|
1283
1405
|
var arr;
|
|
1284
1406
|
if (unsigned) {
|
|
1285
|
-
arr = new Uint32Array(
|
|
1286
|
-
ret = Atomics.load(arr, offset
|
|
1407
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1408
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1287
1409
|
return ret;
|
|
1288
1410
|
}
|
|
1289
1411
|
else {
|
|
1290
|
-
arr = new Int32Array(
|
|
1291
|
-
ret = Atomics.load(arr, offset
|
|
1412
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1413
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1292
1414
|
return ret;
|
|
1293
1415
|
}
|
|
1294
1416
|
},
|
|
1295
1417
|
storeSizeTypeValue: function (offset, value, unsigned) {
|
|
1296
1418
|
var arr;
|
|
1297
1419
|
if (unsigned) {
|
|
1298
|
-
arr = new Uint32Array(
|
|
1299
|
-
Atomics.store(arr, offset
|
|
1420
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1421
|
+
Atomics.store(arr, offset >>> 2, value);
|
|
1300
1422
|
return undefined;
|
|
1301
1423
|
}
|
|
1302
1424
|
else {
|
|
1303
|
-
arr = new Int32Array(
|
|
1304
|
-
Atomics.store(arr, offset
|
|
1425
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1426
|
+
Atomics.store(arr, offset >>> 2, value >>> 0);
|
|
1305
1427
|
return undefined;
|
|
1306
1428
|
}
|
|
1307
1429
|
},
|
|
1430
|
+
releaseResources: function (func) {
|
|
1431
|
+
if (emnapiTSFN.getState(func) !== 2 /* State.kClosed */) {
|
|
1432
|
+
emnapiTSFN.setState(func, 2 /* State.kClosed */);
|
|
1433
|
+
var env = emnapiTSFN.getEnv(func);
|
|
1434
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
1435
|
+
var ref = emnapiTSFN.getRef(func);
|
|
1436
|
+
if (ref) {
|
|
1437
|
+
emnapiCtx.refStore.get(ref).dispose();
|
|
1438
|
+
}
|
|
1439
|
+
var resource = emnapiTSFN.getResource(func);
|
|
1440
|
+
emnapiCtx.refStore.get(resource).dispose();
|
|
1441
|
+
emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
|
|
1442
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1443
|
+
HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
|
|
1444
|
+
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1445
|
+
envObject.unref();
|
|
1446
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1447
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1448
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1449
|
+
if (Atomics.load(arr, asyncRefOffset) > 0) {
|
|
1450
|
+
Atomics.store(arr, asyncRefOffset, 0);
|
|
1451
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1452
|
+
}
|
|
1453
|
+
if (emnapiNodeBinding) {
|
|
1454
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1455
|
+
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1456
|
+
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1457
|
+
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1460
|
+
},
|
|
1308
1461
|
destroy: function (func) {
|
|
1462
|
+
emnapiTSFN._liveSet.delete(func);
|
|
1309
1463
|
emnapiTSFN.destroyQueue(func);
|
|
1310
|
-
|
|
1311
|
-
var envObject = emnapiCtx.envStore.get(env);
|
|
1312
|
-
var ref = emnapiTSFN.getRef(func);
|
|
1313
|
-
if (ref) {
|
|
1314
|
-
emnapiCtx.refStore.get(ref).dispose();
|
|
1315
|
-
}
|
|
1316
|
-
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1317
|
-
envObject.unref();
|
|
1318
|
-
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
|
|
1319
|
-
var arr = new Int32Array(wasmMemory.buffer);
|
|
1320
|
-
if (Atomics.load(arr, asyncRefOffset)) {
|
|
1321
|
-
Atomics.store(arr, asyncRefOffset, 0);
|
|
1322
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1323
|
-
}
|
|
1324
|
-
var resource = emnapiTSFN.getResource(func);
|
|
1325
|
-
emnapiCtx.refStore.get(resource).dispose();
|
|
1326
|
-
if (emnapiNodeBinding) {
|
|
1327
|
-
var view = new DataView(wasmMemory.buffer);
|
|
1328
|
-
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1329
|
-
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1330
|
-
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1331
|
-
}
|
|
1464
|
+
emnapiTSFN.releaseResources(func);
|
|
1332
1465
|
_free(func);
|
|
1333
1466
|
},
|
|
1334
|
-
|
|
1467
|
+
emptyQueue: function (func) {
|
|
1468
|
+
var drainQueue = [];
|
|
1469
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1470
|
+
while (emnapiTSFN.getQueueSize(func) > 0) {
|
|
1471
|
+
drainQueue.push(emnapiTSFN.shiftQueue(func));
|
|
1472
|
+
}
|
|
1473
|
+
});
|
|
1335
1474
|
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
1336
1475
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1337
1476
|
var context = emnapiTSFN.getContext(func);
|
|
1338
1477
|
var data;
|
|
1339
|
-
|
|
1478
|
+
for (var i = 0; i < drainQueue.length; i++) {
|
|
1340
1479
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1341
|
-
data =
|
|
1480
|
+
data = drainQueue[i];
|
|
1342
1481
|
if (callJsCb) {
|
|
1343
1482
|
(wasmTable.get(callJsCb))(0, 0, context, data);
|
|
1344
1483
|
}
|
|
1345
1484
|
}
|
|
1346
|
-
|
|
1485
|
+
},
|
|
1486
|
+
maybeDelete: function (func) {
|
|
1487
|
+
var shouldDelete = false;
|
|
1488
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1489
|
+
if (emnapiTSFN.getThreadCount(func) > 0) {
|
|
1490
|
+
emnapiTSFN.releaseResources(func);
|
|
1491
|
+
}
|
|
1492
|
+
else {
|
|
1493
|
+
shouldDelete = true;
|
|
1494
|
+
}
|
|
1495
|
+
});
|
|
1496
|
+
if (shouldDelete) {
|
|
1497
|
+
emnapiTSFN.destroy(func);
|
|
1498
|
+
}
|
|
1347
1499
|
},
|
|
1348
1500
|
finalize: function (func) {
|
|
1349
1501
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1358,12 +1510,13 @@ function createNapiModule(options) {
|
|
|
1358
1510
|
envObject.callFinalizerInternal(0, finalize, data, context);
|
|
1359
1511
|
};
|
|
1360
1512
|
try {
|
|
1513
|
+
emnapiTSFN.emptyQueue(func);
|
|
1361
1514
|
if (finalize) {
|
|
1362
1515
|
if (emnapiNodeBinding) {
|
|
1363
1516
|
var resource = emnapiTSFN.getResource(func);
|
|
1364
1517
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1365
1518
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1366
|
-
var view = new DataView(
|
|
1519
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1367
1520
|
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1368
1521
|
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1369
1522
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
@@ -1375,7 +1528,7 @@ function createNapiModule(options) {
|
|
|
1375
1528
|
f();
|
|
1376
1529
|
}
|
|
1377
1530
|
}
|
|
1378
|
-
emnapiTSFN.
|
|
1531
|
+
emnapiTSFN.maybeDelete(func);
|
|
1379
1532
|
}
|
|
1380
1533
|
finally {
|
|
1381
1534
|
emnapiCtx.closeScope(envObject);
|
|
@@ -1391,7 +1544,7 @@ function createNapiModule(options) {
|
|
|
1391
1544
|
try {
|
|
1392
1545
|
if (set_closing) {
|
|
1393
1546
|
emnapiTSFN.getMutex(func).execute(function () {
|
|
1394
|
-
emnapiTSFN.
|
|
1547
|
+
emnapiTSFN.setState(func, 1 /* State.kClosing */);
|
|
1395
1548
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1396
1549
|
emnapiTSFN.getCond(func).signal();
|
|
1397
1550
|
}
|
|
@@ -1401,6 +1554,7 @@ function createNapiModule(options) {
|
|
|
1401
1554
|
return;
|
|
1402
1555
|
}
|
|
1403
1556
|
emnapiTSFN.setHandlesClosing(func, 1);
|
|
1557
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
|
|
1404
1558
|
emnapiCtx.feature.setImmediate(function () {
|
|
1405
1559
|
emnapiTSFN.finalize(func);
|
|
1406
1560
|
});
|
|
@@ -1417,10 +1571,7 @@ function createNapiModule(options) {
|
|
|
1417
1571
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1418
1572
|
var cond = emnapiTSFN.getCond(func);
|
|
1419
1573
|
mutex.execute(function () {
|
|
1420
|
-
if (emnapiTSFN.
|
|
1421
|
-
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1422
|
-
}
|
|
1423
|
-
else {
|
|
1574
|
+
if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
|
|
1424
1575
|
var size = emnapiTSFN.getQueueSize(func);
|
|
1425
1576
|
if (size > 0) {
|
|
1426
1577
|
data = emnapiTSFN.shiftQueue(func);
|
|
@@ -1433,7 +1584,7 @@ function createNapiModule(options) {
|
|
|
1433
1584
|
}
|
|
1434
1585
|
if (size === 0) {
|
|
1435
1586
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1436
|
-
emnapiTSFN.
|
|
1587
|
+
emnapiTSFN.setState(func, 1 /* State.kClosing */);
|
|
1437
1588
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1438
1589
|
cond.signal();
|
|
1439
1590
|
}
|
|
@@ -1444,6 +1595,9 @@ function createNapiModule(options) {
|
|
|
1444
1595
|
has_more = true;
|
|
1445
1596
|
}
|
|
1446
1597
|
}
|
|
1598
|
+
else {
|
|
1599
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1600
|
+
}
|
|
1447
1601
|
});
|
|
1448
1602
|
if (popped_value) {
|
|
1449
1603
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1472,7 +1626,7 @@ function createNapiModule(options) {
|
|
|
1472
1626
|
var resource = emnapiTSFN.getResource(func);
|
|
1473
1627
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1474
1628
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1475
|
-
var view = new DataView(
|
|
1629
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1476
1630
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
1477
1631
|
asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
|
|
1478
1632
|
triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
|
|
@@ -1491,8 +1645,9 @@ function createNapiModule(options) {
|
|
|
1491
1645
|
dispatch: function (func) {
|
|
1492
1646
|
var has_more = true;
|
|
1493
1647
|
var iterations_left = 1000;
|
|
1494
|
-
var
|
|
1495
|
-
var
|
|
1648
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1649
|
+
var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
|
|
1650
|
+
var index = dispatchStateAddress >>> 2;
|
|
1496
1651
|
while (has_more && --iterations_left !== 0) {
|
|
1497
1652
|
Atomics.store(ui32a, index, 1);
|
|
1498
1653
|
has_more = emnapiTSFN.dispatchOne(func);
|
|
@@ -1504,25 +1659,86 @@ function createNapiModule(options) {
|
|
|
1504
1659
|
emnapiTSFN.send(func);
|
|
1505
1660
|
}
|
|
1506
1661
|
},
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1662
|
+
enqueue: function (func) {
|
|
1663
|
+
// `pending` means a worker thread has requested a wakeup that has not
|
|
1664
|
+
// been drained on the main thread yet.
|
|
1665
|
+
var pending = func + emnapiTSFN.offset.async_pending;
|
|
1666
|
+
// `scheduled` prevents queueing the same main-thread drain chain more than
|
|
1667
|
+
// once while a previous wakeup is still in flight.
|
|
1668
|
+
var scheduled = func + emnapiTSFN.offset.async_u_fd;
|
|
1669
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
|
|
1670
|
+
if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
|
|
1510
1671
|
return;
|
|
1511
1672
|
}
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1673
|
+
// Match uv_async_send-style coalescing in JS: the first turn represents
|
|
1674
|
+
// the wakeup reaching the main thread, and the second turn performs the
|
|
1675
|
+
// actual TSFN drain after nearby Send/Signal calls have had a chance to
|
|
1676
|
+
// collapse into the shared AsyncProgressWorker state.
|
|
1677
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1678
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1679
|
+
return;
|
|
1680
|
+
}
|
|
1681
|
+
if (Atomics.load(i32a, pending >>> 2) === 0) {
|
|
1682
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1683
|
+
return;
|
|
1684
|
+
}
|
|
1685
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1686
|
+
try {
|
|
1687
|
+
// Consume the coalesced wakeup once, then let dispatch() observe any
|
|
1688
|
+
// queue mutations through dispatch_state like the C implementation.
|
|
1689
|
+
if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
|
|
1690
|
+
return;
|
|
1691
|
+
}
|
|
1692
|
+
// After destroy(), the func address is freed. Skip dispatch
|
|
1693
|
+
// to avoid use-after-free (JS-side lifecycle check).
|
|
1694
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1695
|
+
return;
|
|
1696
|
+
}
|
|
1697
|
+
emnapiTSFN.dispatch(func);
|
|
1698
|
+
}
|
|
1699
|
+
finally {
|
|
1700
|
+
// Allow a later wakeup to schedule a new drain chain. If another
|
|
1701
|
+
// worker-thread send raced with this drain, enqueue one more turn.
|
|
1702
|
+
if (emnapiTSFN._liveSet.has(func)) {
|
|
1703
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1704
|
+
if (Atomics.load(i32a, pending >>> 2) !== 0) {
|
|
1705
|
+
emnapiTSFN.enqueue(func);
|
|
1706
|
+
}
|
|
1518
1707
|
}
|
|
1519
1708
|
}
|
|
1520
1709
|
});
|
|
1710
|
+
});
|
|
1711
|
+
},
|
|
1712
|
+
send: function (func) {
|
|
1713
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1714
|
+
var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
|
|
1715
|
+
if ((current_state & 1) === 1) {
|
|
1716
|
+
return;
|
|
1521
1717
|
}
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1718
|
+
var pendng = func + emnapiTSFN.offset.async_pending;
|
|
1719
|
+
// A wakeup is already pending, so this send only needs to leave the queued
|
|
1720
|
+
// work in the TSFN queue and let the existing drain pick it up.
|
|
1721
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
1722
|
+
return;
|
|
1723
|
+
}
|
|
1724
|
+
if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
|
|
1725
|
+
if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
|
|
1726
|
+
// Worker threads only post a wakeup token. Main-thread draining is
|
|
1727
|
+
// serialized by enqueue() once the message is received.
|
|
1728
|
+
postMessage({
|
|
1729
|
+
__emnapi__: {
|
|
1730
|
+
type: 'tsfn-send',
|
|
1731
|
+
payload: {
|
|
1732
|
+
tsfn: func
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
});
|
|
1736
|
+
}
|
|
1737
|
+
else {
|
|
1738
|
+
// On the main thread we can skip the cross-thread hop and schedule the
|
|
1739
|
+
// coalesced drain chain directly.
|
|
1740
|
+
emnapiTSFN.enqueue(func);
|
|
1741
|
+
}
|
|
1526
1742
|
}
|
|
1527
1743
|
}
|
|
1528
1744
|
};
|
|
@@ -1535,6 +1751,13 @@ function createNapiModule(options) {
|
|
|
1535
1751
|
envObject.checkGCAccess();
|
|
1536
1752
|
if (!async_resource_name)
|
|
1537
1753
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1754
|
+
max_queue_size >>>= 0;
|
|
1755
|
+
initial_thread_count >>>= 0;
|
|
1756
|
+
env >>>= 0;
|
|
1757
|
+
thread_finalize_data >>>= 0;
|
|
1758
|
+
thread_finalize_cb >>>= 0;
|
|
1759
|
+
context >>>= 0;
|
|
1760
|
+
call_js_cb >>>= 0;
|
|
1538
1761
|
max_queue_size = max_queue_size >>> 0;
|
|
1539
1762
|
initial_thread_count = initial_thread_count >>> 0;
|
|
1540
1763
|
if (initial_thread_count === 0) {
|
|
@@ -1543,6 +1766,7 @@ function createNapiModule(options) {
|
|
|
1543
1766
|
if (!result)
|
|
1544
1767
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1545
1768
|
var ref = 0;
|
|
1769
|
+
func >>>= 0;
|
|
1546
1770
|
if (!func) {
|
|
1547
1771
|
if (!call_js_cb)
|
|
1548
1772
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
@@ -1574,35 +1798,40 @@ function createNapiModule(options) {
|
|
|
1574
1798
|
asyncResourceName = String(asyncResourceName);
|
|
1575
1799
|
var resource_name = envObject.ensureHandleId(asyncResourceName);
|
|
1576
1800
|
// tsfn create
|
|
1577
|
-
var sizeofTSFN = emnapiTSFN.offset.
|
|
1801
|
+
var sizeofTSFN = emnapiTSFN.offset.__size__;
|
|
1802
|
+
// eslint-disable-next-line prefer-const
|
|
1578
1803
|
var tsfn = _malloc(sizeofTSFN);
|
|
1579
1804
|
if (!tsfn)
|
|
1580
1805
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
1581
|
-
|
|
1806
|
+
tsfn >>>= 0;
|
|
1807
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
1582
1808
|
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */);
|
|
1583
1809
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1584
1810
|
var resource_ = resourceRef.id;
|
|
1585
1811
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1586
|
-
HEAP_DATA_VIEW.
|
|
1812
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
|
|
1587
1813
|
if (!emnapiTSFN.initQueue(tsfn)) {
|
|
1588
1814
|
_free(tsfn);
|
|
1589
1815
|
resourceRef.dispose();
|
|
1590
1816
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
1591
1817
|
}
|
|
1592
1818
|
_emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
|
|
1819
|
+
HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
|
|
1593
1820
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
|
|
1594
|
-
HEAP_DATA_VIEW.
|
|
1821
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
|
|
1595
1822
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
|
|
1596
|
-
HEAP_DATA_VIEW.
|
|
1597
|
-
HEAP_DATA_VIEW.
|
|
1598
|
-
HEAP_DATA_VIEW.
|
|
1599
|
-
HEAP_DATA_VIEW.
|
|
1600
|
-
HEAP_DATA_VIEW.
|
|
1823
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true);
|
|
1824
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true);
|
|
1825
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
|
|
1826
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
|
|
1827
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
|
|
1601
1828
|
emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
|
|
1829
|
+
emnapiTSFN._liveSet.add(tsfn);
|
|
1602
1830
|
envObject.ref();
|
|
1603
1831
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1604
|
-
HEAP_DATA_VIEW.
|
|
1605
|
-
|
|
1832
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
|
|
1833
|
+
result >>>= 0;
|
|
1834
|
+
HEAP_DATA_VIEW.setUint32(result, tsfn, true);
|
|
1606
1835
|
return envObject.clearLastError();
|
|
1607
1836
|
}
|
|
1608
1837
|
/** @__sig ipp */
|
|
@@ -1611,10 +1840,12 @@ function createNapiModule(options) {
|
|
|
1611
1840
|
abort();
|
|
1612
1841
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1613
1842
|
}
|
|
1843
|
+
func >>>= 0;
|
|
1844
|
+
result >>>= 0;
|
|
1614
1845
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1615
1846
|
var context = emnapiTSFN.getContext(func);
|
|
1616
1847
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1617
|
-
HEAP_DATA_VIEW.
|
|
1848
|
+
HEAP_DATA_VIEW.setUint32(result, context, true);
|
|
1618
1849
|
return 0 /* napi_status.napi_ok */;
|
|
1619
1850
|
}
|
|
1620
1851
|
/** @__sig ippi */
|
|
@@ -1623,6 +1854,8 @@ function createNapiModule(options) {
|
|
|
1623
1854
|
abort();
|
|
1624
1855
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1625
1856
|
}
|
|
1857
|
+
func >>>= 0;
|
|
1858
|
+
data >>>= 0;
|
|
1626
1859
|
return emnapiTSFN.push(func, data, mode);
|
|
1627
1860
|
}
|
|
1628
1861
|
/** @__sig ip */
|
|
@@ -1631,13 +1864,14 @@ function createNapiModule(options) {
|
|
|
1631
1864
|
abort();
|
|
1632
1865
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1633
1866
|
}
|
|
1867
|
+
func >>>= 0;
|
|
1634
1868
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1635
1869
|
return mutex.execute(function () {
|
|
1636
|
-
if (emnapiTSFN.
|
|
1637
|
-
|
|
1870
|
+
if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
|
|
1871
|
+
emnapiTSFN.addThreadCount(func);
|
|
1872
|
+
return 0 /* napi_status.napi_ok */;
|
|
1638
1873
|
}
|
|
1639
|
-
|
|
1640
|
-
return 0 /* napi_status.napi_ok */;
|
|
1874
|
+
return 16 /* napi_status.napi_closing */;
|
|
1641
1875
|
});
|
|
1642
1876
|
}
|
|
1643
1877
|
/** @__sig ipi */
|
|
@@ -1646,26 +1880,36 @@ function createNapiModule(options) {
|
|
|
1646
1880
|
abort();
|
|
1647
1881
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1648
1882
|
}
|
|
1883
|
+
func >>>= 0;
|
|
1649
1884
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1650
1885
|
var cond = emnapiTSFN.getCond(func);
|
|
1651
|
-
|
|
1886
|
+
var shouldDelete = false;
|
|
1887
|
+
var ret = mutex.execute(function () {
|
|
1652
1888
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1653
1889
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1654
1890
|
}
|
|
1655
1891
|
emnapiTSFN.subThreadCount(func);
|
|
1656
1892
|
if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
if (
|
|
1893
|
+
if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) {
|
|
1894
|
+
if (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
|
|
1895
|
+
emnapiTSFN.setState(func, 1 /* State.kClosing */);
|
|
1896
|
+
}
|
|
1897
|
+
if (emnapiTSFN.getState(func) === 1 /* State.kClosing */ && emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1662
1898
|
cond.signal();
|
|
1663
1899
|
}
|
|
1664
1900
|
emnapiTSFN.send(func);
|
|
1665
1901
|
}
|
|
1666
1902
|
}
|
|
1903
|
+
if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1904
|
+
return 0 /* napi_status.napi_ok */;
|
|
1905
|
+
}
|
|
1906
|
+
shouldDelete = true;
|
|
1667
1907
|
return 0 /* napi_status.napi_ok */;
|
|
1668
1908
|
});
|
|
1909
|
+
if (shouldDelete) {
|
|
1910
|
+
emnapiTSFN.destroy(func);
|
|
1911
|
+
}
|
|
1912
|
+
return ret;
|
|
1669
1913
|
}
|
|
1670
1914
|
/** @__sig ipp */
|
|
1671
1915
|
function napi_unref_threadsafe_function(env, func) {
|
|
@@ -1673,11 +1917,16 @@ function createNapiModule(options) {
|
|
|
1673
1917
|
abort();
|
|
1674
1918
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1675
1919
|
}
|
|
1676
|
-
|
|
1677
|
-
var
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1920
|
+
func >>>= 0;
|
|
1921
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1922
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1923
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1924
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1925
|
+
if (currentValue > 0) {
|
|
1926
|
+
Atomics.store(arr, asyncRefOffset, currentValue - 1);
|
|
1927
|
+
if (currentValue === 1) {
|
|
1928
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1929
|
+
}
|
|
1681
1930
|
}
|
|
1682
1931
|
return 0 /* napi_status.napi_ok */;
|
|
1683
1932
|
}
|
|
@@ -1687,34 +1936,73 @@ function createNapiModule(options) {
|
|
|
1687
1936
|
abort();
|
|
1688
1937
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1689
1938
|
}
|
|
1690
|
-
|
|
1691
|
-
var
|
|
1692
|
-
|
|
1693
|
-
|
|
1939
|
+
func >>>= 0;
|
|
1940
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1941
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1942
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1943
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1944
|
+
if (!currentValue) {
|
|
1694
1945
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1695
1946
|
}
|
|
1947
|
+
Atomics.store(arr, asyncRefOffset, currentValue + 1);
|
|
1696
1948
|
return 0 /* napi_status.napi_ok */;
|
|
1697
1949
|
}
|
|
1698
1950
|
var emnapiAWMT = {
|
|
1699
|
-
|
|
1700
|
-
runningWorkers: [],
|
|
1701
|
-
workQueue: [],
|
|
1951
|
+
pool: [],
|
|
1702
1952
|
workerReady: null,
|
|
1953
|
+
globalAddress: 0,
|
|
1954
|
+
globalOffset: {
|
|
1955
|
+
idle_threads: 0,
|
|
1956
|
+
q: 1 * 4,
|
|
1957
|
+
next: 1 * 4,
|
|
1958
|
+
prev: 2 * 4,
|
|
1959
|
+
mutex: 3 * 4,
|
|
1960
|
+
cond: 4 * 4,
|
|
1961
|
+
exit_message: 5 * 4,
|
|
1962
|
+
end: 7 * 4
|
|
1963
|
+
},
|
|
1703
1964
|
offset: {
|
|
1704
1965
|
/* napi_ref */ resource: 0,
|
|
1705
1966
|
/* double */ async_id: 8,
|
|
1706
1967
|
/* double */ trigger_async_id: 16,
|
|
1707
1968
|
/* napi_env */ env: 24,
|
|
1708
|
-
/*
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1969
|
+
/* int32_t */ status: 1 * 4 + 24, // 0 for pending, 1 for cancelled, 2 for completed
|
|
1970
|
+
queue: 2 * 4 + 24,
|
|
1971
|
+
queue_next: 2 * 4 + 24,
|
|
1972
|
+
queue_prev: 3 * 4 + 24,
|
|
1973
|
+
/* void* */ data: 4 * 4 + 24,
|
|
1974
|
+
/* napi_async_execute_callback */ execute: 5 * 4 + 24,
|
|
1975
|
+
/* napi_async_complete_callback */ complete: 6 * 4 + 24,
|
|
1976
|
+
end: 7 * 4 + 24
|
|
1977
|
+
},
|
|
1978
|
+
/**
|
|
1979
|
+
* When another thread grows the shared WebAssembly.Memory, this agent's
|
|
1980
|
+
* cached `wasmMemory.buffer` may still have the old shorter length
|
|
1981
|
+
* (V8 refreshes it lazily). If a pointer derived from shared memory lies
|
|
1982
|
+
* beyond the cached length, `wasmMemory.grow(0)` forces the agent to
|
|
1983
|
+
* observe the current memory size and refreshes the buffer.
|
|
1984
|
+
*/
|
|
1985
|
+
ensureBufferFor: function (end) {
|
|
1986
|
+
var buffer = wasmMemory.buffer;
|
|
1987
|
+
if (end > buffer.byteLength) {
|
|
1988
|
+
wasmMemory.grow(0);
|
|
1989
|
+
buffer = wasmMemory.buffer;
|
|
1990
|
+
}
|
|
1991
|
+
return buffer;
|
|
1712
1992
|
},
|
|
1713
1993
|
init: function () {
|
|
1714
|
-
emnapiAWMT.
|
|
1715
|
-
emnapiAWMT.runningWorkers = [];
|
|
1716
|
-
emnapiAWMT.workQueue = [];
|
|
1994
|
+
emnapiAWMT.pool = [];
|
|
1717
1995
|
emnapiAWMT.workerReady = null;
|
|
1996
|
+
if (typeof PThread !== 'undefined') {
|
|
1997
|
+
PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
|
|
1998
|
+
Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
|
|
1999
|
+
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
2000
|
+
PThread.getNewWorker = function () {
|
|
2001
|
+
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
2002
|
+
emnapiAWMT.addListener(r);
|
|
2003
|
+
return r;
|
|
2004
|
+
};
|
|
2005
|
+
}
|
|
1718
2006
|
},
|
|
1719
2007
|
addListener: function (worker) {
|
|
1720
2008
|
if (!worker)
|
|
@@ -1728,18 +2016,8 @@ function createNapiModule(options) {
|
|
|
1728
2016
|
var type = __emnapi__.type;
|
|
1729
2017
|
var payload = __emnapi__.payload;
|
|
1730
2018
|
if (type === 'async-work-complete') {
|
|
1731
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1732
|
-
emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
|
|
1733
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1734
|
-
emnapiAWMT.checkIdleWorker();
|
|
1735
2019
|
emnapiAWMT.callComplete(payload.work, 0 /* napi_status.napi_ok */);
|
|
1736
2020
|
}
|
|
1737
|
-
else if (type === 'async-work-queue') {
|
|
1738
|
-
emnapiAWMT.scheduleWork(payload.work);
|
|
1739
|
-
}
|
|
1740
|
-
else if (type === 'async-work-cancel') {
|
|
1741
|
-
emnapiAWMT.cancelWork(payload.work);
|
|
1742
|
-
}
|
|
1743
2021
|
}
|
|
1744
2022
|
};
|
|
1745
2023
|
var dispose = function () {
|
|
@@ -1760,6 +2038,26 @@ function createNapiModule(options) {
|
|
|
1760
2038
|
}
|
|
1761
2039
|
return true;
|
|
1762
2040
|
},
|
|
2041
|
+
initGlobal: function () {
|
|
2042
|
+
if (!emnapiAWMT.globalAddress) {
|
|
2043
|
+
emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
|
|
2044
|
+
emnapiAWMT.globalAddress >>>= 0;
|
|
2045
|
+
var size = emnapiAWMT.globalOffset.end;
|
|
2046
|
+
var addr = emnapiAWMT.globalAddress;
|
|
2047
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
|
|
2048
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
|
|
2049
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
|
|
2050
|
+
}
|
|
2051
|
+
},
|
|
2052
|
+
terminateWorkers: function () {
|
|
2053
|
+
emnapiAWMT.pool.forEach(function (w) {
|
|
2054
|
+
var _a, _b;
|
|
2055
|
+
(_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
2056
|
+
(_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
2057
|
+
w.terminate();
|
|
2058
|
+
});
|
|
2059
|
+
emnapiAWMT.pool.length = 0;
|
|
2060
|
+
},
|
|
1763
2061
|
initWorkers: function (n) {
|
|
1764
2062
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
1765
2063
|
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
@@ -1767,137 +2065,212 @@ function createNapiModule(options) {
|
|
|
1767
2065
|
}
|
|
1768
2066
|
if (emnapiAWMT.workerReady)
|
|
1769
2067
|
return emnapiAWMT.workerReady;
|
|
1770
|
-
if (typeof onCreateWorker !== 'function') {
|
|
1771
|
-
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
1772
|
-
}
|
|
1773
|
-
var promises = [];
|
|
1774
|
-
var args = [];
|
|
1775
2068
|
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
1776
2069
|
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
1777
2070
|
}
|
|
2071
|
+
var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
|
|
2072
|
+
var args = [];
|
|
2073
|
+
emnapiAWMT.initGlobal();
|
|
1778
2074
|
for (var i = 0; i < n; ++i) {
|
|
1779
|
-
args.push(
|
|
2075
|
+
args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
|
|
1780
2076
|
}
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
var p = PThread.loadWasmModuleToWorker(worker);
|
|
1785
|
-
emnapiAWMT.addListener(worker);
|
|
1786
|
-
promises.push(p.then(function () {
|
|
1787
|
-
if (typeof worker.unref === 'function') {
|
|
1788
|
-
worker.unref();
|
|
1789
|
-
}
|
|
1790
|
-
}));
|
|
1791
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1792
|
-
var arg = args[i];
|
|
1793
|
-
worker.threadBlockBase = arg;
|
|
1794
|
-
worker.postMessage({
|
|
1795
|
-
__emnapi__: {
|
|
1796
|
-
type: 'async-worker-init',
|
|
1797
|
-
payload: { arg: arg }
|
|
1798
|
-
}
|
|
1799
|
-
});
|
|
1800
|
-
};
|
|
1801
|
-
for (var i = 0; i < n; ++i) {
|
|
1802
|
-
_loop_1(i);
|
|
2077
|
+
var promises = args.map(function (index) {
|
|
2078
|
+
if (index === 0) {
|
|
2079
|
+
return Promise.reject(new Error('Failed to create async worker'));
|
|
1803
2080
|
}
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
_free(arg);
|
|
2081
|
+
var worker;
|
|
2082
|
+
if (index < 0) {
|
|
2083
|
+
worker = emnapiAWMT.pool[-index - 1];
|
|
2084
|
+
if (worker)
|
|
2085
|
+
return worker.whenLoaded;
|
|
1810
2086
|
}
|
|
1811
|
-
|
|
1812
|
-
|
|
2087
|
+
index >>>= 0;
|
|
2088
|
+
var tidOffset = 20;
|
|
2089
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
|
|
2090
|
+
var tid = view.getInt32(index + tidOffset, true);
|
|
2091
|
+
worker = PThread.pthreads[tid];
|
|
2092
|
+
return worker.whenLoaded;
|
|
2093
|
+
});
|
|
1813
2094
|
emnapiAWMT.workerReady = Promise.all(promises);
|
|
1814
2095
|
return emnapiAWMT.workerReady;
|
|
1815
2096
|
},
|
|
1816
|
-
checkIdleWorker: function () {
|
|
1817
|
-
if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
|
|
1818
|
-
var worker = emnapiAWMT.unusedWorkers.shift();
|
|
1819
|
-
var work = emnapiAWMT.workQueue.shift();
|
|
1820
|
-
emnapiAWMT.runningWorkers.push(worker);
|
|
1821
|
-
worker.postMessage({
|
|
1822
|
-
__emnapi__: {
|
|
1823
|
-
type: 'async-work-execute',
|
|
1824
|
-
payload: { work: work }
|
|
1825
|
-
}
|
|
1826
|
-
});
|
|
1827
|
-
}
|
|
1828
|
-
},
|
|
1829
2097
|
getResource: function (work) {
|
|
1830
|
-
|
|
2098
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
|
|
2099
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2100
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
|
|
1831
2101
|
},
|
|
1832
2102
|
getExecute: function (work) {
|
|
1833
|
-
|
|
2103
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
|
|
2104
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2105
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
|
|
1834
2106
|
},
|
|
1835
2107
|
getComplete: function (work) {
|
|
1836
|
-
|
|
2108
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
|
|
2109
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2110
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
|
|
1837
2111
|
},
|
|
1838
2112
|
getEnv: function (work) {
|
|
1839
|
-
|
|
2113
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
|
|
2114
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2115
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
|
|
1840
2116
|
},
|
|
1841
2117
|
getData: function (work) {
|
|
1842
|
-
|
|
2118
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
|
|
2119
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2120
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
|
|
2121
|
+
},
|
|
2122
|
+
getMutex: function () {
|
|
2123
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
|
|
2124
|
+
var mutex = {
|
|
2125
|
+
lock: function () {
|
|
2126
|
+
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
2127
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
2128
|
+
if (isBrowserMain) {
|
|
2129
|
+
while (true) {
|
|
2130
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
2131
|
+
if (oldValue === 0) {
|
|
2132
|
+
return;
|
|
2133
|
+
}
|
|
2134
|
+
}
|
|
2135
|
+
}
|
|
2136
|
+
else {
|
|
2137
|
+
while (true) {
|
|
2138
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
2139
|
+
if (oldValue === 0) {
|
|
2140
|
+
return;
|
|
2141
|
+
}
|
|
2142
|
+
Atomics.wait(i32a, 0, 10);
|
|
2143
|
+
}
|
|
2144
|
+
}
|
|
2145
|
+
},
|
|
2146
|
+
unlock: function () {
|
|
2147
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
2148
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
2149
|
+
if (oldValue !== 10) {
|
|
2150
|
+
throw new Error('Tried to unlock while not holding the mutex');
|
|
2151
|
+
}
|
|
2152
|
+
Atomics.notify(i32a, 0, 1);
|
|
2153
|
+
},
|
|
2154
|
+
execute: function (fn) {
|
|
2155
|
+
mutex.lock();
|
|
2156
|
+
try {
|
|
2157
|
+
return fn();
|
|
2158
|
+
}
|
|
2159
|
+
finally {
|
|
2160
|
+
mutex.unlock();
|
|
2161
|
+
}
|
|
2162
|
+
}
|
|
2163
|
+
};
|
|
2164
|
+
return mutex;
|
|
2165
|
+
},
|
|
2166
|
+
getCond: function () {
|
|
2167
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
|
|
2168
|
+
var mutex = emnapiAWMT.getMutex();
|
|
2169
|
+
var cond = {
|
|
2170
|
+
wait: function () {
|
|
2171
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
2172
|
+
var value = Atomics.load(i32a, 0);
|
|
2173
|
+
mutex.unlock();
|
|
2174
|
+
Atomics.wait(i32a, 0, value);
|
|
2175
|
+
mutex.lock();
|
|
2176
|
+
},
|
|
2177
|
+
signal: function () {
|
|
2178
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
2179
|
+
Atomics.add(i32a, 0, 1);
|
|
2180
|
+
Atomics.notify(i32a, 0, 1);
|
|
2181
|
+
}
|
|
2182
|
+
};
|
|
2183
|
+
return cond;
|
|
2184
|
+
},
|
|
2185
|
+
queueInit: function (q) {
|
|
2186
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
2187
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2188
|
+
HEAP_DATA_VIEW.setUint32(q, q, true);
|
|
2189
|
+
HEAP_DATA_VIEW.setUint32(q + 4, q, true);
|
|
2190
|
+
},
|
|
2191
|
+
queueInsertTail: function (h, q) {
|
|
2192
|
+
emnapiAWMT.ensureBufferFor(h + 4 + 4);
|
|
2193
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
2194
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2195
|
+
HEAP_DATA_VIEW.setUint32(q, h, true);
|
|
2196
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2197
|
+
var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
|
|
2198
|
+
HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
|
|
2199
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2200
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
2201
|
+
HEAP_DATA_VIEW.setUint32(qprev, q, true);
|
|
2202
|
+
HEAP_DATA_VIEW.setUint32(h + 4, q, true);
|
|
2203
|
+
},
|
|
2204
|
+
queueRemove: function (q) {
|
|
2205
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
2206
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2207
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2208
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
2209
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2210
|
+
var qnext = HEAP_DATA_VIEW.getUint32(q, true);
|
|
2211
|
+
HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
|
|
2212
|
+
HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
|
|
2213
|
+
},
|
|
2214
|
+
queueEmpty: function (q) {
|
|
2215
|
+
emnapiAWMT.ensureBufferFor(q + 4);
|
|
2216
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2217
|
+
// eslint-disable-next-line eqeqeq
|
|
2218
|
+
return q == HEAP_DATA_VIEW.getUint32(q, true);
|
|
1843
2219
|
},
|
|
1844
2220
|
scheduleWork: function (work) {
|
|
1845
2221
|
var _a;
|
|
1846
|
-
if (
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
}
|
|
2222
|
+
if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
|
|
2223
|
+
emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
|
|
2224
|
+
emnapiAWMT.workerReady.ready = true;
|
|
2225
|
+
}).catch(function (err) {
|
|
2226
|
+
emnapiAWMT.workerReady = null;
|
|
2227
|
+
throw err;
|
|
1853
2228
|
});
|
|
1854
|
-
return;
|
|
1855
2229
|
}
|
|
1856
2230
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1857
|
-
emnapiAWMT.
|
|
1858
|
-
|
|
1859
|
-
|
|
2231
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
2232
|
+
Atomics.store(statusBuffer, 0, 0 /* AsyncWorkStatus.Pending */);
|
|
2233
|
+
var mutex = emnapiAWMT.getMutex();
|
|
2234
|
+
var cond = emnapiAWMT.getCond();
|
|
2235
|
+
mutex.lock();
|
|
2236
|
+
try {
|
|
2237
|
+
emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
|
|
1860
2238
|
}
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
}, fail);
|
|
1871
|
-
}
|
|
1872
|
-
catch (err) {
|
|
1873
|
-
fail(err);
|
|
1874
|
-
}
|
|
2239
|
+
catch (err) {
|
|
2240
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
2241
|
+
mutex.unlock();
|
|
2242
|
+
throw err;
|
|
2243
|
+
}
|
|
2244
|
+
emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
|
|
2245
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2246
|
+
if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
|
|
2247
|
+
cond.signal();
|
|
1875
2248
|
}
|
|
2249
|
+
mutex.unlock();
|
|
1876
2250
|
},
|
|
1877
2251
|
cancelWork: function (work) {
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
}
|
|
1886
|
-
|
|
2252
|
+
var cancelled = false;
|
|
2253
|
+
emnapiAWMT.getMutex().execute(function () {
|
|
2254
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
|
|
2255
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2256
|
+
cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2 /* AsyncWorkStatus.Completed */;
|
|
2257
|
+
if (cancelled) {
|
|
2258
|
+
emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
|
|
2259
|
+
}
|
|
2260
|
+
});
|
|
2261
|
+
if (!cancelled) {
|
|
2262
|
+
return 9 /* napi_status.napi_generic_failure */;
|
|
1887
2263
|
}
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
emnapiAWMT.workQueue.splice(index, 1);
|
|
1891
|
-
emnapiCtx.feature.setImmediate(function () {
|
|
1892
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1893
|
-
emnapiAWMT.checkIdleWorker();
|
|
1894
|
-
emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
|
|
1895
|
-
});
|
|
1896
|
-
return 0 /* napi_status.napi_ok */;
|
|
2264
|
+
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 */) {
|
|
2265
|
+
return 9 /* napi_status.napi_generic_failure */;
|
|
1897
2266
|
}
|
|
1898
|
-
|
|
2267
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
2268
|
+
emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */);
|
|
2269
|
+
});
|
|
2270
|
+
return 0 /* napi_status.napi_ok */;
|
|
1899
2271
|
},
|
|
1900
2272
|
callComplete: function (work, status) {
|
|
2273
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1901
2274
|
var complete = emnapiAWMT.getComplete(work);
|
|
1902
2275
|
var env = emnapiAWMT.getEnv(work);
|
|
1903
2276
|
var data = emnapiAWMT.getData(work);
|
|
@@ -1915,7 +2288,7 @@ function createNapiModule(options) {
|
|
|
1915
2288
|
var resource = emnapiAWMT.getResource(work);
|
|
1916
2289
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1917
2290
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1918
|
-
var view = new DataView(
|
|
2291
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
1919
2292
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
1920
2293
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
1921
2294
|
emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
|
|
@@ -1932,6 +2305,7 @@ function createNapiModule(options) {
|
|
|
1932
2305
|
}
|
|
1933
2306
|
}
|
|
1934
2307
|
};
|
|
2308
|
+
emnapiAWMT.init();
|
|
1935
2309
|
/** @__sig ippppppp */
|
|
1936
2310
|
var napi_create_async_work = singleThreadAsyncWork
|
|
1937
2311
|
? function (env, resource, resource_name, execute, complete, data, result) {
|
|
@@ -1956,8 +2330,9 @@ function createNapiModule(options) {
|
|
|
1956
2330
|
var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
|
|
1957
2331
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1958
2332
|
var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
|
|
2333
|
+
result >>>= 0;
|
|
1959
2334
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1960
|
-
HEAP_DATA_VIEW.
|
|
2335
|
+
HEAP_DATA_VIEW.setUint32(result, id, true);
|
|
1961
2336
|
return envObject.clearLastError();
|
|
1962
2337
|
}
|
|
1963
2338
|
: function (env, resource, resource_name, execute, complete, data, result) {
|
|
@@ -1983,19 +2358,22 @@ function createNapiModule(options) {
|
|
|
1983
2358
|
var aw = _malloc(sizeofAW);
|
|
1984
2359
|
if (!aw)
|
|
1985
2360
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
1986
|
-
|
|
2361
|
+
aw >>>= 0;
|
|
2362
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
|
|
1987
2363
|
var s = envObject.ensureHandleId(resourceObject);
|
|
1988
2364
|
var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1 /* ReferenceOwnership.kUserland */);
|
|
1989
2365
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1990
2366
|
var resource_ = resourceRef.id;
|
|
1991
2367
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1992
|
-
HEAP_DATA_VIEW.
|
|
2368
|
+
HEAP_DATA_VIEW.setUint32(aw, resource_, true);
|
|
1993
2369
|
_emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id);
|
|
1994
|
-
HEAP_DATA_VIEW.
|
|
1995
|
-
HEAP_DATA_VIEW.
|
|
1996
|
-
HEAP_DATA_VIEW.
|
|
1997
|
-
HEAP_DATA_VIEW.
|
|
1998
|
-
|
|
2370
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true);
|
|
2371
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
|
|
2372
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
|
|
2373
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
|
|
2374
|
+
emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
|
|
2375
|
+
result >>>= 0;
|
|
2376
|
+
HEAP_DATA_VIEW.setUint32(result, aw, true);
|
|
1999
2377
|
return envObject.clearLastError();
|
|
2000
2378
|
};
|
|
2001
2379
|
/** @__sig ipp */
|
|
@@ -2008,6 +2386,7 @@ function createNapiModule(options) {
|
|
|
2008
2386
|
envObject.checkGCAccess();
|
|
2009
2387
|
if (!work)
|
|
2010
2388
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2389
|
+
work >>>= 0;
|
|
2011
2390
|
emnapiAWST.remove(work);
|
|
2012
2391
|
return envObject.clearLastError();
|
|
2013
2392
|
}
|
|
@@ -2019,10 +2398,11 @@ function createNapiModule(options) {
|
|
|
2019
2398
|
envObject.checkGCAccess();
|
|
2020
2399
|
if (!work)
|
|
2021
2400
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2401
|
+
work >>>= 0;
|
|
2022
2402
|
var resource = emnapiAWMT.getResource(work);
|
|
2023
2403
|
emnapiCtx.refStore.get(resource).dispose();
|
|
2024
2404
|
if (emnapiNodeBinding) {
|
|
2025
|
-
var view = new DataView(
|
|
2405
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
2026
2406
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
2027
2407
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
2028
2408
|
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
@@ -2038,6 +2418,7 @@ function createNapiModule(options) {
|
|
|
2038
2418
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2039
2419
|
if (!work)
|
|
2040
2420
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2421
|
+
work >>>= 0;
|
|
2041
2422
|
emnapiAWST.queue(work);
|
|
2042
2423
|
return envObject.clearLastError();
|
|
2043
2424
|
}
|
|
@@ -2047,6 +2428,7 @@ function createNapiModule(options) {
|
|
|
2047
2428
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2048
2429
|
if (!work)
|
|
2049
2430
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2431
|
+
work >>>= 0;
|
|
2050
2432
|
emnapiAWMT.scheduleWork(work);
|
|
2051
2433
|
return envObject.clearLastError();
|
|
2052
2434
|
};
|
|
@@ -2058,6 +2440,7 @@ function createNapiModule(options) {
|
|
|
2058
2440
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2059
2441
|
if (!work)
|
|
2060
2442
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2443
|
+
work >>>= 0;
|
|
2061
2444
|
var status = emnapiAWST.cancel(work);
|
|
2062
2445
|
if (status === 0 /* napi_status.napi_ok */)
|
|
2063
2446
|
return envObject.clearLastError();
|
|
@@ -2069,42 +2452,129 @@ function createNapiModule(options) {
|
|
|
2069
2452
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2070
2453
|
if (!work)
|
|
2071
2454
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2455
|
+
work >>>= 0;
|
|
2072
2456
|
var status = emnapiAWMT.cancelWork(work);
|
|
2073
2457
|
if (status === 0 /* napi_status.napi_ok */)
|
|
2074
2458
|
return envObject.clearLastError();
|
|
2075
2459
|
return envObject.setLastError(status);
|
|
2076
2460
|
};
|
|
2077
|
-
|
|
2461
|
+
/** @__sig pp */
|
|
2462
|
+
function _emnapi_async_worker(globalAddress) {
|
|
2463
|
+
globalAddress >>>= 0;
|
|
2464
|
+
emnapiAWMT.globalAddress = globalAddress;
|
|
2465
|
+
var mutex = emnapiAWMT.getMutex();
|
|
2466
|
+
var cond = emnapiAWMT.getCond();
|
|
2467
|
+
mutex.lock();
|
|
2468
|
+
var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
|
|
2469
|
+
var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
|
|
2470
|
+
var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
|
|
2471
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2472
|
+
for (;;) {
|
|
2473
|
+
emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
|
|
2474
|
+
while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
|
|
2475
|
+
Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2476
|
+
cond.wait();
|
|
2477
|
+
Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2478
|
+
}
|
|
2479
|
+
var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
|
|
2480
|
+
if (q === exitMessageAddr) {
|
|
2481
|
+
cond.signal();
|
|
2482
|
+
mutex.unlock();
|
|
2483
|
+
break;
|
|
2484
|
+
}
|
|
2485
|
+
var work = q - emnapiAWMT.offset.queue;
|
|
2486
|
+
emnapiAWMT.queueRemove(q);
|
|
2487
|
+
emnapiAWMT.queueInit(q);
|
|
2488
|
+
mutex.unlock();
|
|
2489
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
2490
|
+
if (Atomics.load(statusBuffer, 0) === 1 /* AsyncWorkStatus.Cancelled */) {
|
|
2491
|
+
abort('unreachable');
|
|
2492
|
+
}
|
|
2493
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2494
|
+
var execute = emnapiAWMT.getExecute(work);
|
|
2495
|
+
var env = emnapiAWMT.getEnv(work);
|
|
2496
|
+
var data = emnapiAWMT.getData(work);
|
|
2497
|
+
(wasmTable.get(execute))(env, data);
|
|
2498
|
+
Atomics.store(statusBuffer, 0, 2 /* AsyncWorkStatus.Completed */);
|
|
2499
|
+
var postMessage_1 = napiModule.postMessage;
|
|
2500
|
+
postMessage_1({
|
|
2501
|
+
__emnapi__: {
|
|
2502
|
+
type: 'async-work-complete',
|
|
2503
|
+
payload: { work: work }
|
|
2504
|
+
}
|
|
2505
|
+
});
|
|
2506
|
+
mutex.lock();
|
|
2507
|
+
}
|
|
2508
|
+
return 0;
|
|
2509
|
+
}
|
|
2510
|
+
/** @__sig ipp */
|
|
2511
|
+
function _emnapi_spawn_worker(f, globalAddress) {
|
|
2512
|
+
if (typeof onCreateWorker !== 'function') {
|
|
2513
|
+
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
2514
|
+
}
|
|
2515
|
+
var promises = [];
|
|
2516
|
+
var args = [];
|
|
2517
|
+
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
2518
|
+
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
2519
|
+
}
|
|
2520
|
+
args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
|
|
2521
|
+
var handleError = function (e) {
|
|
2522
|
+
if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
|
|
2523
|
+
emnapiAWMT.terminateWorkers();
|
|
2524
|
+
}
|
|
2525
|
+
};
|
|
2526
|
+
var ret;
|
|
2527
|
+
try {
|
|
2528
|
+
var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
|
|
2529
|
+
var p = PThread.loadWasmModuleToWorker(worker_1);
|
|
2530
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
2531
|
+
worker_1.on('error', handleError);
|
|
2532
|
+
}
|
|
2533
|
+
else {
|
|
2534
|
+
worker_1.addEventListener('error', handleError, false);
|
|
2535
|
+
}
|
|
2536
|
+
emnapiAWMT.addListener(worker_1);
|
|
2537
|
+
emnapiTSFN.addListener(worker_1);
|
|
2538
|
+
promises.push(p.then(function () {
|
|
2539
|
+
if (typeof worker_1.unref === 'function') {
|
|
2540
|
+
worker_1.unref();
|
|
2541
|
+
}
|
|
2542
|
+
}));
|
|
2543
|
+
ret = emnapiAWMT.pool.push(worker_1) - 1;
|
|
2544
|
+
var arg = args[0];
|
|
2545
|
+
worker_1.threadBlockBase = arg;
|
|
2546
|
+
worker_1.postMessage({
|
|
2547
|
+
__emnapi__: {
|
|
2548
|
+
type: 'async-worker-init',
|
|
2549
|
+
payload: { arg: arg, func: [f, globalAddress] }
|
|
2550
|
+
}
|
|
2551
|
+
});
|
|
2552
|
+
}
|
|
2553
|
+
catch (err) {
|
|
2554
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2555
|
+
var arg = args[0];
|
|
2556
|
+
_free(arg);
|
|
2557
|
+
throw err;
|
|
2558
|
+
}
|
|
2559
|
+
return ret;
|
|
2560
|
+
}
|
|
2561
|
+
function initWorker(startArg, func) {
|
|
2078
2562
|
if (napiModule.childThread) {
|
|
2079
2563
|
if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
|
|
2080
2564
|
throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
|
|
2081
2565
|
}
|
|
2082
2566
|
wasmInstance.exports.emnapi_async_worker_init(startArg);
|
|
2567
|
+
(wasmTable.get(func[0]))(func[1]);
|
|
2083
2568
|
}
|
|
2084
2569
|
else {
|
|
2085
2570
|
throw new Error('startThread is only available in child threads');
|
|
2086
2571
|
}
|
|
2087
2572
|
}
|
|
2088
|
-
function executeAsyncWork(work) {
|
|
2089
|
-
if (!ENVIRONMENT_IS_PTHREAD)
|
|
2090
|
-
return;
|
|
2091
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2092
|
-
var execute = emnapiAWMT.getExecute(work);
|
|
2093
|
-
var env = emnapiAWMT.getEnv(work);
|
|
2094
|
-
var data = emnapiAWMT.getData(work);
|
|
2095
|
-
(wasmTable.get(execute))(env, data);
|
|
2096
|
-
var postMessage = napiModule.postMessage;
|
|
2097
|
-
postMessage({
|
|
2098
|
-
__emnapi__: {
|
|
2099
|
-
type: 'async-work-complete',
|
|
2100
|
-
payload: { work: work }
|
|
2101
|
-
}
|
|
2102
|
-
});
|
|
2103
|
-
}
|
|
2104
2573
|
napiModule.initWorker = initWorker;
|
|
2105
|
-
napiModule.executeAsyncWork = executeAsyncWork;
|
|
2106
2574
|
var asyncWorkMod = /*#__PURE__*/ Object.freeze({
|
|
2107
2575
|
__proto__: null,
|
|
2576
|
+
_emnapi_async_worker: _emnapi_async_worker,
|
|
2577
|
+
_emnapi_spawn_worker: _emnapi_spawn_worker,
|
|
2108
2578
|
napi_cancel_async_work: napi_cancel_async_work,
|
|
2109
2579
|
napi_create_async_work: napi_create_async_work,
|
|
2110
2580
|
napi_delete_async_work: napi_delete_async_work,
|
|
@@ -2127,6 +2597,10 @@ function createNapiModule(options) {
|
|
|
2127
2597
|
emnapiExternalMemory.table = new WeakMap();
|
|
2128
2598
|
emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
|
|
2129
2599
|
},
|
|
2600
|
+
isSharedArrayBuffer: function (value) {
|
|
2601
|
+
return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
|
|
2602
|
+
(Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
|
|
2603
|
+
},
|
|
2130
2604
|
isDetachedArrayBuffer: function (arrayBuffer) {
|
|
2131
2605
|
if (arrayBuffer.byteLength === 0) {
|
|
2132
2606
|
try {
|
|
@@ -2170,6 +2644,7 @@ function createNapiModule(options) {
|
|
|
2170
2644
|
var pointer = _malloc(arrayBuffer.byteLength);
|
|
2171
2645
|
if (!pointer)
|
|
2172
2646
|
throw new Error('Out of memory');
|
|
2647
|
+
pointer >>>= 0;
|
|
2173
2648
|
new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
|
|
2174
2649
|
info.address = pointer;
|
|
2175
2650
|
info.ownership = emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
|
|
@@ -2191,8 +2666,7 @@ function createNapiModule(options) {
|
|
|
2191
2666
|
}
|
|
2192
2667
|
return view;
|
|
2193
2668
|
}
|
|
2194
|
-
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
|
|
2195
|
-
((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
|
|
2669
|
+
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
|
|
2196
2670
|
if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
|
|
2197
2671
|
var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
|
|
2198
2672
|
var Ctor = info.Ctor;
|
|
@@ -2222,6 +2696,75 @@ function createNapiModule(options) {
|
|
|
2222
2696
|
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
2223
2697
|
}
|
|
2224
2698
|
};
|
|
2699
|
+
/**
|
|
2700
|
+
* Metadata layout in wasm shared memory (allocated with _malloc):
|
|
2701
|
+
* offset 0: refcount (int32, 4 bytes - for Atomics)
|
|
2702
|
+
* offset POINTER_SIZE: external_data (pointer)
|
|
2703
|
+
* offset 2*POINTER_SIZE: byte_length (size_t)
|
|
2704
|
+
* offset 3*POINTER_SIZE: finalize_cb (pointer)
|
|
2705
|
+
* offset 4*POINTER_SIZE: finalize_data (pointer)
|
|
2706
|
+
* offset 5*POINTER_SIZE: finalize_hint (pointer)
|
|
2707
|
+
* Total: 6 * POINTER_SIZE bytes
|
|
2708
|
+
*/
|
|
2709
|
+
/**
|
|
2710
|
+
* @__postset
|
|
2711
|
+
* ```
|
|
2712
|
+
* emnapiExternalSAB.init();
|
|
2713
|
+
* ```
|
|
2714
|
+
*/
|
|
2715
|
+
var emnapiExternalSAB = {
|
|
2716
|
+
registry: undefined,
|
|
2717
|
+
handleTable: new WeakMap(),
|
|
2718
|
+
init: function () {
|
|
2719
|
+
emnapiExternalSAB.handleTable = new WeakMap();
|
|
2720
|
+
emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
|
|
2721
|
+
? new FinalizationRegistry(function (metaPtr) {
|
|
2722
|
+
emnapiExternalSAB.release(metaPtr);
|
|
2723
|
+
})
|
|
2724
|
+
: undefined;
|
|
2725
|
+
},
|
|
2726
|
+
allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
|
|
2727
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2728
|
+
var size = 4 * 6;
|
|
2729
|
+
// eslint-disable-next-line prefer-const
|
|
2730
|
+
var metaPtr = _malloc(size);
|
|
2731
|
+
if (!metaPtr)
|
|
2732
|
+
throw new Error('Out of memory');
|
|
2733
|
+
metaPtr >>>= 0;
|
|
2734
|
+
// refcount = 1
|
|
2735
|
+
Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2736
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2737
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
|
|
2738
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
|
|
2739
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
|
|
2740
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
|
|
2741
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
|
|
2742
|
+
return metaPtr;
|
|
2743
|
+
},
|
|
2744
|
+
readMeta: function (metaPtr) {
|
|
2745
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2746
|
+
var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
|
|
2747
|
+
var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
|
|
2748
|
+
var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
|
|
2749
|
+
var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
|
|
2750
|
+
var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
|
|
2751
|
+
return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
|
|
2752
|
+
},
|
|
2753
|
+
release: function (metaPtr) {
|
|
2754
|
+
var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2755
|
+
if (oldRefcount === 1) {
|
|
2756
|
+
// refcount reached 0, we are the last holder
|
|
2757
|
+
var info = emnapiExternalSAB.readMeta(metaPtr);
|
|
2758
|
+
var finalize_cb = info.finalize_cb;
|
|
2759
|
+
if (finalize_cb) {
|
|
2760
|
+
var finalize_data = info.finalize_data;
|
|
2761
|
+
var finalize_hint = info.finalize_hint;
|
|
2762
|
+
(wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
|
|
2763
|
+
}
|
|
2764
|
+
_free(metaPtr);
|
|
2765
|
+
}
|
|
2766
|
+
}
|
|
2767
|
+
};
|
|
2225
2768
|
/* eslint-disable @typescript-eslint/indent */
|
|
2226
2769
|
/**
|
|
2227
2770
|
* @__postset
|
|
@@ -2332,7 +2875,7 @@ function createNapiModule(options) {
|
|
|
2332
2875
|
ptr >>>= 0;
|
|
2333
2876
|
var HEAPU8 = new Uint8Array(wasmMemory.buffer);
|
|
2334
2877
|
var end = ptr;
|
|
2335
|
-
if (length === -1) {
|
|
2878
|
+
if (length === -1 || length === 4294967295) {
|
|
2336
2879
|
for (; HEAPU8[end];)
|
|
2337
2880
|
++end;
|
|
2338
2881
|
}
|
|
@@ -2423,12 +2966,12 @@ function createNapiModule(options) {
|
|
|
2423
2966
|
return '';
|
|
2424
2967
|
ptr >>>= 0;
|
|
2425
2968
|
var end = ptr;
|
|
2426
|
-
if (length === -1) {
|
|
2427
|
-
var idx = end
|
|
2969
|
+
if (length === -1 || length === 4294967295) {
|
|
2970
|
+
var idx = end >>> 1;
|
|
2428
2971
|
var HEAPU16 = new Uint16Array(wasmMemory.buffer);
|
|
2429
2972
|
while (HEAPU16[idx])
|
|
2430
2973
|
++idx;
|
|
2431
|
-
end = idx << 1;
|
|
2974
|
+
end = (idx << 1) >>> 0;
|
|
2432
2975
|
}
|
|
2433
2976
|
else {
|
|
2434
2977
|
end = ptr + (length >>> 0) * 2;
|
|
@@ -2461,12 +3004,13 @@ function createNapiModule(options) {
|
|
|
2461
3004
|
return outPtr - startPtr;
|
|
2462
3005
|
},
|
|
2463
3006
|
newString: function (env, str, length, result, stringMaker) {
|
|
3007
|
+
length >>>= 0;
|
|
2464
3008
|
if (!env)
|
|
2465
3009
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2466
3010
|
// @ts-expect-error
|
|
2467
3011
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2468
3012
|
envObject.checkGCAccess();
|
|
2469
|
-
var autoLength = length === -1;
|
|
3013
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2470
3014
|
var sizelength = length >>> 0;
|
|
2471
3015
|
if (length !== 0) {
|
|
2472
3016
|
if (!str)
|
|
@@ -2476,20 +3020,23 @@ function createNapiModule(options) {
|
|
|
2476
3020
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2477
3021
|
if (!(autoLength || (sizelength <= 2147483647)))
|
|
2478
3022
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3023
|
+
str >>>= 0;
|
|
2479
3024
|
var strValue = stringMaker(str, autoLength, sizelength);
|
|
3025
|
+
result >>>= 0;
|
|
2480
3026
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2481
3027
|
var value = emnapiCtx.addToCurrentScope(strValue).id;
|
|
2482
3028
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2483
|
-
HEAP_DATA_VIEW.
|
|
3029
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
2484
3030
|
return envObject.clearLastError();
|
|
2485
3031
|
},
|
|
2486
3032
|
newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
|
|
3033
|
+
length >>>= 0;
|
|
2487
3034
|
if (!env)
|
|
2488
3035
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2489
3036
|
// @ts-expect-error
|
|
2490
3037
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2491
3038
|
envObject.checkGCAccess();
|
|
2492
|
-
var autoLength = length === -1;
|
|
3039
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2493
3040
|
var sizelength = length >>> 0;
|
|
2494
3041
|
if (length !== 0) {
|
|
2495
3042
|
if (!str)
|
|
@@ -2535,6 +3082,7 @@ function createNapiModule(options) {
|
|
|
2535
3082
|
if (!handle.isArray()) {
|
|
2536
3083
|
return envObject.setLastError(8 /* napi_status.napi_array_expected */);
|
|
2537
3084
|
}
|
|
3085
|
+
result >>>= 0;
|
|
2538
3086
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2539
3087
|
var v = handle.value.length >>> 0;
|
|
2540
3088
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -2558,19 +3106,59 @@ function createNapiModule(options) {
|
|
|
2558
3106
|
if (!arraybuffer)
|
|
2559
3107
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2560
3108
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
2561
|
-
if (!handle.isArrayBuffer()) {
|
|
3109
|
+
if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
2562
3110
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2563
3111
|
}
|
|
2564
3112
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2565
3113
|
if (data) {
|
|
3114
|
+
data >>>= 0;
|
|
2566
3115
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2567
3116
|
var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
|
|
2568
|
-
HEAP_DATA_VIEW.
|
|
3117
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
3118
|
+
}
|
|
3119
|
+
if (byte_length) {
|
|
3120
|
+
byte_length >>>= 0;
|
|
3121
|
+
HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
|
|
3122
|
+
}
|
|
3123
|
+
return envObject.clearLastError();
|
|
3124
|
+
}
|
|
3125
|
+
/**
|
|
3126
|
+
* @__sig ippp
|
|
3127
|
+
*/
|
|
3128
|
+
function node_api_set_prototype(env, object, value) {
|
|
3129
|
+
if (!env)
|
|
3130
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
3131
|
+
// @ts-expect-error
|
|
3132
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
3133
|
+
envObject.checkGCAccess();
|
|
3134
|
+
if (!envObject.tryCatch.isEmpty())
|
|
3135
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3136
|
+
if (!envObject.canCallIntoJs())
|
|
3137
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
3138
|
+
envObject.clearLastError();
|
|
3139
|
+
try {
|
|
3140
|
+
if (!value)
|
|
3141
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3142
|
+
var obj = emnapiCtx.handleStore.get(object).value;
|
|
3143
|
+
if (obj == null) {
|
|
3144
|
+
throw new TypeError('Cannot convert undefined or null to object');
|
|
3145
|
+
}
|
|
3146
|
+
var type = typeof obj;
|
|
3147
|
+
var v = void 0;
|
|
3148
|
+
try {
|
|
3149
|
+
v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
|
|
3150
|
+
}
|
|
3151
|
+
catch (_) {
|
|
3152
|
+
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
3153
|
+
}
|
|
3154
|
+
var val = emnapiCtx.handleStore.get(value).value;
|
|
3155
|
+
Object.setPrototypeOf(v, val);
|
|
3156
|
+
return envObject.getReturnStatus();
|
|
2569
3157
|
}
|
|
2570
|
-
|
|
2571
|
-
|
|
3158
|
+
catch (err) {
|
|
3159
|
+
envObject.tryCatch.setError(err);
|
|
3160
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2572
3161
|
}
|
|
2573
|
-
return envObject.clearLastError();
|
|
2574
3162
|
}
|
|
2575
3163
|
/**
|
|
2576
3164
|
* @__sig ippp
|
|
@@ -2602,10 +3190,11 @@ function createNapiModule(options) {
|
|
|
2602
3190
|
catch (_) {
|
|
2603
3191
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
2604
3192
|
}
|
|
3193
|
+
result >>>= 0;
|
|
2605
3194
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2606
3195
|
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
2607
3196
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2608
|
-
HEAP_DATA_VIEW.
|
|
3197
|
+
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
2609
3198
|
return envObject.getReturnStatus();
|
|
2610
3199
|
}
|
|
2611
3200
|
catch (err) {
|
|
@@ -2631,6 +3220,7 @@ function createNapiModule(options) {
|
|
|
2631
3220
|
var v = handle.value;
|
|
2632
3221
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2633
3222
|
if (type) {
|
|
3223
|
+
type >>>= 0;
|
|
2634
3224
|
var t = void 0;
|
|
2635
3225
|
if (v instanceof Int8Array) {
|
|
2636
3226
|
t = 0 /* napi_typedarray_type.napi_int8_array */;
|
|
@@ -2653,6 +3243,9 @@ function createNapiModule(options) {
|
|
|
2653
3243
|
else if (v instanceof Uint32Array) {
|
|
2654
3244
|
t = 6 /* napi_typedarray_type.napi_uint32_array */;
|
|
2655
3245
|
}
|
|
3246
|
+
else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
|
|
3247
|
+
t = 11 /* napi_typedarray_type.napi_float16_array */;
|
|
3248
|
+
}
|
|
2656
3249
|
else if (v instanceof Float32Array) {
|
|
2657
3250
|
t = 7 /* napi_typedarray_type.napi_float32_array */;
|
|
2658
3251
|
}
|
|
@@ -2671,24 +3264,27 @@ function createNapiModule(options) {
|
|
|
2671
3264
|
}
|
|
2672
3265
|
HEAP_DATA_VIEW.setInt32(type, t, true);
|
|
2673
3266
|
}
|
|
3267
|
+
v = emnapiExternalMemory.getOrUpdateMemoryView(v);
|
|
2674
3268
|
if (length) {
|
|
3269
|
+
length >>>= 0;
|
|
2675
3270
|
HEAP_DATA_VIEW.setUint32(length, v.length, true);
|
|
2676
3271
|
}
|
|
2677
|
-
var buffer;
|
|
2678
3272
|
if (data || arraybuffer) {
|
|
2679
|
-
buffer = v.buffer;
|
|
2680
3273
|
if (data) {
|
|
3274
|
+
data >>>= 0;
|
|
2681
3275
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2682
3276
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2683
|
-
HEAP_DATA_VIEW.
|
|
3277
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2684
3278
|
}
|
|
2685
3279
|
if (arraybuffer) {
|
|
3280
|
+
arraybuffer >>>= 0;
|
|
2686
3281
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2687
|
-
var ab = envObject.ensureHandleId(buffer);
|
|
2688
|
-
HEAP_DATA_VIEW.
|
|
3282
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
3283
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2689
3284
|
}
|
|
2690
3285
|
}
|
|
2691
3286
|
if (byte_offset) {
|
|
3287
|
+
byte_offset >>>= 0;
|
|
2692
3288
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2693
3289
|
}
|
|
2694
3290
|
return envObject.clearLastError();
|
|
@@ -2727,26 +3323,28 @@ function createNapiModule(options) {
|
|
|
2727
3323
|
if (!handle.isDataView()) {
|
|
2728
3324
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2729
3325
|
}
|
|
2730
|
-
var v = handle.value;
|
|
3326
|
+
var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
|
|
2731
3327
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2732
3328
|
if (byte_length) {
|
|
3329
|
+
byte_length >>>= 0;
|
|
2733
3330
|
HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
|
|
2734
3331
|
}
|
|
2735
|
-
var buffer;
|
|
2736
3332
|
if (data || arraybuffer) {
|
|
2737
|
-
buffer = v.buffer;
|
|
2738
3333
|
if (data) {
|
|
3334
|
+
data >>>= 0;
|
|
2739
3335
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2740
3336
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2741
|
-
HEAP_DATA_VIEW.
|
|
3337
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2742
3338
|
}
|
|
2743
3339
|
if (arraybuffer) {
|
|
3340
|
+
arraybuffer >>>= 0;
|
|
2744
3341
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2745
|
-
var ab = envObject.ensureHandleId(buffer);
|
|
2746
|
-
HEAP_DATA_VIEW.
|
|
3342
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
3343
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2747
3344
|
}
|
|
2748
3345
|
}
|
|
2749
3346
|
if (byte_offset) {
|
|
3347
|
+
byte_offset >>>= 0;
|
|
2750
3348
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2751
3349
|
}
|
|
2752
3350
|
return envObject.clearLastError();
|
|
@@ -2776,6 +3374,7 @@ function createNapiModule(options) {
|
|
|
2776
3374
|
if (!handle.isDate()) {
|
|
2777
3375
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2778
3376
|
}
|
|
3377
|
+
result >>>= 0;
|
|
2779
3378
|
v = handle.value.valueOf();
|
|
2780
3379
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2781
3380
|
HEAP_DATA_VIEW.setFloat64(result, v, true);
|
|
@@ -2803,6 +3402,7 @@ function createNapiModule(options) {
|
|
|
2803
3402
|
if (typeof handle.value !== 'boolean') {
|
|
2804
3403
|
return envObject.setLastError(7 /* napi_status.napi_boolean_expected */);
|
|
2805
3404
|
}
|
|
3405
|
+
result >>>= 0;
|
|
2806
3406
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2807
3407
|
var r = handle.value ? 1 : 0;
|
|
2808
3408
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -2826,6 +3426,7 @@ function createNapiModule(options) {
|
|
|
2826
3426
|
if (typeof handle.value !== 'number') {
|
|
2827
3427
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
2828
3428
|
}
|
|
3429
|
+
result >>>= 0;
|
|
2829
3430
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2830
3431
|
var r = handle.value;
|
|
2831
3432
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -2855,6 +3456,8 @@ function createNapiModule(options) {
|
|
|
2855
3456
|
if (typeof numberValue !== 'bigint') {
|
|
2856
3457
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
2857
3458
|
}
|
|
3459
|
+
lossless >>>= 0;
|
|
3460
|
+
result >>>= 0;
|
|
2858
3461
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2859
3462
|
if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
|
|
2860
3463
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2897,6 +3500,8 @@ function createNapiModule(options) {
|
|
|
2897
3500
|
if (typeof numberValue !== 'bigint') {
|
|
2898
3501
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
2899
3502
|
}
|
|
3503
|
+
lossless >>>= 0;
|
|
3504
|
+
result >>>= 0;
|
|
2900
3505
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2901
3506
|
if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
|
|
2902
3507
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2934,8 +3539,12 @@ function createNapiModule(options) {
|
|
|
2934
3539
|
return envObject.setLastError(17 /* napi_status.napi_bigint_expected */);
|
|
2935
3540
|
}
|
|
2936
3541
|
var isMinus = handle.value < BigInt(0);
|
|
3542
|
+
sign_bit >>>= 0;
|
|
3543
|
+
words >>>= 0;
|
|
3544
|
+
word_count >>>= 0;
|
|
2937
3545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2938
3546
|
var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
|
|
3547
|
+
word_count_int >>>= 0;
|
|
2939
3548
|
var wordCount = 0;
|
|
2940
3549
|
var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
|
|
2941
3550
|
while (bigintValue !== BigInt(0)) {
|
|
@@ -2989,10 +3598,11 @@ function createNapiModule(options) {
|
|
|
2989
3598
|
if (!handle.isExternal()) {
|
|
2990
3599
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2991
3600
|
}
|
|
3601
|
+
result >>>= 0;
|
|
2992
3602
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2993
3603
|
var p = handle.data();
|
|
2994
3604
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2995
|
-
HEAP_DATA_VIEW.
|
|
3605
|
+
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
2996
3606
|
return envObject.clearLastError();
|
|
2997
3607
|
}
|
|
2998
3608
|
/**
|
|
@@ -3012,6 +3622,7 @@ function createNapiModule(options) {
|
|
|
3012
3622
|
if (typeof handle.value !== 'number') {
|
|
3013
3623
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
3014
3624
|
}
|
|
3625
|
+
result >>>= 0;
|
|
3015
3626
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3016
3627
|
var v = new Int32Array([handle.value])[0];
|
|
3017
3628
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3036,6 +3647,7 @@ function createNapiModule(options) {
|
|
|
3036
3647
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
3037
3648
|
}
|
|
3038
3649
|
var numberValue = handle.value;
|
|
3650
|
+
result >>>= 0;
|
|
3039
3651
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3040
3652
|
if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
|
|
3041
3653
|
HEAP_DATA_VIEW.setInt32(result, 0, true);
|
|
@@ -3065,6 +3677,9 @@ function createNapiModule(options) {
|
|
|
3065
3677
|
envObject.checkGCAccess();
|
|
3066
3678
|
if (!value)
|
|
3067
3679
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3680
|
+
result >>>= 0;
|
|
3681
|
+
buf >>>= 0;
|
|
3682
|
+
buf_size >>>= 0;
|
|
3068
3683
|
buf_size = buf_size >>> 0;
|
|
3069
3684
|
var handle = emnapiCtx.handleStore.get(value);
|
|
3070
3685
|
if (typeof handle.value !== 'string') {
|
|
@@ -3107,6 +3722,9 @@ function createNapiModule(options) {
|
|
|
3107
3722
|
envObject.checkGCAccess();
|
|
3108
3723
|
if (!value)
|
|
3109
3724
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3725
|
+
result >>>= 0;
|
|
3726
|
+
buf >>>= 0;
|
|
3727
|
+
buf_size >>>= 0;
|
|
3110
3728
|
buf_size = buf_size >>> 0;
|
|
3111
3729
|
var handle = emnapiCtx.handleStore.get(value);
|
|
3112
3730
|
if (typeof handle.value !== 'string') {
|
|
@@ -3143,6 +3761,9 @@ function createNapiModule(options) {
|
|
|
3143
3761
|
envObject.checkGCAccess();
|
|
3144
3762
|
if (!value)
|
|
3145
3763
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3764
|
+
result >>>= 0;
|
|
3765
|
+
buf >>>= 0;
|
|
3766
|
+
buf_size >>>= 0;
|
|
3146
3767
|
buf_size = buf_size >>> 0;
|
|
3147
3768
|
var handle = emnapiCtx.handleStore.get(value);
|
|
3148
3769
|
if (typeof handle.value !== 'string') {
|
|
@@ -3183,6 +3804,7 @@ function createNapiModule(options) {
|
|
|
3183
3804
|
if (typeof handle.value !== 'number') {
|
|
3184
3805
|
return envObject.setLastError(6 /* napi_status.napi_number_expected */);
|
|
3185
3806
|
}
|
|
3807
|
+
result >>>= 0;
|
|
3186
3808
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3187
3809
|
var v = new Uint32Array([handle.value])[0];
|
|
3188
3810
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3209,7 +3831,8 @@ function createNapiModule(options) {
|
|
|
3209
3831
|
napi_get_value_string_latin1: napi_get_value_string_latin1,
|
|
3210
3832
|
napi_get_value_string_utf16: napi_get_value_string_utf16,
|
|
3211
3833
|
napi_get_value_string_utf8: napi_get_value_string_utf8,
|
|
3212
|
-
napi_get_value_uint32: napi_get_value_uint32
|
|
3834
|
+
napi_get_value_uint32: napi_get_value_uint32,
|
|
3835
|
+
node_api_set_prototype: node_api_set_prototype
|
|
3213
3836
|
});
|
|
3214
3837
|
/**
|
|
3215
3838
|
* @__sig ipip
|
|
@@ -3222,10 +3845,11 @@ function createNapiModule(options) {
|
|
|
3222
3845
|
envObject.checkGCAccess();
|
|
3223
3846
|
if (!result)
|
|
3224
3847
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3848
|
+
result >>>= 0;
|
|
3225
3849
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3226
3850
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
3227
3851
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3228
|
-
HEAP_DATA_VIEW.
|
|
3852
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3229
3853
|
return envObject.clearLastError();
|
|
3230
3854
|
}
|
|
3231
3855
|
/**
|
|
@@ -3239,10 +3863,11 @@ function createNapiModule(options) {
|
|
|
3239
3863
|
envObject.checkGCAccess();
|
|
3240
3864
|
if (!result)
|
|
3241
3865
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3866
|
+
result >>>= 0;
|
|
3242
3867
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3243
3868
|
var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
|
|
3244
3869
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3245
|
-
HEAP_DATA_VIEW.
|
|
3870
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3246
3871
|
return envObject.clearLastError();
|
|
3247
3872
|
}
|
|
3248
3873
|
/**
|
|
@@ -3260,8 +3885,9 @@ function createNapiModule(options) {
|
|
|
3260
3885
|
value = Number(low);
|
|
3261
3886
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3262
3887
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3888
|
+
high >>>= 0;
|
|
3263
3889
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3264
|
-
HEAP_DATA_VIEW.
|
|
3890
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3265
3891
|
return envObject.clearLastError();
|
|
3266
3892
|
}
|
|
3267
3893
|
/**
|
|
@@ -3275,10 +3901,11 @@ function createNapiModule(options) {
|
|
|
3275
3901
|
envObject.checkGCAccess();
|
|
3276
3902
|
if (!result)
|
|
3277
3903
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3904
|
+
result >>>= 0;
|
|
3278
3905
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3279
3906
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
3280
3907
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3281
|
-
HEAP_DATA_VIEW.
|
|
3908
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3282
3909
|
return envObject.clearLastError();
|
|
3283
3910
|
}
|
|
3284
3911
|
/**
|
|
@@ -3375,8 +4002,9 @@ function createNapiModule(options) {
|
|
|
3375
4002
|
value = low;
|
|
3376
4003
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3377
4004
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
4005
|
+
high >>>= 0;
|
|
3378
4006
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3379
|
-
HEAP_DATA_VIEW.
|
|
4007
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3380
4008
|
return envObject.clearLastError();
|
|
3381
4009
|
}
|
|
3382
4010
|
/**
|
|
@@ -3397,8 +4025,9 @@ function createNapiModule(options) {
|
|
|
3397
4025
|
value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
|
|
3398
4026
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3399
4027
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
4028
|
+
high >>>= 0;
|
|
3400
4029
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3401
|
-
HEAP_DATA_VIEW.
|
|
4030
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3402
4031
|
return envObject.clearLastError();
|
|
3403
4032
|
}
|
|
3404
4033
|
/**
|
|
@@ -3423,6 +4052,8 @@ function createNapiModule(options) {
|
|
|
3423
4052
|
}
|
|
3424
4053
|
if (!result)
|
|
3425
4054
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4055
|
+
words >>>= 0;
|
|
4056
|
+
word_count >>>= 0;
|
|
3426
4057
|
word_count = word_count >>> 0;
|
|
3427
4058
|
if (word_count > 2147483647) {
|
|
3428
4059
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
@@ -3439,8 +4070,9 @@ function createNapiModule(options) {
|
|
|
3439
4070
|
value += wordi << BigInt(64 * i);
|
|
3440
4071
|
}
|
|
3441
4072
|
value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
|
|
4073
|
+
result >>>= 0;
|
|
3442
4074
|
v = emnapiCtx.addToCurrentScope(value).id;
|
|
3443
|
-
HEAP_DATA_VIEW.
|
|
4075
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3444
4076
|
return envObject.getReturnStatus();
|
|
3445
4077
|
}
|
|
3446
4078
|
catch (err) {
|
|
@@ -3467,6 +4099,7 @@ function createNapiModule(options) {
|
|
|
3467
4099
|
node_api_create_property_key_utf8: node_api_create_property_key_utf8
|
|
3468
4100
|
});
|
|
3469
4101
|
function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
|
|
4102
|
+
utf8name >>>= 0;
|
|
3470
4103
|
var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
|
|
3471
4104
|
var f;
|
|
3472
4105
|
var napiCallback = (wasmTable.get(cb));
|
|
@@ -3609,9 +4242,10 @@ function createNapiModule(options) {
|
|
|
3609
4242
|
if (!finalize_cb)
|
|
3610
4243
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3611
4244
|
reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1 /* ReferenceOwnership.kUserland */, finalize_cb, native_object, finalize_hint);
|
|
4245
|
+
result >>>= 0;
|
|
3612
4246
|
referenceId = reference.id;
|
|
3613
4247
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3614
|
-
HEAP_DATA_VIEW.
|
|
4248
|
+
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
3615
4249
|
}
|
|
3616
4250
|
else {
|
|
3617
4251
|
if (finalize_cb) {
|
|
@@ -3659,10 +4293,11 @@ function createNapiModule(options) {
|
|
|
3659
4293
|
if (!ref)
|
|
3660
4294
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3661
4295
|
if (result) {
|
|
4296
|
+
result >>>= 0;
|
|
3662
4297
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3663
4298
|
data = ref.data();
|
|
3664
4299
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3665
|
-
HEAP_DATA_VIEW.
|
|
4300
|
+
HEAP_DATA_VIEW.setUint32(result, data, true);
|
|
3666
4301
|
}
|
|
3667
4302
|
if (action === 1 /* UnwrapAction.RemoveWrap */) {
|
|
3668
4303
|
binding.wrapped = 0;
|
|
@@ -3702,12 +4337,15 @@ function createNapiModule(options) {
|
|
|
3702
4337
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3703
4338
|
if (!constructor)
|
|
3704
4339
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4340
|
+
length >>>= 0;
|
|
4341
|
+
properties >>>= 0;
|
|
4342
|
+
property_count >>>= 0;
|
|
3705
4343
|
property_count = property_count >>> 0;
|
|
3706
4344
|
if (property_count > 0) {
|
|
3707
4345
|
if (!properties)
|
|
3708
4346
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3709
4347
|
}
|
|
3710
|
-
if ((length
|
|
4348
|
+
if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
|
|
3711
4349
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3712
4350
|
}
|
|
3713
4351
|
var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
|
|
@@ -3719,14 +4357,15 @@ function createNapiModule(options) {
|
|
|
3719
4357
|
for (var i = 0; i < property_count; i++) {
|
|
3720
4358
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3721
4359
|
propPtr = properties + (i * (4 * 8));
|
|
3722
|
-
var utf8Name = HEAP_DATA_VIEW.
|
|
3723
|
-
var name_1 = HEAP_DATA_VIEW.
|
|
3724
|
-
var method = HEAP_DATA_VIEW.
|
|
3725
|
-
var getter = HEAP_DATA_VIEW.
|
|
3726
|
-
var setter = HEAP_DATA_VIEW.
|
|
3727
|
-
var value = HEAP_DATA_VIEW.
|
|
4360
|
+
var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
|
|
4361
|
+
var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
|
|
4362
|
+
var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
|
|
4363
|
+
var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
|
|
4364
|
+
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
4365
|
+
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
3728
4366
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
3729
|
-
|
|
4367
|
+
attributes >>>= 0;
|
|
4368
|
+
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
3730
4369
|
if (utf8Name) {
|
|
3731
4370
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
3732
4371
|
}
|
|
@@ -3748,7 +4387,8 @@ function createNapiModule(options) {
|
|
|
3748
4387
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3749
4388
|
var valueHandle = emnapiCtx.addToCurrentScope(F);
|
|
3750
4389
|
valueHandleId = valueHandle.id;
|
|
3751
|
-
|
|
4390
|
+
result >>>= 0;
|
|
4391
|
+
HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
|
|
3752
4392
|
return envObject.getReturnStatus();
|
|
3753
4393
|
}
|
|
3754
4394
|
catch (err) {
|
|
@@ -3796,6 +4436,7 @@ function createNapiModule(options) {
|
|
|
3796
4436
|
if (!(value.isObject() || value.isFunction())) {
|
|
3797
4437
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
|
|
3798
4438
|
}
|
|
4439
|
+
type_tag >>>= 0;
|
|
3799
4440
|
if (!type_tag) {
|
|
3800
4441
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
|
|
3801
4442
|
}
|
|
@@ -3845,6 +4486,7 @@ function createNapiModule(options) {
|
|
|
3845
4486
|
}
|
|
3846
4487
|
var binding = envObject.getObjectBinding(value.value);
|
|
3847
4488
|
if (binding.tag !== null) {
|
|
4489
|
+
type_tag >>>= 0;
|
|
3848
4490
|
var tag = binding.tag;
|
|
3849
4491
|
var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
|
|
3850
4492
|
ret = (tag[0] === typeTag[0] &&
|
|
@@ -3855,6 +4497,7 @@ function createNapiModule(options) {
|
|
|
3855
4497
|
else {
|
|
3856
4498
|
ret = false;
|
|
3857
4499
|
}
|
|
4500
|
+
result >>>= 0;
|
|
3858
4501
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3859
4502
|
HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
|
|
3860
4503
|
return envObject.getReturnStatus();
|
|
@@ -3886,12 +4529,16 @@ function createNapiModule(options) {
|
|
|
3886
4529
|
}
|
|
3887
4530
|
var handle = handleResult.handle;
|
|
3888
4531
|
var ownership = !result ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */;
|
|
4532
|
+
finalize_data >>>= 0;
|
|
4533
|
+
finalize_cb >>>= 0;
|
|
4534
|
+
finalize_hint >>>= 0;
|
|
3889
4535
|
var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
|
|
3890
4536
|
if (result) {
|
|
4537
|
+
result >>>= 0;
|
|
3891
4538
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3892
4539
|
var referenceId = reference.id;
|
|
3893
4540
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3894
|
-
HEAP_DATA_VIEW.
|
|
4541
|
+
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
3895
4542
|
}
|
|
3896
4543
|
return envObject.clearLastError();
|
|
3897
4544
|
}
|
|
@@ -3935,6 +4582,9 @@ function createNapiModule(options) {
|
|
|
3935
4582
|
try {
|
|
3936
4583
|
if (!result)
|
|
3937
4584
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4585
|
+
byte_length >>>= 0;
|
|
4586
|
+
external_data >>>= 0;
|
|
4587
|
+
result >>>= 0;
|
|
3938
4588
|
byte_length = byte_length >>> 0;
|
|
3939
4589
|
if (!external_data) {
|
|
3940
4590
|
byte_length = 0;
|
|
@@ -3986,6 +4636,12 @@ function createNapiModule(options) {
|
|
|
3986
4636
|
case -1 /* emnapi_memory_view_type.emnapi_data_view */:
|
|
3987
4637
|
viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 };
|
|
3988
4638
|
break;
|
|
4639
|
+
case 11 /* emnapi_memory_view_type.emnapi_float16_array */:
|
|
4640
|
+
if (typeof Float16Array !== 'function') {
|
|
4641
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4642
|
+
}
|
|
4643
|
+
viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 };
|
|
4644
|
+
break;
|
|
3989
4645
|
case -2 /* emnapi_memory_view_type.emnapi_buffer */: {
|
|
3990
4646
|
if (!emnapiCtx.feature.Buffer) {
|
|
3991
4647
|
throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
|
|
@@ -4014,7 +4670,7 @@ function createNapiModule(options) {
|
|
|
4014
4670
|
}
|
|
4015
4671
|
value = handle.id;
|
|
4016
4672
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4017
|
-
HEAP_DATA_VIEW.
|
|
4673
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4018
4674
|
return envObject.getReturnStatus();
|
|
4019
4675
|
}
|
|
4020
4676
|
catch (err) {
|
|
@@ -4044,11 +4700,11 @@ function createNapiModule(options) {
|
|
|
4044
4700
|
offset = offset !== null && offset !== void 0 ? offset : 0;
|
|
4045
4701
|
offset = offset >>> 0;
|
|
4046
4702
|
var view;
|
|
4047
|
-
if (arrayBufferOrView instanceof ArrayBuffer) {
|
|
4703
|
+
if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
4048
4704
|
var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
|
|
4049
4705
|
if (!pointer)
|
|
4050
4706
|
throw new Error('Unknown ArrayBuffer address');
|
|
4051
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4707
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
4052
4708
|
len = arrayBufferOrView.byteLength - offset;
|
|
4053
4709
|
}
|
|
4054
4710
|
len = len >>> 0;
|
|
@@ -4070,7 +4726,7 @@ function createNapiModule(options) {
|
|
|
4070
4726
|
var pointer = viewPointerInfo.address;
|
|
4071
4727
|
if (!pointer)
|
|
4072
4728
|
throw new Error('Unknown ArrayBuffer address');
|
|
4073
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4729
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
4074
4730
|
len = latestView.byteLength - offset;
|
|
4075
4731
|
}
|
|
4076
4732
|
len = len >>> 0;
|
|
@@ -4107,16 +4763,20 @@ function createNapiModule(options) {
|
|
|
4107
4763
|
try {
|
|
4108
4764
|
if (!arraybuffer_or_view)
|
|
4109
4765
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4766
|
+
arraybuffer_or_view >>>= 0;
|
|
4767
|
+
offset >>>= 0;
|
|
4768
|
+
len >>>= 0;
|
|
4110
4769
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4111
|
-
var handleId = HEAP_DATA_VIEW.
|
|
4770
|
+
var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
|
|
4112
4771
|
var handle = envObject.ctx.handleStore.get(handleId);
|
|
4113
|
-
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView()) {
|
|
4772
|
+
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
4114
4773
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4115
4774
|
}
|
|
4116
4775
|
var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
|
|
4117
4776
|
if (handle.value !== ret) {
|
|
4777
|
+
arraybuffer_or_view >>>= 0;
|
|
4118
4778
|
v = envObject.ensureHandleId(ret);
|
|
4119
|
-
HEAP_DATA_VIEW.
|
|
4779
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
|
|
4120
4780
|
}
|
|
4121
4781
|
return envObject.getReturnStatus();
|
|
4122
4782
|
}
|
|
@@ -4129,7 +4789,7 @@ function createNapiModule(options) {
|
|
|
4129
4789
|
var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer;
|
|
4130
4790
|
var isDataView = arrayBufferOrView instanceof DataView;
|
|
4131
4791
|
var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView;
|
|
4132
|
-
if (!isArrayBuffer && !isTypedArray && !isDataView) {
|
|
4792
|
+
if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
4133
4793
|
throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter');
|
|
4134
4794
|
}
|
|
4135
4795
|
var info;
|
|
@@ -4173,13 +4833,16 @@ function createNapiModule(options) {
|
|
|
4173
4833
|
p = info.address;
|
|
4174
4834
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4175
4835
|
if (address) {
|
|
4176
|
-
|
|
4836
|
+
address >>>= 0;
|
|
4837
|
+
HEAP_DATA_VIEW.setUint32(address, p, true);
|
|
4177
4838
|
}
|
|
4178
4839
|
if (ownership) {
|
|
4840
|
+
ownership >>>= 0;
|
|
4179
4841
|
ownershipOut = info.ownership;
|
|
4180
4842
|
HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
|
|
4181
4843
|
}
|
|
4182
4844
|
if (runtime_allocated) {
|
|
4845
|
+
runtime_allocated >>>= 0;
|
|
4183
4846
|
runtimeAllocated = info.runtimeAllocated;
|
|
4184
4847
|
HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
|
|
4185
4848
|
}
|
|
@@ -4209,22 +4872,129 @@ function createNapiModule(options) {
|
|
|
4209
4872
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4210
4873
|
var versions = runtimeVersion.split('.')
|
|
4211
4874
|
.map(function (n) { return Number(n); });
|
|
4875
|
+
version >>>= 0;
|
|
4212
4876
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4213
4877
|
HEAP_DATA_VIEW.setUint32(version, versions[0], true);
|
|
4214
4878
|
HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
|
|
4215
4879
|
HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
|
|
4216
4880
|
return envObject.clearLastError();
|
|
4217
4881
|
}
|
|
4882
|
+
/**
|
|
4883
|
+
* Get the handle for an external SharedArrayBuffer.
|
|
4884
|
+
* Must be called on the emnapi main thread.
|
|
4885
|
+
* @__sig ippp
|
|
4886
|
+
*/
|
|
4887
|
+
function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
|
|
4888
|
+
if (!env)
|
|
4889
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
4890
|
+
// @ts-expect-error
|
|
4891
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4892
|
+
envObject.checkGCAccess();
|
|
4893
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4894
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4895
|
+
if (!envObject.canCallIntoJs())
|
|
4896
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
4897
|
+
envObject.clearLastError();
|
|
4898
|
+
try {
|
|
4899
|
+
if (!sharedarraybuffer)
|
|
4900
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4901
|
+
if (!handle)
|
|
4902
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4903
|
+
handle >>>= 0;
|
|
4904
|
+
var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
|
|
4905
|
+
if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
|
|
4906
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4907
|
+
}
|
|
4908
|
+
var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
|
|
4909
|
+
if (metaPtr === undefined) {
|
|
4910
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4911
|
+
}
|
|
4912
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4913
|
+
HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
|
|
4914
|
+
return envObject.getReturnStatus();
|
|
4915
|
+
}
|
|
4916
|
+
catch (err) {
|
|
4917
|
+
envObject.tryCatch.setError(err);
|
|
4918
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4919
|
+
}
|
|
4920
|
+
}
|
|
4921
|
+
/**
|
|
4922
|
+
* Acquire a reference to an external SharedArrayBuffer.
|
|
4923
|
+
* Can be called on any thread.
|
|
4924
|
+
* @__sig vp
|
|
4925
|
+
*/
|
|
4926
|
+
function emnapi_acquire_external_sharedarraybuffer(handle) {
|
|
4927
|
+
handle >>>= 0;
|
|
4928
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4929
|
+
}
|
|
4930
|
+
/**
|
|
4931
|
+
* Release a reference to an external SharedArrayBuffer.
|
|
4932
|
+
* Can be called on any thread.
|
|
4933
|
+
* @__sig vp
|
|
4934
|
+
*/
|
|
4935
|
+
function emnapi_release_external_sharedarraybuffer(handle) {
|
|
4936
|
+
handle >>>= 0;
|
|
4937
|
+
emnapiExternalSAB.release(handle);
|
|
4938
|
+
}
|
|
4939
|
+
/**
|
|
4940
|
+
* Acquire a reference to an external SharedArrayBuffer on the current thread.
|
|
4941
|
+
* Can be called on any thread. Increments refcount and registers in
|
|
4942
|
+
* the current thread's FinalizationRegistry.
|
|
4943
|
+
* Exposed as Module.emnapiAcquireExternalSharedArrayBuffer (emscripten) or
|
|
4944
|
+
* napiModule.emnapi.acquireExternalSharedArrayBuffer (core).
|
|
4945
|
+
*/
|
|
4946
|
+
function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
|
|
4947
|
+
if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
|
|
4948
|
+
throw new TypeError('Expected a SharedArrayBuffer');
|
|
4949
|
+
}
|
|
4950
|
+
if (!emnapiExternalSAB.registry) {
|
|
4951
|
+
throw new Error('FinalizationRegistry is not supported in this environment');
|
|
4952
|
+
}
|
|
4953
|
+
handle >>>= 0;
|
|
4954
|
+
var meta = emnapiExternalSAB.readMeta(handle);
|
|
4955
|
+
// eslint-disable-next-line prefer-const
|
|
4956
|
+
var external_data = meta.external_data;
|
|
4957
|
+
external_data >>>= 0;
|
|
4958
|
+
if (sab == null) {
|
|
4959
|
+
sab = new SharedArrayBuffer(meta.byte_length);
|
|
4960
|
+
new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
|
|
4961
|
+
}
|
|
4962
|
+
else {
|
|
4963
|
+
if (emnapiExternalSAB.handleTable.has(sab)) {
|
|
4964
|
+
return sab;
|
|
4965
|
+
}
|
|
4966
|
+
}
|
|
4967
|
+
// Increment refcount atomically
|
|
4968
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4969
|
+
// Register in emnapiExternalMemory.table for emnapi_sync_memory support
|
|
4970
|
+
if (!emnapiExternalMemory.table.has(sab)) {
|
|
4971
|
+
if (external_data) {
|
|
4972
|
+
emnapiExternalMemory.table.set(sab, {
|
|
4973
|
+
address: external_data,
|
|
4974
|
+
ownership: 1 /* ReferenceOwnership.kUserland */,
|
|
4975
|
+
runtimeAllocated: 0
|
|
4976
|
+
});
|
|
4977
|
+
}
|
|
4978
|
+
}
|
|
4979
|
+
// Register in handleTable and FinalizationRegistry for this thread
|
|
4980
|
+
emnapiExternalSAB.handleTable.set(sab, handle);
|
|
4981
|
+
emnapiExternalSAB.registry.register(sab, handle);
|
|
4982
|
+
return sab;
|
|
4983
|
+
}
|
|
4218
4984
|
var emnapiMod = /*#__PURE__*/ Object.freeze({
|
|
4219
4985
|
__proto__: null,
|
|
4986
|
+
$emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
|
|
4220
4987
|
$emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
|
|
4221
4988
|
$emnapiSyncMemory: $emnapiSyncMemory,
|
|
4989
|
+
emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
|
|
4222
4990
|
emnapi_create_memory_view: emnapi_create_memory_view,
|
|
4991
|
+
emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
|
|
4223
4992
|
emnapi_get_memory_address: emnapi_get_memory_address,
|
|
4224
4993
|
emnapi_get_runtime_version: emnapi_get_runtime_version,
|
|
4225
4994
|
emnapi_is_node_binding_available: emnapi_is_node_binding_available,
|
|
4226
4995
|
emnapi_is_support_bigint: emnapi_is_support_bigint,
|
|
4227
4996
|
emnapi_is_support_weakref: emnapi_is_support_weakref,
|
|
4997
|
+
emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
|
|
4228
4998
|
emnapi_sync_memory: emnapi_sync_memory
|
|
4229
4999
|
});
|
|
4230
5000
|
/**
|
|
@@ -4238,10 +5008,11 @@ function createNapiModule(options) {
|
|
|
4238
5008
|
envObject.checkGCAccess();
|
|
4239
5009
|
if (!result)
|
|
4240
5010
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5011
|
+
result >>>= 0;
|
|
4241
5012
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4242
5013
|
var value = emnapiCtx.addToCurrentScope([]).id;
|
|
4243
5014
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4244
|
-
HEAP_DATA_VIEW.
|
|
5015
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4245
5016
|
return envObject.clearLastError();
|
|
4246
5017
|
}
|
|
4247
5018
|
/**
|
|
@@ -4255,21 +5026,25 @@ function createNapiModule(options) {
|
|
|
4255
5026
|
envObject.checkGCAccess();
|
|
4256
5027
|
if (!result)
|
|
4257
5028
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5029
|
+
length >>>= 0;
|
|
5030
|
+
result >>>= 0;
|
|
4258
5031
|
length = length >>> 0;
|
|
4259
5032
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4260
5033
|
var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
|
|
4261
5034
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4262
|
-
HEAP_DATA_VIEW.
|
|
5035
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4263
5036
|
return envObject.clearLastError();
|
|
4264
5037
|
}
|
|
4265
|
-
function emnapiCreateArrayBuffer(byte_length, data) {
|
|
5038
|
+
function emnapiCreateArrayBuffer(byte_length, data, shared) {
|
|
5039
|
+
byte_length >>>= 0;
|
|
4266
5040
|
byte_length = byte_length >>> 0;
|
|
4267
|
-
var arrayBuffer = new ArrayBuffer(byte_length);
|
|
5041
|
+
var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
|
|
4268
5042
|
if (data) {
|
|
5043
|
+
data >>>= 0;
|
|
4269
5044
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4270
5045
|
var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
|
|
4271
5046
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4272
|
-
HEAP_DATA_VIEW.
|
|
5047
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
4273
5048
|
}
|
|
4274
5049
|
return arrayBuffer;
|
|
4275
5050
|
}
|
|
@@ -4292,10 +5067,42 @@ function createNapiModule(options) {
|
|
|
4292
5067
|
try {
|
|
4293
5068
|
if (!result)
|
|
4294
5069
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4295
|
-
|
|
5070
|
+
result >>>= 0;
|
|
5071
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
|
|
5072
|
+
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
5073
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5074
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5075
|
+
return envObject.getReturnStatus();
|
|
5076
|
+
}
|
|
5077
|
+
catch (err) {
|
|
5078
|
+
envObject.tryCatch.setError(err);
|
|
5079
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5080
|
+
}
|
|
5081
|
+
}
|
|
5082
|
+
/**
|
|
5083
|
+
* @__sig ipppp
|
|
5084
|
+
*/
|
|
5085
|
+
function node_api_create_sharedarraybuffer(env, byte_length, data, result) {
|
|
5086
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5087
|
+
var value;
|
|
5088
|
+
if (!env)
|
|
5089
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
5090
|
+
// @ts-expect-error
|
|
5091
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5092
|
+
envObject.checkGCAccess();
|
|
5093
|
+
if (!envObject.tryCatch.isEmpty())
|
|
5094
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5095
|
+
if (!envObject.canCallIntoJs())
|
|
5096
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
5097
|
+
envObject.clearLastError();
|
|
5098
|
+
try {
|
|
5099
|
+
if (!result)
|
|
5100
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5101
|
+
result >>>= 0;
|
|
5102
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
|
|
4296
5103
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
4297
5104
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4298
|
-
HEAP_DATA_VIEW.
|
|
5105
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4299
5106
|
return envObject.getReturnStatus();
|
|
4300
5107
|
}
|
|
4301
5108
|
catch (err) {
|
|
@@ -4322,10 +5129,11 @@ function createNapiModule(options) {
|
|
|
4322
5129
|
try {
|
|
4323
5130
|
if (!result)
|
|
4324
5131
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5132
|
+
result >>>= 0;
|
|
4325
5133
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4326
5134
|
value = emnapiCtx.addToCurrentScope(new Date(time)).id;
|
|
4327
5135
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4328
|
-
HEAP_DATA_VIEW.
|
|
5136
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4329
5137
|
return envObject.getReturnStatus();
|
|
4330
5138
|
}
|
|
4331
5139
|
catch (err) {
|
|
@@ -4359,9 +5167,10 @@ function createNapiModule(options) {
|
|
|
4359
5167
|
if (finalize_cb) {
|
|
4360
5168
|
emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, data, finalize_hint);
|
|
4361
5169
|
}
|
|
5170
|
+
result >>>= 0;
|
|
4362
5171
|
value = externalHandle.id;
|
|
4363
5172
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4364
|
-
HEAP_DATA_VIEW.
|
|
5173
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4365
5174
|
return envObject.clearLastError();
|
|
4366
5175
|
}
|
|
4367
5176
|
catch (err) {
|
|
@@ -4388,6 +5197,9 @@ function createNapiModule(options) {
|
|
|
4388
5197
|
try {
|
|
4389
5198
|
if (!result)
|
|
4390
5199
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5200
|
+
byte_length >>>= 0;
|
|
5201
|
+
external_data >>>= 0;
|
|
5202
|
+
result >>>= 0;
|
|
4391
5203
|
byte_length = byte_length >>> 0;
|
|
4392
5204
|
if (!external_data) {
|
|
4393
5205
|
byte_length = 0;
|
|
@@ -4430,7 +5242,66 @@ function createNapiModule(options) {
|
|
|
4430
5242
|
}
|
|
4431
5243
|
value = handle.id;
|
|
4432
5244
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4433
|
-
HEAP_DATA_VIEW.
|
|
5245
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5246
|
+
return envObject.getReturnStatus();
|
|
5247
|
+
}
|
|
5248
|
+
catch (err) {
|
|
5249
|
+
envObject.tryCatch.setError(err);
|
|
5250
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5251
|
+
}
|
|
5252
|
+
}
|
|
5253
|
+
/**
|
|
5254
|
+
* @__sig ipppppp
|
|
5255
|
+
*/
|
|
5256
|
+
function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
|
|
5257
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5258
|
+
var value;
|
|
5259
|
+
if (!env)
|
|
5260
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
5261
|
+
// @ts-expect-error
|
|
5262
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5263
|
+
envObject.checkGCAccess();
|
|
5264
|
+
if (!envObject.tryCatch.isEmpty())
|
|
5265
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5266
|
+
if (!envObject.canCallIntoJs())
|
|
5267
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
5268
|
+
envObject.clearLastError();
|
|
5269
|
+
try {
|
|
5270
|
+
if (!result)
|
|
5271
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5272
|
+
byte_length >>>= 0;
|
|
5273
|
+
external_data >>>= 0;
|
|
5274
|
+
result >>>= 0;
|
|
5275
|
+
byte_length = byte_length >>> 0;
|
|
5276
|
+
if (!external_data) {
|
|
5277
|
+
byte_length = 0;
|
|
5278
|
+
}
|
|
5279
|
+
if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
|
|
5280
|
+
throw new RangeError('Memory out of range');
|
|
5281
|
+
}
|
|
5282
|
+
if (!emnapiExternalSAB.registry && finalize_cb) {
|
|
5283
|
+
throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
|
|
5284
|
+
}
|
|
5285
|
+
var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
|
|
5286
|
+
if (byte_length !== 0) {
|
|
5287
|
+
var u8arr = new Uint8Array(sharedArrayBuffer);
|
|
5288
|
+
u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
|
|
5289
|
+
emnapiExternalMemory.table.set(sharedArrayBuffer, {
|
|
5290
|
+
address: external_data,
|
|
5291
|
+
ownership: 1 /* ReferenceOwnership.kUserland */,
|
|
5292
|
+
runtimeAllocated: 0
|
|
5293
|
+
});
|
|
5294
|
+
}
|
|
5295
|
+
value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
|
|
5296
|
+
if (finalize_cb) {
|
|
5297
|
+
finalize_cb >>>= 0;
|
|
5298
|
+
finalize_hint >>>= 0;
|
|
5299
|
+
var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
|
|
5300
|
+
emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
|
|
5301
|
+
emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
|
|
5302
|
+
}
|
|
5303
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5304
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4434
5305
|
return envObject.getReturnStatus();
|
|
4435
5306
|
}
|
|
4436
5307
|
catch (err) {
|
|
@@ -4449,10 +5320,61 @@ function createNapiModule(options) {
|
|
|
4449
5320
|
envObject.checkGCAccess();
|
|
4450
5321
|
if (!result)
|
|
4451
5322
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5323
|
+
result >>>= 0;
|
|
4452
5324
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4453
5325
|
var value = emnapiCtx.addToCurrentScope({}).id;
|
|
4454
5326
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4455
|
-
HEAP_DATA_VIEW.
|
|
5327
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5328
|
+
return envObject.clearLastError();
|
|
5329
|
+
}
|
|
5330
|
+
/**
|
|
5331
|
+
* @__sig ipppppp
|
|
5332
|
+
*/
|
|
5333
|
+
function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
|
|
5334
|
+
if (!env)
|
|
5335
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
5336
|
+
// @ts-expect-error
|
|
5337
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5338
|
+
envObject.checkGCAccess();
|
|
5339
|
+
if (!result)
|
|
5340
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5341
|
+
property_count >>>= 0;
|
|
5342
|
+
property_count = property_count >>> 0;
|
|
5343
|
+
if (property_count > 0) {
|
|
5344
|
+
if (!property_names)
|
|
5345
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5346
|
+
if (!property_values)
|
|
5347
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5348
|
+
}
|
|
5349
|
+
var v8_prototype_or_null = prototype_or_null
|
|
5350
|
+
? emnapiCtx.handleStore.get(prototype_or_null).value
|
|
5351
|
+
: null;
|
|
5352
|
+
var properties = {};
|
|
5353
|
+
property_names >>>= 0;
|
|
5354
|
+
property_values >>>= 0;
|
|
5355
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5356
|
+
for (var i = 0; i < property_count; i++) {
|
|
5357
|
+
var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
|
|
5358
|
+
if (!(typeof name_value === "string" || typeof name_value === "symbol"))
|
|
5359
|
+
return envObject.setLastError(4 /* napi_status.napi_name_expected */);
|
|
5360
|
+
properties[name_value] = {
|
|
5361
|
+
value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
|
|
5362
|
+
writable: true,
|
|
5363
|
+
enumerable: true,
|
|
5364
|
+
configurable: true
|
|
5365
|
+
};
|
|
5366
|
+
}
|
|
5367
|
+
var obj;
|
|
5368
|
+
try {
|
|
5369
|
+
obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties);
|
|
5370
|
+
}
|
|
5371
|
+
catch (_) {
|
|
5372
|
+
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
5373
|
+
}
|
|
5374
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5375
|
+
var value = emnapiCtx.addToCurrentScope(obj).id;
|
|
5376
|
+
result >>>= 0;
|
|
5377
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4456
5378
|
return envObject.clearLastError();
|
|
4457
5379
|
}
|
|
4458
5380
|
/**
|
|
@@ -4466,11 +5388,12 @@ function createNapiModule(options) {
|
|
|
4466
5388
|
envObject.checkGCAccess();
|
|
4467
5389
|
if (!result)
|
|
4468
5390
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5391
|
+
result >>>= 0;
|
|
4469
5392
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4470
5393
|
if (!description) {
|
|
4471
5394
|
// eslint-disable-next-line symbol-description, @typescript-eslint/no-unused-vars
|
|
4472
5395
|
var value = emnapiCtx.addToCurrentScope(Symbol()).id;
|
|
4473
|
-
HEAP_DATA_VIEW.
|
|
5396
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4474
5397
|
}
|
|
4475
5398
|
else {
|
|
4476
5399
|
var handle = emnapiCtx.handleStore.get(description);
|
|
@@ -4480,7 +5403,7 @@ function createNapiModule(options) {
|
|
|
4480
5403
|
}
|
|
4481
5404
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4482
5405
|
var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id;
|
|
4483
|
-
HEAP_DATA_VIEW.
|
|
5406
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4484
5407
|
}
|
|
4485
5408
|
return envObject.clearLastError();
|
|
4486
5409
|
}
|
|
@@ -4506,10 +5429,9 @@ function createNapiModule(options) {
|
|
|
4506
5429
|
if (!result)
|
|
4507
5430
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4508
5431
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
4509
|
-
if (!handle.isArrayBuffer()) {
|
|
4510
|
-
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4511
|
-
}
|
|
4512
5432
|
var buffer = handle.value;
|
|
5433
|
+
byte_offset >>>= 0;
|
|
5434
|
+
length >>>= 0;
|
|
4513
5435
|
var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
|
|
4514
5436
|
var _a;
|
|
4515
5437
|
byte_offset = byte_offset >>> 0;
|
|
@@ -4540,37 +5462,48 @@ function createNapiModule(options) {
|
|
|
4540
5462
|
});
|
|
4541
5463
|
}
|
|
4542
5464
|
}
|
|
5465
|
+
result >>>= 0;
|
|
4543
5466
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4544
5467
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4545
5468
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4546
|
-
HEAP_DATA_VIEW.
|
|
5469
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4547
5470
|
return envObject.getReturnStatus();
|
|
4548
5471
|
};
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
|
|
4560
|
-
|
|
4561
|
-
|
|
4562
|
-
|
|
4563
|
-
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
|
|
4567
|
-
|
|
4568
|
-
|
|
4569
|
-
|
|
4570
|
-
|
|
4571
|
-
|
|
4572
|
-
|
|
4573
|
-
|
|
5472
|
+
if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
|
|
5473
|
+
switch (type) {
|
|
5474
|
+
case 0 /* napi_typedarray_type.napi_int8_array */:
|
|
5475
|
+
return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
|
|
5476
|
+
case 1 /* napi_typedarray_type.napi_uint8_array */:
|
|
5477
|
+
return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
|
|
5478
|
+
case 2 /* napi_typedarray_type.napi_uint8_clamped_array */:
|
|
5479
|
+
return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
|
|
5480
|
+
case 3 /* napi_typedarray_type.napi_int16_array */:
|
|
5481
|
+
return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
|
|
5482
|
+
case 4 /* napi_typedarray_type.napi_uint16_array */:
|
|
5483
|
+
return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
|
|
5484
|
+
case 5 /* napi_typedarray_type.napi_int32_array */:
|
|
5485
|
+
return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
|
|
5486
|
+
case 6 /* napi_typedarray_type.napi_uint32_array */:
|
|
5487
|
+
return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
|
|
5488
|
+
case 7 /* napi_typedarray_type.napi_float32_array */:
|
|
5489
|
+
return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
|
|
5490
|
+
case 8 /* napi_typedarray_type.napi_float64_array */:
|
|
5491
|
+
return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
|
|
5492
|
+
case 9 /* napi_typedarray_type.napi_bigint64_array */:
|
|
5493
|
+
return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
|
|
5494
|
+
case 10 /* napi_typedarray_type.napi_biguint64_array */:
|
|
5495
|
+
return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
|
|
5496
|
+
case 11 /* napi_typedarray_type.napi_float16_array */:
|
|
5497
|
+
if (typeof Float16Array !== 'function') {
|
|
5498
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5499
|
+
}
|
|
5500
|
+
return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
|
|
5501
|
+
default:
|
|
5502
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5503
|
+
}
|
|
5504
|
+
}
|
|
5505
|
+
else {
|
|
5506
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4574
5507
|
}
|
|
4575
5508
|
}
|
|
4576
5509
|
catch (err) {
|
|
@@ -4603,18 +5536,21 @@ function createNapiModule(options) {
|
|
|
4603
5536
|
if (!Buffer) {
|
|
4604
5537
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
|
|
4605
5538
|
}
|
|
5539
|
+
result >>>= 0;
|
|
4606
5540
|
var buffer = void 0;
|
|
5541
|
+
size >>>= 0;
|
|
4607
5542
|
size = size >>> 0;
|
|
4608
5543
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4609
5544
|
if (!data || (size === 0)) {
|
|
4610
5545
|
buffer = Buffer.alloc(size);
|
|
4611
5546
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4612
|
-
HEAP_DATA_VIEW.
|
|
5547
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4613
5548
|
}
|
|
4614
5549
|
else {
|
|
4615
5550
|
pointer = _malloc(size);
|
|
4616
5551
|
if (!pointer)
|
|
4617
5552
|
throw new Error('Out of memory');
|
|
5553
|
+
pointer >>>= 0;
|
|
4618
5554
|
new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
|
|
4619
5555
|
var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
|
|
4620
5556
|
var viewDescriptor = {
|
|
@@ -4627,8 +5563,9 @@ function createNapiModule(options) {
|
|
|
4627
5563
|
emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor);
|
|
4628
5564
|
(_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
|
|
4629
5565
|
value = emnapiCtx.addToCurrentScope(buffer_1).id;
|
|
4630
|
-
HEAP_DATA_VIEW.
|
|
4631
|
-
|
|
5566
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5567
|
+
data >>>= 0;
|
|
5568
|
+
HEAP_DATA_VIEW.setUint32(data, pointer, true);
|
|
4632
5569
|
}
|
|
4633
5570
|
return envObject.getReturnStatus();
|
|
4634
5571
|
}
|
|
@@ -4660,12 +5597,15 @@ function createNapiModule(options) {
|
|
|
4660
5597
|
if (!Buffer) {
|
|
4661
5598
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', '');
|
|
4662
5599
|
}
|
|
4663
|
-
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data);
|
|
5600
|
+
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
|
|
4664
5601
|
var buffer = Buffer.from(arrayBuffer);
|
|
5602
|
+
data >>>= 0;
|
|
5603
|
+
length >>>= 0;
|
|
4665
5604
|
buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
|
|
4666
5605
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
5606
|
+
result >>>= 0;
|
|
4667
5607
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4668
|
-
HEAP_DATA_VIEW.
|
|
5608
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4669
5609
|
return envObject.getReturnStatus();
|
|
4670
5610
|
}
|
|
4671
5611
|
catch (err) {
|
|
@@ -4700,6 +5640,8 @@ function createNapiModule(options) {
|
|
|
4700
5640
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4701
5641
|
if (!result)
|
|
4702
5642
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5643
|
+
byte_offset >>>= 0;
|
|
5644
|
+
byte_length >>>= 0;
|
|
4703
5645
|
byte_offset = byte_offset >>> 0;
|
|
4704
5646
|
byte_length = byte_length >>> 0;
|
|
4705
5647
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
@@ -4728,10 +5670,11 @@ function createNapiModule(options) {
|
|
|
4728
5670
|
});
|
|
4729
5671
|
}
|
|
4730
5672
|
}
|
|
5673
|
+
result >>>= 0;
|
|
4731
5674
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4732
5675
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4733
5676
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4734
|
-
HEAP_DATA_VIEW.
|
|
5677
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4735
5678
|
return envObject.getReturnStatus();
|
|
4736
5679
|
}
|
|
4737
5680
|
catch (err) {
|
|
@@ -4743,8 +5686,6 @@ function createNapiModule(options) {
|
|
|
4743
5686
|
* @__sig ippppp
|
|
4744
5687
|
*/
|
|
4745
5688
|
function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
|
|
4746
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4747
|
-
var value;
|
|
4748
5689
|
if (!env)
|
|
4749
5690
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4750
5691
|
// @ts-expect-error
|
|
@@ -4760,35 +5701,42 @@ function createNapiModule(options) {
|
|
|
4760
5701
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4761
5702
|
if (!result)
|
|
4762
5703
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5704
|
+
byte_length >>>= 0;
|
|
5705
|
+
byte_offset >>>= 0;
|
|
4763
5706
|
byte_length = byte_length >>> 0;
|
|
4764
5707
|
byte_offset = byte_offset >>> 0;
|
|
4765
|
-
var
|
|
4766
|
-
|
|
4767
|
-
|
|
4768
|
-
|
|
4769
|
-
|
|
4770
|
-
|
|
4771
|
-
|
|
4772
|
-
|
|
4773
|
-
|
|
4774
|
-
|
|
4775
|
-
|
|
4776
|
-
|
|
4777
|
-
|
|
4778
|
-
|
|
4779
|
-
|
|
4780
|
-
|
|
4781
|
-
|
|
4782
|
-
|
|
4783
|
-
runtimeAllocated: 0
|
|
4784
|
-
});
|
|
5708
|
+
var value = emnapiCtx.handleStore.get(arraybuffer).value;
|
|
5709
|
+
var createDataview = function (buffer) {
|
|
5710
|
+
if ((byte_length + byte_offset) > buffer.byteLength) {
|
|
5711
|
+
var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
|
|
5712
|
+
err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
|
|
5713
|
+
throw err;
|
|
5714
|
+
}
|
|
5715
|
+
var dataview = new DataView(buffer, byte_offset, byte_length);
|
|
5716
|
+
if (buffer === wasmMemory.buffer) {
|
|
5717
|
+
if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
|
|
5718
|
+
emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
|
|
5719
|
+
Ctor: DataView,
|
|
5720
|
+
address: byte_offset,
|
|
5721
|
+
length: byte_length,
|
|
5722
|
+
ownership: 1 /* ReferenceOwnership.kUserland */,
|
|
5723
|
+
runtimeAllocated: 0
|
|
5724
|
+
});
|
|
5725
|
+
}
|
|
4785
5726
|
}
|
|
5727
|
+
result >>>= 0;
|
|
5728
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5729
|
+
var v = emnapiCtx.addToCurrentScope(dataview).id;
|
|
5730
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5731
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
5732
|
+
return envObject.getReturnStatus();
|
|
5733
|
+
};
|
|
5734
|
+
if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
|
|
5735
|
+
return createDataview(value);
|
|
5736
|
+
}
|
|
5737
|
+
else {
|
|
5738
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4786
5739
|
}
|
|
4787
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4788
|
-
value = emnapiCtx.addToCurrentScope(dataview).id;
|
|
4789
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4790
|
-
HEAP_DATA_VIEW.setInt32(result, value, true);
|
|
4791
|
-
return envObject.getReturnStatus();
|
|
4792
5740
|
}
|
|
4793
5741
|
catch (err) {
|
|
4794
5742
|
envObject.tryCatch.setError(err);
|
|
@@ -4806,7 +5754,10 @@ function createNapiModule(options) {
|
|
|
4806
5754
|
envObject.checkGCAccess();
|
|
4807
5755
|
if (!result)
|
|
4808
5756
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4809
|
-
|
|
5757
|
+
length >>>= 0;
|
|
5758
|
+
utf8description >>>= 0;
|
|
5759
|
+
result >>>= 0;
|
|
5760
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
4810
5761
|
var sizelength = length >>> 0;
|
|
4811
5762
|
if (length !== 0) {
|
|
4812
5763
|
if (!utf8description)
|
|
@@ -4819,7 +5770,7 @@ function createNapiModule(options) {
|
|
|
4819
5770
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4820
5771
|
var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id;
|
|
4821
5772
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4822
|
-
HEAP_DATA_VIEW.
|
|
5773
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4823
5774
|
return envObject.clearLastError();
|
|
4824
5775
|
}
|
|
4825
5776
|
var createMod = /*#__PURE__*/ Object.freeze({
|
|
@@ -4838,6 +5789,9 @@ function createNapiModule(options) {
|
|
|
4838
5789
|
napi_create_symbol: napi_create_symbol,
|
|
4839
5790
|
napi_create_typedarray: napi_create_typedarray,
|
|
4840
5791
|
node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
|
|
5792
|
+
node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
|
|
5793
|
+
node_api_create_object_with_properties: node_api_create_object_with_properties,
|
|
5794
|
+
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
4841
5795
|
node_api_symbol_for: node_api_symbol_for
|
|
4842
5796
|
});
|
|
4843
5797
|
/** @__sig ipip */
|
|
@@ -4849,10 +5803,11 @@ function createNapiModule(options) {
|
|
|
4849
5803
|
envObject.checkGCAccess();
|
|
4850
5804
|
if (!result)
|
|
4851
5805
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5806
|
+
result >>>= 0;
|
|
4852
5807
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4853
5808
|
var v = value === 0 ? 3 /* GlobalHandle.FALSE */ : 4 /* GlobalHandle.TRUE */;
|
|
4854
5809
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4855
|
-
HEAP_DATA_VIEW.
|
|
5810
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4856
5811
|
return envObject.clearLastError();
|
|
4857
5812
|
}
|
|
4858
5813
|
/** @__sig ipp */
|
|
@@ -4864,10 +5819,11 @@ function createNapiModule(options) {
|
|
|
4864
5819
|
envObject.checkGCAccess();
|
|
4865
5820
|
if (!result)
|
|
4866
5821
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5822
|
+
result >>>= 0;
|
|
4867
5823
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4868
5824
|
var value = 5 /* GlobalHandle.GLOBAL */;
|
|
4869
5825
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4870
|
-
HEAP_DATA_VIEW.
|
|
5826
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4871
5827
|
return envObject.clearLastError();
|
|
4872
5828
|
}
|
|
4873
5829
|
/** @__sig ipp */
|
|
@@ -4879,10 +5835,11 @@ function createNapiModule(options) {
|
|
|
4879
5835
|
envObject.checkGCAccess();
|
|
4880
5836
|
if (!result)
|
|
4881
5837
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5838
|
+
result >>>= 0;
|
|
4882
5839
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4883
5840
|
var value = 2 /* GlobalHandle.NULL */;
|
|
4884
5841
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4885
|
-
HEAP_DATA_VIEW.
|
|
5842
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4886
5843
|
return envObject.clearLastError();
|
|
4887
5844
|
}
|
|
4888
5845
|
/** @__sig ipp */
|
|
@@ -4894,10 +5851,11 @@ function createNapiModule(options) {
|
|
|
4894
5851
|
envObject.checkGCAccess();
|
|
4895
5852
|
if (!result)
|
|
4896
5853
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5854
|
+
result >>>= 0;
|
|
4897
5855
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4898
5856
|
var value = 1 /* GlobalHandle.UNDEFINED */;
|
|
4899
5857
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4900
|
-
HEAP_DATA_VIEW.
|
|
5858
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4901
5859
|
return envObject.clearLastError();
|
|
4902
5860
|
}
|
|
4903
5861
|
var globalMod = /*#__PURE__*/ Object.freeze({
|
|
@@ -4912,6 +5870,9 @@ function createNapiModule(options) {
|
|
|
4912
5870
|
if (!env)
|
|
4913
5871
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4914
5872
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5873
|
+
data >>>= 0;
|
|
5874
|
+
finalize_cb >>>= 0;
|
|
5875
|
+
finalize_hint >>>= 0;
|
|
4915
5876
|
envObject.setInstanceData(data, finalize_cb, finalize_hint);
|
|
4916
5877
|
return envObject.clearLastError();
|
|
4917
5878
|
}
|
|
@@ -4922,10 +5883,11 @@ function createNapiModule(options) {
|
|
|
4922
5883
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4923
5884
|
if (!data)
|
|
4924
5885
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5886
|
+
data >>>= 0;
|
|
4925
5887
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4926
5888
|
var value = envObject.getInstanceData();
|
|
4927
5889
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4928
|
-
HEAP_DATA_VIEW.
|
|
5890
|
+
HEAP_DATA_VIEW.setUint32(data, value, true);
|
|
4929
5891
|
return envObject.clearLastError();
|
|
4930
5892
|
}
|
|
4931
5893
|
var envMod = /*#__PURE__*/ Object.freeze({
|
|
@@ -4935,6 +5897,9 @@ function createNapiModule(options) {
|
|
|
4935
5897
|
});
|
|
4936
5898
|
/** @__sig vpppp */
|
|
4937
5899
|
function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
|
|
5900
|
+
error_code >>>= 0;
|
|
5901
|
+
engine_error_code >>>= 0;
|
|
5902
|
+
engine_reserved >>>= 0;
|
|
4938
5903
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4939
5904
|
var lastError = envObject.lastError;
|
|
4940
5905
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -4943,10 +5908,11 @@ function createNapiModule(options) {
|
|
|
4943
5908
|
var engineErrorCode = lastError.engineErrorCode >>> 0;
|
|
4944
5909
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4945
5910
|
var engineReserved = lastError.engineReserved;
|
|
5911
|
+
engineReserved >>>= 0;
|
|
4946
5912
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4947
5913
|
HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
|
|
4948
5914
|
HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
|
|
4949
|
-
HEAP_DATA_VIEW.
|
|
5915
|
+
HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true);
|
|
4950
5916
|
}
|
|
4951
5917
|
/** @__sig ipp */
|
|
4952
5918
|
function napi_throw(env, error) {
|
|
@@ -4986,6 +5952,8 @@ function createNapiModule(options) {
|
|
|
4986
5952
|
try {
|
|
4987
5953
|
if (!msg)
|
|
4988
5954
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5955
|
+
code >>>= 0;
|
|
5956
|
+
msg >>>= 0;
|
|
4989
5957
|
var error = new Error(emnapiString.UTF8ToString(msg, -1));
|
|
4990
5958
|
if (code)
|
|
4991
5959
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -5012,6 +5980,8 @@ function createNapiModule(options) {
|
|
|
5012
5980
|
try {
|
|
5013
5981
|
if (!msg)
|
|
5014
5982
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5983
|
+
code >>>= 0;
|
|
5984
|
+
msg >>>= 0;
|
|
5015
5985
|
var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
|
|
5016
5986
|
if (code)
|
|
5017
5987
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -5038,6 +6008,8 @@ function createNapiModule(options) {
|
|
|
5038
6008
|
try {
|
|
5039
6009
|
if (!msg)
|
|
5040
6010
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6011
|
+
code >>>= 0;
|
|
6012
|
+
msg >>>= 0;
|
|
5041
6013
|
var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
|
|
5042
6014
|
if (code)
|
|
5043
6015
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -5064,6 +6036,8 @@ function createNapiModule(options) {
|
|
|
5064
6036
|
try {
|
|
5065
6037
|
if (!msg)
|
|
5066
6038
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6039
|
+
code >>>= 0;
|
|
6040
|
+
msg >>>= 0;
|
|
5067
6041
|
var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
|
|
5068
6042
|
if (code)
|
|
5069
6043
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -5086,6 +6060,7 @@ function createNapiModule(options) {
|
|
|
5086
6060
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5087
6061
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5088
6062
|
var r = envObject.tryCatch.hasCaught();
|
|
6063
|
+
result >>>= 0;
|
|
5089
6064
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5090
6065
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5091
6066
|
return envObject.clearLastError();
|
|
@@ -5113,10 +6088,11 @@ function createNapiModule(options) {
|
|
|
5113
6088
|
}
|
|
5114
6089
|
error.code = codeValue;
|
|
5115
6090
|
}
|
|
6091
|
+
result >>>= 0;
|
|
5116
6092
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5117
6093
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
5118
6094
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5119
|
-
HEAP_DATA_VIEW.
|
|
6095
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5120
6096
|
return envObject.clearLastError();
|
|
5121
6097
|
}
|
|
5122
6098
|
/** @__sig ipppp */
|
|
@@ -5142,10 +6118,11 @@ function createNapiModule(options) {
|
|
|
5142
6118
|
}
|
|
5143
6119
|
error.code = codeValue;
|
|
5144
6120
|
}
|
|
6121
|
+
result >>>= 0;
|
|
5145
6122
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5146
6123
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
5147
6124
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5148
|
-
HEAP_DATA_VIEW.
|
|
6125
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5149
6126
|
return envObject.clearLastError();
|
|
5150
6127
|
}
|
|
5151
6128
|
/** @__sig ipppp */
|
|
@@ -5171,10 +6148,11 @@ function createNapiModule(options) {
|
|
|
5171
6148
|
}
|
|
5172
6149
|
error.code = codeValue;
|
|
5173
6150
|
}
|
|
6151
|
+
result >>>= 0;
|
|
5174
6152
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5175
6153
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
5176
6154
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5177
|
-
HEAP_DATA_VIEW.
|
|
6155
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5178
6156
|
return envObject.clearLastError();
|
|
5179
6157
|
}
|
|
5180
6158
|
/** @__sig ipppp */
|
|
@@ -5200,10 +6178,11 @@ function createNapiModule(options) {
|
|
|
5200
6178
|
}
|
|
5201
6179
|
error.code = codeValue;
|
|
5202
6180
|
}
|
|
6181
|
+
result >>>= 0;
|
|
5203
6182
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5204
6183
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
5205
6184
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5206
|
-
HEAP_DATA_VIEW.
|
|
6185
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5207
6186
|
return envObject.clearLastError();
|
|
5208
6187
|
}
|
|
5209
6188
|
/** @__sig ipp */
|
|
@@ -5215,22 +6194,27 @@ function createNapiModule(options) {
|
|
|
5215
6194
|
envObject.checkGCAccess();
|
|
5216
6195
|
if (!result)
|
|
5217
6196
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6197
|
+
result >>>= 0;
|
|
5218
6198
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5219
6199
|
if (!envObject.tryCatch.hasCaught()) {
|
|
5220
|
-
HEAP_DATA_VIEW.
|
|
6200
|
+
HEAP_DATA_VIEW.setUint32(result, 1, true); // ID_UNDEFINED
|
|
5221
6201
|
return envObject.clearLastError();
|
|
5222
6202
|
}
|
|
5223
6203
|
else {
|
|
5224
6204
|
var err = envObject.tryCatch.exception();
|
|
5225
6205
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5226
6206
|
var value = envObject.ensureHandleId(err);
|
|
5227
|
-
HEAP_DATA_VIEW.
|
|
6207
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5228
6208
|
envObject.tryCatch.reset();
|
|
5229
6209
|
}
|
|
5230
6210
|
return envObject.clearLastError();
|
|
5231
6211
|
}
|
|
5232
6212
|
/** @__sig vpppp */
|
|
5233
6213
|
function napi_fatal_error(location, location_len, message, message_len) {
|
|
6214
|
+
location >>>= 0;
|
|
6215
|
+
location_len >>>= 0;
|
|
6216
|
+
message >>>= 0;
|
|
6217
|
+
message_len >>>= 0;
|
|
5234
6218
|
var locationStr = emnapiString.UTF8ToString(location, location_len);
|
|
5235
6219
|
var messageStr = emnapiString.UTF8ToString(message, message_len);
|
|
5236
6220
|
if (emnapiNodeBinding) {
|
|
@@ -5287,9 +6271,23 @@ function createNapiModule(options) {
|
|
|
5287
6271
|
node_api_throw_syntax_error: node_api_throw_syntax_error
|
|
5288
6272
|
});
|
|
5289
6273
|
/** @__sig ipppppp */
|
|
5290
|
-
function
|
|
6274
|
+
function _emnapi_create_function(env, utf8name, length, cb, data, result) {
|
|
6275
|
+
length >>>= 0;
|
|
6276
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
6277
|
+
var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
|
|
6278
|
+
if (fresult.status !== 0 /* napi_status.napi_ok */)
|
|
6279
|
+
return envObject.setLastError(fresult.status);
|
|
6280
|
+
var f = fresult.f;
|
|
6281
|
+
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
6282
|
+
result >>>= 0;
|
|
5291
6283
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5292
|
-
var value;
|
|
6284
|
+
var value = valueHandle.id;
|
|
6285
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6286
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6287
|
+
return envObject.getReturnStatus();
|
|
6288
|
+
}
|
|
6289
|
+
/** @__sig ipppppp */
|
|
6290
|
+
function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
5293
6291
|
if (!env)
|
|
5294
6292
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5295
6293
|
// @ts-expect-error
|
|
@@ -5305,15 +6303,7 @@ function createNapiModule(options) {
|
|
|
5305
6303
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5306
6304
|
if (!cb)
|
|
5307
6305
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5308
|
-
|
|
5309
|
-
if (fresult.status !== 0 /* napi_status.napi_ok */)
|
|
5310
|
-
return envObject.setLastError(fresult.status);
|
|
5311
|
-
var f = fresult.f;
|
|
5312
|
-
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
5313
|
-
value = valueHandle.id;
|
|
5314
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5315
|
-
HEAP_DATA_VIEW.setInt32(result, value, true);
|
|
5316
|
-
return envObject.getReturnStatus();
|
|
6306
|
+
return _emnapi_create_function(env, utf8name, length, cb, data, result);
|
|
5317
6307
|
}
|
|
5318
6308
|
catch (err) {
|
|
5319
6309
|
envObject.tryCatch.setError(err);
|
|
@@ -5328,22 +6318,25 @@ function createNapiModule(options) {
|
|
|
5328
6318
|
if (!cbinfo)
|
|
5329
6319
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5330
6320
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
6321
|
+
argc >>>= 0;
|
|
6322
|
+
argv >>>= 0;
|
|
5331
6323
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5332
6324
|
if (argv) {
|
|
5333
6325
|
if (!argc)
|
|
5334
6326
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5335
6327
|
var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
|
|
6328
|
+
argcValue >>>= 0;
|
|
5336
6329
|
var len = cbinfoValue.args.length;
|
|
5337
6330
|
var arrlen = argcValue < len ? argcValue : len;
|
|
5338
6331
|
var i = 0;
|
|
5339
6332
|
for (; i < arrlen; i++) {
|
|
5340
6333
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5341
6334
|
var argVal = envObject.ensureHandleId(cbinfoValue.args[i]);
|
|
5342
|
-
HEAP_DATA_VIEW.
|
|
6335
|
+
HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true);
|
|
5343
6336
|
}
|
|
5344
6337
|
if (i < argcValue) {
|
|
5345
6338
|
for (; i < argcValue; i++) {
|
|
5346
|
-
HEAP_DATA_VIEW.
|
|
6339
|
+
HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true);
|
|
5347
6340
|
}
|
|
5348
6341
|
}
|
|
5349
6342
|
}
|
|
@@ -5351,12 +6344,14 @@ function createNapiModule(options) {
|
|
|
5351
6344
|
HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
|
|
5352
6345
|
}
|
|
5353
6346
|
if (this_arg) {
|
|
6347
|
+
this_arg >>>= 0;
|
|
5354
6348
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5355
6349
|
var v = envObject.ensureHandleId(cbinfoValue.thiz);
|
|
5356
|
-
HEAP_DATA_VIEW.
|
|
6350
|
+
HEAP_DATA_VIEW.setUint32(this_arg, v, true);
|
|
5357
6351
|
}
|
|
5358
6352
|
if (data) {
|
|
5359
|
-
|
|
6353
|
+
data >>>= 0;
|
|
6354
|
+
HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
|
|
5360
6355
|
}
|
|
5361
6356
|
return envObject.clearLastError();
|
|
5362
6357
|
}
|
|
@@ -5378,6 +6373,9 @@ function createNapiModule(options) {
|
|
|
5378
6373
|
try {
|
|
5379
6374
|
if (!recv)
|
|
5380
6375
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6376
|
+
argc >>>= 0;
|
|
6377
|
+
argv >>>= 0;
|
|
6378
|
+
result >>>= 0;
|
|
5381
6379
|
argc = argc >>> 0;
|
|
5382
6380
|
if (argc > 0) {
|
|
5383
6381
|
if (!argv)
|
|
@@ -5392,13 +6390,13 @@ function createNapiModule(options) {
|
|
|
5392
6390
|
var args = [];
|
|
5393
6391
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5394
6392
|
for (; i < argc; i++) {
|
|
5395
|
-
var argVal = HEAP_DATA_VIEW.
|
|
6393
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
5396
6394
|
args.push(emnapiCtx.handleStore.get(argVal).value);
|
|
5397
6395
|
}
|
|
5398
6396
|
var ret = v8func.apply(v8recv, args);
|
|
5399
6397
|
if (result) {
|
|
5400
6398
|
v = envObject.ensureHandleId(ret);
|
|
5401
|
-
HEAP_DATA_VIEW.
|
|
6399
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
5402
6400
|
}
|
|
5403
6401
|
return envObject.clearLastError();
|
|
5404
6402
|
}
|
|
@@ -5425,6 +6423,9 @@ function createNapiModule(options) {
|
|
|
5425
6423
|
try {
|
|
5426
6424
|
if (!constructor)
|
|
5427
6425
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6426
|
+
argc >>>= 0;
|
|
6427
|
+
argv >>>= 0;
|
|
6428
|
+
result >>>= 0;
|
|
5428
6429
|
argc = argc >>> 0;
|
|
5429
6430
|
if (argc > 0) {
|
|
5430
6431
|
if (!argv)
|
|
@@ -5440,7 +6441,7 @@ function createNapiModule(options) {
|
|
|
5440
6441
|
if (emnapiCtx.feature.supportReflect) {
|
|
5441
6442
|
var argList = Array(argc);
|
|
5442
6443
|
for (i = 0; i < argc; i++) {
|
|
5443
|
-
var argVal = HEAP_DATA_VIEW.
|
|
6444
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
5444
6445
|
argList[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
5445
6446
|
}
|
|
5446
6447
|
ret = Reflect.construct(Ctor, argList, Ctor);
|
|
@@ -5449,7 +6450,7 @@ function createNapiModule(options) {
|
|
|
5449
6450
|
var args = Array(argc + 1);
|
|
5450
6451
|
args[0] = undefined;
|
|
5451
6452
|
for (i = 0; i < argc; i++) {
|
|
5452
|
-
var argVal = HEAP_DATA_VIEW.
|
|
6453
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
5453
6454
|
args[i + 1] = emnapiCtx.handleStore.get(argVal).value;
|
|
5454
6455
|
}
|
|
5455
6456
|
var BoundCtor = Ctor.bind.apply(Ctor, args);
|
|
@@ -5457,7 +6458,7 @@ function createNapiModule(options) {
|
|
|
5457
6458
|
}
|
|
5458
6459
|
if (result) {
|
|
5459
6460
|
v = envObject.ensureHandleId(ret);
|
|
5460
|
-
HEAP_DATA_VIEW.
|
|
6461
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
5461
6462
|
}
|
|
5462
6463
|
return envObject.getReturnStatus();
|
|
5463
6464
|
}
|
|
@@ -5477,19 +6478,22 @@ function createNapiModule(options) {
|
|
|
5477
6478
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5478
6479
|
if (!result)
|
|
5479
6480
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6481
|
+
result >>>= 0;
|
|
5480
6482
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
5481
6483
|
var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
|
|
6484
|
+
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain, @typescript-eslint/no-unused-vars
|
|
5482
6485
|
var value = thiz == null || thiz.constructor == null
|
|
5483
6486
|
? 0
|
|
5484
6487
|
: thiz instanceof fn
|
|
5485
6488
|
? envObject.ensureHandleId(thiz.constructor)
|
|
5486
6489
|
: 0;
|
|
5487
6490
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5488
|
-
HEAP_DATA_VIEW.
|
|
6491
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5489
6492
|
return envObject.clearLastError();
|
|
5490
6493
|
}
|
|
5491
6494
|
var functionMod = /*#__PURE__*/ Object.freeze({
|
|
5492
6495
|
__proto__: null,
|
|
6496
|
+
_emnapi_create_function: _emnapi_create_function,
|
|
5493
6497
|
napi_call_function: napi_call_function,
|
|
5494
6498
|
napi_create_function: napi_create_function,
|
|
5495
6499
|
napi_get_cb_info: napi_get_cb_info,
|
|
@@ -5507,8 +6511,9 @@ function createNapiModule(options) {
|
|
|
5507
6511
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5508
6512
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5509
6513
|
var scope = emnapiCtx.openScope(envObject);
|
|
6514
|
+
result >>>= 0;
|
|
5510
6515
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5511
|
-
HEAP_DATA_VIEW.
|
|
6516
|
+
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
5512
6517
|
return envObject.clearLastError();
|
|
5513
6518
|
}
|
|
5514
6519
|
/** @__sig ipp */
|
|
@@ -5537,8 +6542,9 @@ function createNapiModule(options) {
|
|
|
5537
6542
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5538
6543
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5539
6544
|
var scope = emnapiCtx.openScope(envObject);
|
|
6545
|
+
result >>>= 0;
|
|
5540
6546
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5541
|
-
HEAP_DATA_VIEW.
|
|
6547
|
+
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
5542
6548
|
return envObject.clearLastError();
|
|
5543
6549
|
}
|
|
5544
6550
|
/** @__sig ipp */
|
|
@@ -5571,11 +6577,13 @@ function createNapiModule(options) {
|
|
|
5571
6577
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5572
6578
|
var scopeObject = emnapiCtx.scopeStore.get(scope);
|
|
5573
6579
|
if (!scopeObject.escapeCalled()) {
|
|
6580
|
+
escapee >>>= 0;
|
|
6581
|
+
result >>>= 0;
|
|
5574
6582
|
var newHandle = scopeObject.escape(escapee);
|
|
5575
6583
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5576
6584
|
var value = newHandle ? newHandle.id : 0;
|
|
5577
6585
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5578
|
-
HEAP_DATA_VIEW.
|
|
6586
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5579
6587
|
return envObject.clearLastError();
|
|
5580
6588
|
}
|
|
5581
6589
|
return envObject.setLastError(12 /* napi_status.napi_escape_called_twice */);
|
|
@@ -5599,8 +6607,9 @@ function createNapiModule(options) {
|
|
|
5599
6607
|
}
|
|
5600
6608
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5601
6609
|
var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1 /* ReferenceOwnership.kUserland */);
|
|
6610
|
+
result >>>= 0;
|
|
5602
6611
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5603
|
-
HEAP_DATA_VIEW.
|
|
6612
|
+
HEAP_DATA_VIEW.setUint32(result, ref.id, true);
|
|
5604
6613
|
return envObject.clearLastError();
|
|
5605
6614
|
}
|
|
5606
6615
|
/** @__sig ipp */
|
|
@@ -5625,6 +6634,7 @@ function createNapiModule(options) {
|
|
|
5625
6634
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5626
6635
|
var count = emnapiCtx.refStore.get(ref).ref();
|
|
5627
6636
|
if (result) {
|
|
6637
|
+
result >>>= 0;
|
|
5628
6638
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5629
6639
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5630
6640
|
}
|
|
@@ -5647,6 +6657,7 @@ function createNapiModule(options) {
|
|
|
5647
6657
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5648
6658
|
var count = reference.unref();
|
|
5649
6659
|
if (result) {
|
|
6660
|
+
result >>>= 0;
|
|
5650
6661
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5651
6662
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5652
6663
|
}
|
|
@@ -5666,8 +6677,9 @@ function createNapiModule(options) {
|
|
|
5666
6677
|
var reference = emnapiCtx.refStore.get(ref);
|
|
5667
6678
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5668
6679
|
var handleId = reference.get(envObject);
|
|
6680
|
+
result >>>= 0;
|
|
5669
6681
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5670
|
-
HEAP_DATA_VIEW.
|
|
6682
|
+
HEAP_DATA_VIEW.setUint32(result, handleId, true);
|
|
5671
6683
|
return envObject.clearLastError();
|
|
5672
6684
|
}
|
|
5673
6685
|
/** @__sig ippp */
|
|
@@ -5677,6 +6689,8 @@ function createNapiModule(options) {
|
|
|
5677
6689
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5678
6690
|
if (!fun)
|
|
5679
6691
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6692
|
+
fun >>>= 0;
|
|
6693
|
+
arg >>>= 0;
|
|
5680
6694
|
emnapiCtx.addCleanupHook(envObject, fun, arg);
|
|
5681
6695
|
return 0 /* napi_status.napi_ok */;
|
|
5682
6696
|
}
|
|
@@ -5687,6 +6701,8 @@ function createNapiModule(options) {
|
|
|
5687
6701
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5688
6702
|
if (!fun)
|
|
5689
6703
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6704
|
+
fun >>>= 0;
|
|
6705
|
+
arg >>>= 0;
|
|
5690
6706
|
emnapiCtx.removeCleanupHook(envObject, fun, arg);
|
|
5691
6707
|
return 0 /* napi_status.napi_ok */;
|
|
5692
6708
|
}
|
|
@@ -5753,11 +6769,13 @@ function createNapiModule(options) {
|
|
|
5753
6769
|
var p = new Promise(function (resolve, reject) {
|
|
5754
6770
|
var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
|
|
5755
6771
|
deferredObjectId = deferredObject.id;
|
|
5756
|
-
|
|
6772
|
+
deferred >>>= 0;
|
|
6773
|
+
HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
|
|
5757
6774
|
});
|
|
6775
|
+
promise >>>= 0;
|
|
5758
6776
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5759
6777
|
value = emnapiCtx.addToCurrentScope(p).id;
|
|
5760
|
-
HEAP_DATA_VIEW.
|
|
6778
|
+
HEAP_DATA_VIEW.setUint32(promise, value, true);
|
|
5761
6779
|
return envObject.getReturnStatus();
|
|
5762
6780
|
}
|
|
5763
6781
|
catch (err) {
|
|
@@ -5829,6 +6847,7 @@ function createNapiModule(options) {
|
|
|
5829
6847
|
if (!is_promise)
|
|
5830
6848
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5831
6849
|
var h = emnapiCtx.handleStore.get(value);
|
|
6850
|
+
is_promise >>>= 0;
|
|
5832
6851
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5833
6852
|
var r = h.isPromise() ? 1 : 0;
|
|
5834
6853
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -5976,10 +6995,11 @@ function createNapiModule(options) {
|
|
|
5976
6995
|
}
|
|
5977
6996
|
}
|
|
5978
6997
|
}
|
|
6998
|
+
result >>>= 0;
|
|
5979
6999
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5980
7000
|
value = emnapiCtx.addToCurrentScope(ret).id;
|
|
5981
7001
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5982
|
-
HEAP_DATA_VIEW.
|
|
7002
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5983
7003
|
return envObject.getReturnStatus();
|
|
5984
7004
|
}
|
|
5985
7005
|
catch (err) {
|
|
@@ -6054,6 +7074,7 @@ function createNapiModule(options) {
|
|
|
6054
7074
|
catch (_) {
|
|
6055
7075
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
6056
7076
|
}
|
|
7077
|
+
result >>>= 0;
|
|
6057
7078
|
r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
|
|
6058
7079
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6059
7080
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6096,10 +7117,11 @@ function createNapiModule(options) {
|
|
|
6096
7117
|
catch (_) {
|
|
6097
7118
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
6098
7119
|
}
|
|
7120
|
+
result >>>= 0;
|
|
6099
7121
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6100
7122
|
value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
|
|
6101
7123
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6102
|
-
HEAP_DATA_VIEW.
|
|
7124
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6103
7125
|
return envObject.getReturnStatus();
|
|
6104
7126
|
}
|
|
6105
7127
|
catch (err) {
|
|
@@ -6143,6 +7165,7 @@ function createNapiModule(options) {
|
|
|
6143
7165
|
}
|
|
6144
7166
|
}
|
|
6145
7167
|
if (result) {
|
|
7168
|
+
result >>>= 0;
|
|
6146
7169
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6147
7170
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
6148
7171
|
}
|
|
@@ -6190,6 +7213,7 @@ function createNapiModule(options) {
|
|
|
6190
7213
|
return envObject.setLastError(4 /* napi_status.napi_name_expected */);
|
|
6191
7214
|
}
|
|
6192
7215
|
r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
|
|
7216
|
+
result >>>= 0;
|
|
6193
7217
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6194
7218
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
6195
7219
|
return envObject.getReturnStatus();
|
|
@@ -6223,6 +7247,7 @@ function createNapiModule(options) {
|
|
|
6223
7247
|
if (!cname) {
|
|
6224
7248
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6225
7249
|
}
|
|
7250
|
+
cname >>>= 0;
|
|
6226
7251
|
emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
|
|
6227
7252
|
return envObject.getReturnStatus();
|
|
6228
7253
|
}
|
|
@@ -6264,6 +7289,8 @@ function createNapiModule(options) {
|
|
|
6264
7289
|
catch (_) {
|
|
6265
7290
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
6266
7291
|
}
|
|
7292
|
+
utf8name >>>= 0;
|
|
7293
|
+
result >>>= 0;
|
|
6267
7294
|
r = emnapiString.UTF8ToString(utf8name, -1) in v;
|
|
6268
7295
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6269
7296
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
@@ -6307,10 +7334,12 @@ function createNapiModule(options) {
|
|
|
6307
7334
|
catch (_) {
|
|
6308
7335
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
6309
7336
|
}
|
|
7337
|
+
utf8name >>>= 0;
|
|
7338
|
+
result >>>= 0;
|
|
6310
7339
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6311
7340
|
value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
|
|
6312
7341
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6313
|
-
HEAP_DATA_VIEW.
|
|
7342
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6314
7343
|
return envObject.getReturnStatus();
|
|
6315
7344
|
}
|
|
6316
7345
|
catch (err) {
|
|
@@ -6377,6 +7406,7 @@ function createNapiModule(options) {
|
|
|
6377
7406
|
catch (_) {
|
|
6378
7407
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
6379
7408
|
}
|
|
7409
|
+
result >>>= 0;
|
|
6380
7410
|
r = ((index >>> 0) in v) ? 1 : 0;
|
|
6381
7411
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6382
7412
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6417,10 +7447,11 @@ function createNapiModule(options) {
|
|
|
6417
7447
|
catch (_) {
|
|
6418
7448
|
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
6419
7449
|
}
|
|
7450
|
+
result >>>= 0;
|
|
6420
7451
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6421
7452
|
value = envObject.ensureHandleId(v[index >>> 0]);
|
|
6422
7453
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6423
|
-
HEAP_DATA_VIEW.
|
|
7454
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6424
7455
|
return envObject.getReturnStatus();
|
|
6425
7456
|
}
|
|
6426
7457
|
catch (err) {
|
|
@@ -6461,6 +7492,7 @@ function createNapiModule(options) {
|
|
|
6461
7492
|
}
|
|
6462
7493
|
}
|
|
6463
7494
|
if (result) {
|
|
7495
|
+
result >>>= 0;
|
|
6464
7496
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6465
7497
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
6466
7498
|
}
|
|
@@ -6486,6 +7518,8 @@ function createNapiModule(options) {
|
|
|
6486
7518
|
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
6487
7519
|
envObject.clearLastError();
|
|
6488
7520
|
try {
|
|
7521
|
+
properties >>>= 0;
|
|
7522
|
+
property_count >>>= 0;
|
|
6489
7523
|
property_count = property_count >>> 0;
|
|
6490
7524
|
if (property_count > 0) {
|
|
6491
7525
|
if (!properties)
|
|
@@ -6503,14 +7537,15 @@ function createNapiModule(options) {
|
|
|
6503
7537
|
for (var i = 0; i < property_count; i++) {
|
|
6504
7538
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6505
7539
|
propPtr = properties + (i * (4 * 8));
|
|
6506
|
-
var utf8Name = HEAP_DATA_VIEW.
|
|
6507
|
-
var name_2 = HEAP_DATA_VIEW.
|
|
6508
|
-
var method = HEAP_DATA_VIEW.
|
|
6509
|
-
var getter = HEAP_DATA_VIEW.
|
|
6510
|
-
var setter = HEAP_DATA_VIEW.
|
|
6511
|
-
var value = HEAP_DATA_VIEW.
|
|
7540
|
+
var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
|
|
7541
|
+
var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
|
|
7542
|
+
var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
|
|
7543
|
+
var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
|
|
7544
|
+
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
7545
|
+
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
6512
7546
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
6513
|
-
|
|
7547
|
+
attributes >>>= 0;
|
|
7548
|
+
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
6514
7549
|
if (utf8Name) {
|
|
6515
7550
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
6516
7551
|
}
|
|
@@ -6634,10 +7669,11 @@ function createNapiModule(options) {
|
|
|
6634
7669
|
}
|
|
6635
7670
|
var g = emnapiCtx.handleStore.get(5 /* GlobalHandle.GLOBAL */).value;
|
|
6636
7671
|
var ret = g.eval(v8Script.value);
|
|
7672
|
+
result >>>= 0;
|
|
6637
7673
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6638
7674
|
value = envObject.ensureHandleId(ret);
|
|
6639
7675
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6640
|
-
HEAP_DATA_VIEW.
|
|
7676
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
6641
7677
|
status = envObject.getReturnStatus();
|
|
6642
7678
|
}
|
|
6643
7679
|
catch (err) {
|
|
@@ -6662,6 +7698,7 @@ function createNapiModule(options) {
|
|
|
6662
7698
|
if (!result)
|
|
6663
7699
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6664
7700
|
var v = emnapiCtx.handleStore.get(value);
|
|
7701
|
+
result >>>= 0;
|
|
6665
7702
|
var r;
|
|
6666
7703
|
if (v.isNumber()) {
|
|
6667
7704
|
r = 3 /* napi_valuetype.napi_number */;
|
|
@@ -6726,9 +7763,10 @@ function createNapiModule(options) {
|
|
|
6726
7763
|
if (!result)
|
|
6727
7764
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6728
7765
|
var handle = emnapiCtx.handleStore.get(value);
|
|
7766
|
+
result >>>= 0;
|
|
6729
7767
|
v = handle.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */;
|
|
6730
7768
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6731
|
-
HEAP_DATA_VIEW.
|
|
7769
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6732
7770
|
return envObject.getReturnStatus();
|
|
6733
7771
|
}
|
|
6734
7772
|
catch (err) {
|
|
@@ -6759,10 +7797,11 @@ function createNapiModule(options) {
|
|
|
6759
7797
|
if (handle.isBigInt()) {
|
|
6760
7798
|
throw new TypeError('Cannot convert a BigInt value to a number');
|
|
6761
7799
|
}
|
|
7800
|
+
result >>>= 0;
|
|
6762
7801
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6763
7802
|
v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
|
|
6764
7803
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6765
|
-
HEAP_DATA_VIEW.
|
|
7804
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6766
7805
|
return envObject.getReturnStatus();
|
|
6767
7806
|
}
|
|
6768
7807
|
catch (err) {
|
|
@@ -6793,10 +7832,11 @@ function createNapiModule(options) {
|
|
|
6793
7832
|
if (handle.value == null) {
|
|
6794
7833
|
throw new TypeError('Cannot convert undefined or null to object');
|
|
6795
7834
|
}
|
|
7835
|
+
result >>>= 0;
|
|
6796
7836
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6797
7837
|
v = envObject.ensureHandleId(Object(handle.value));
|
|
6798
7838
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6799
|
-
HEAP_DATA_VIEW.
|
|
7839
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6800
7840
|
return envObject.getReturnStatus();
|
|
6801
7841
|
}
|
|
6802
7842
|
catch (err) {
|
|
@@ -6827,10 +7867,11 @@ function createNapiModule(options) {
|
|
|
6827
7867
|
if (handle.isSymbol()) {
|
|
6828
7868
|
throw new TypeError('Cannot convert a Symbol value to a string');
|
|
6829
7869
|
}
|
|
7870
|
+
result >>>= 0;
|
|
6830
7871
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6831
7872
|
v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
|
|
6832
7873
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6833
|
-
HEAP_DATA_VIEW.
|
|
7874
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6834
7875
|
return envObject.getReturnStatus();
|
|
6835
7876
|
}
|
|
6836
7877
|
catch (err) {
|
|
@@ -6859,6 +7900,7 @@ function createNapiModule(options) {
|
|
|
6859
7900
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6860
7901
|
if (!constructor)
|
|
6861
7902
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7903
|
+
result >>>= 0;
|
|
6862
7904
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6863
7905
|
HEAP_DATA_VIEW.setInt8(result, 0, true);
|
|
6864
7906
|
var ctor = emnapiCtx.handleStore.get(constructor);
|
|
@@ -6888,6 +7930,7 @@ function createNapiModule(options) {
|
|
|
6888
7930
|
if (!result)
|
|
6889
7931
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6890
7932
|
var h = emnapiCtx.handleStore.get(value);
|
|
7933
|
+
result >>>= 0;
|
|
6891
7934
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6892
7935
|
var r = h.isArray() ? 1 : 0;
|
|
6893
7936
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -6906,6 +7949,7 @@ function createNapiModule(options) {
|
|
|
6906
7949
|
if (!result)
|
|
6907
7950
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6908
7951
|
var h = emnapiCtx.handleStore.get(value);
|
|
7952
|
+
result >>>= 0;
|
|
6909
7953
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6910
7954
|
var r = h.isArrayBuffer() ? 1 : 0;
|
|
6911
7955
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -6913,6 +7957,28 @@ function createNapiModule(options) {
|
|
|
6913
7957
|
return envObject.clearLastError();
|
|
6914
7958
|
}
|
|
6915
7959
|
/** @__sig ippp */
|
|
7960
|
+
function node_api_is_sharedarraybuffer(env, value, result) {
|
|
7961
|
+
if (!env)
|
|
7962
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
7963
|
+
// @ts-expect-error
|
|
7964
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
7965
|
+
envObject.checkGCAccess();
|
|
7966
|
+
if (!value)
|
|
7967
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7968
|
+
if (!result)
|
|
7969
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7970
|
+
var h = emnapiCtx.handleStore.get(value);
|
|
7971
|
+
result >>>= 0;
|
|
7972
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7973
|
+
var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
|
|
7974
|
+
(Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
|
|
7975
|
+
? 1
|
|
7976
|
+
: 0;
|
|
7977
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7978
|
+
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
7979
|
+
return envObject.clearLastError();
|
|
7980
|
+
}
|
|
7981
|
+
/** @__sig ippp */
|
|
6916
7982
|
function napi_is_date(env, value, result) {
|
|
6917
7983
|
if (!env)
|
|
6918
7984
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
@@ -6924,6 +7990,7 @@ function createNapiModule(options) {
|
|
|
6924
7990
|
if (!result)
|
|
6925
7991
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6926
7992
|
var h = emnapiCtx.handleStore.get(value);
|
|
7993
|
+
result >>>= 0;
|
|
6927
7994
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6928
7995
|
var r = h.isDate() ? 1 : 0;
|
|
6929
7996
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -6942,6 +8009,7 @@ function createNapiModule(options) {
|
|
|
6942
8009
|
if (!result)
|
|
6943
8010
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6944
8011
|
var val = emnapiCtx.handleStore.get(value).value;
|
|
8012
|
+
result >>>= 0;
|
|
6945
8013
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6946
8014
|
var r = (val instanceof Error) ? 1 : 0;
|
|
6947
8015
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -6960,6 +8028,7 @@ function createNapiModule(options) {
|
|
|
6960
8028
|
if (!result)
|
|
6961
8029
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6962
8030
|
var h = emnapiCtx.handleStore.get(value);
|
|
8031
|
+
result >>>= 0;
|
|
6963
8032
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6964
8033
|
var r = h.isTypedArray() ? 1 : 0;
|
|
6965
8034
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -6978,6 +8047,7 @@ function createNapiModule(options) {
|
|
|
6978
8047
|
if (!result)
|
|
6979
8048
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6980
8049
|
var h = emnapiCtx.handleStore.get(value);
|
|
8050
|
+
result >>>= 0;
|
|
6981
8051
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6982
8052
|
var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
|
|
6983
8053
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -6996,6 +8066,7 @@ function createNapiModule(options) {
|
|
|
6996
8066
|
if (!result)
|
|
6997
8067
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
6998
8068
|
var h = emnapiCtx.handleStore.get(value);
|
|
8069
|
+
result >>>= 0;
|
|
6999
8070
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7000
8071
|
var r = h.isDataView() ? 1 : 0;
|
|
7001
8072
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -7025,6 +8096,7 @@ function createNapiModule(options) {
|
|
|
7025
8096
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7026
8097
|
var lv = emnapiCtx.handleStore.get(lhs).value;
|
|
7027
8098
|
var rv = emnapiCtx.handleStore.get(rhs).value;
|
|
8099
|
+
result >>>= 0;
|
|
7028
8100
|
r = (lv === rv) ? 1 : 0;
|
|
7029
8101
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7030
8102
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -7079,6 +8151,7 @@ function createNapiModule(options) {
|
|
|
7079
8151
|
if (!result)
|
|
7080
8152
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
7081
8153
|
var h = emnapiCtx.handleStore.get(arraybuffer);
|
|
8154
|
+
result >>>= 0;
|
|
7082
8155
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7083
8156
|
if (h.isArrayBuffer() && h.value.byteLength === 0) {
|
|
7084
8157
|
try {
|
|
@@ -7115,7 +8188,8 @@ function createNapiModule(options) {
|
|
|
7115
8188
|
napi_is_error: napi_is_error,
|
|
7116
8189
|
napi_is_typedarray: napi_is_typedarray,
|
|
7117
8190
|
napi_strict_equals: napi_strict_equals,
|
|
7118
|
-
napi_typeof: napi_typeof
|
|
8191
|
+
napi_typeof: napi_typeof,
|
|
8192
|
+
node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer
|
|
7119
8193
|
});
|
|
7120
8194
|
/** @__sig ipp */
|
|
7121
8195
|
function napi_get_version(env, result) {
|
|
@@ -7136,11 +8210,13 @@ function createNapiModule(options) {
|
|
|
7136
8210
|
});
|
|
7137
8211
|
emnapiAWST.init();
|
|
7138
8212
|
emnapiExternalMemory.init();
|
|
8213
|
+
emnapiExternalSAB.init();
|
|
7139
8214
|
emnapiString.init();
|
|
7140
8215
|
emnapiTSFN.init();
|
|
7141
8216
|
PThread.init();
|
|
7142
8217
|
napiModule.emnapi.syncMemory = $emnapiSyncMemory;
|
|
7143
8218
|
napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
|
|
8219
|
+
napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
|
|
7144
8220
|
function addImports(mod) {
|
|
7145
8221
|
var keys = Object.keys(mod);
|
|
7146
8222
|
for (var i = 0; i < keys.length; ++i) {
|
|
@@ -7367,7 +8443,22 @@ var MessageHandler = /*#__PURE__*/ (function (_super) {
|
|
|
7367
8443
|
if (typeof options.onLoad !== 'function') {
|
|
7368
8444
|
throw new TypeError('options.onLoad is not a function');
|
|
7369
8445
|
}
|
|
7370
|
-
|
|
8446
|
+
var userOnError = options.onError;
|
|
8447
|
+
_this = _super.call(this, __assign(__assign({}, options), { onError: function (err, type) {
|
|
8448
|
+
var _a;
|
|
8449
|
+
var emnapi_thread_crashed = (_a = _this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed;
|
|
8450
|
+
if (typeof emnapi_thread_crashed === 'function') {
|
|
8451
|
+
emnapi_thread_crashed();
|
|
8452
|
+
} /* else {
|
|
8453
|
+
tryWakeUpPthreadJoin(this.instance!)
|
|
8454
|
+
} */
|
|
8455
|
+
if (typeof userOnError === 'function') {
|
|
8456
|
+
userOnError(err, type);
|
|
8457
|
+
}
|
|
8458
|
+
else {
|
|
8459
|
+
throw err;
|
|
8460
|
+
}
|
|
8461
|
+
} })) || this;
|
|
7371
8462
|
_this.napiModule = undefined;
|
|
7372
8463
|
return _this;
|
|
7373
8464
|
}
|
|
@@ -7391,21 +8482,35 @@ var MessageHandler = /*#__PURE__*/ (function (_super) {
|
|
|
7391
8482
|
if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
|
|
7392
8483
|
var type = e.data.__emnapi__.type;
|
|
7393
8484
|
var payload_1 = e.data.__emnapi__.payload;
|
|
7394
|
-
|
|
7395
|
-
|
|
7396
|
-
|
|
7397
|
-
|
|
8485
|
+
try {
|
|
8486
|
+
if (type === 'async-worker-init') {
|
|
8487
|
+
this.handleAfterLoad(e, function () {
|
|
8488
|
+
_this.napiModule.initWorker(payload_1.arg, payload_1.func);
|
|
8489
|
+
});
|
|
8490
|
+
}
|
|
7398
8491
|
}
|
|
7399
|
-
|
|
7400
|
-
this.
|
|
7401
|
-
_this.napiModule.executeAsyncWork(payload_1.work);
|
|
7402
|
-
});
|
|
8492
|
+
catch (err) {
|
|
8493
|
+
this.onError(err, type);
|
|
7403
8494
|
}
|
|
7404
8495
|
}
|
|
7405
8496
|
};
|
|
7406
8497
|
return MessageHandler;
|
|
7407
8498
|
}(ThreadMessageHandler));
|
|
8499
|
+
// function tryWakeUpPthreadJoin (instance: WebAssembly.Instance): void {
|
|
8500
|
+
// // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/thread/pthread_join.c#L18-L21
|
|
8501
|
+
// const pthread_self = instance.exports.pthread_self as () => number
|
|
8502
|
+
// const memory = instance.exports.memory as WebAssembly.Memory
|
|
8503
|
+
// if (typeof pthread_self === 'function') {
|
|
8504
|
+
// const selfThread = pthread_self()
|
|
8505
|
+
// if (selfThread && memory) {
|
|
8506
|
+
// // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/internal/pthread_impl.h#L45
|
|
8507
|
+
// const detatchState = new Int32Array(memory.buffer, selfThread + 7 * 4 /** detach_state */, 1)
|
|
8508
|
+
// Atomics.store(detatchState, 0, 0)
|
|
8509
|
+
// Atomics.notify(detatchState, 0, Infinity)
|
|
8510
|
+
// }
|
|
8511
|
+
// }
|
|
8512
|
+
// }
|
|
7408
8513
|
|
|
7409
|
-
var version = "1.
|
|
8514
|
+
var version = "1.11.1";
|
|
7410
8515
|
|
|
7411
8516
|
export { MessageHandler, createNapiModule, instantiateNapiModule, instantiateNapiModuleSync, loadNapiModule, loadNapiModuleSync, version };
|