@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
|
@@ -109,7 +109,6 @@ function createNapiModule(options) {
|
|
|
109
109
|
filename: '',
|
|
110
110
|
childThread: ENVIRONMENT_IS_PTHREAD,
|
|
111
111
|
initWorker: undefined,
|
|
112
|
-
executeAsyncWork: undefined,
|
|
113
112
|
waitThreadStart: waitThreadStart,
|
|
114
113
|
PThread: undefined,
|
|
115
114
|
init: function (options) {
|
|
@@ -156,6 +155,11 @@ function createNapiModule(options) {
|
|
|
156
155
|
napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
|
|
157
156
|
});
|
|
158
157
|
}
|
|
158
|
+
catch (e) {
|
|
159
|
+
if (e !== 'unwind') {
|
|
160
|
+
throw e;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
159
163
|
finally {
|
|
160
164
|
emnapiCtx.closeScope(envObject, scope_1);
|
|
161
165
|
}
|
|
@@ -292,6 +296,9 @@ function createNapiModule(options) {
|
|
|
292
296
|
return envObject.clearLastError();
|
|
293
297
|
}
|
|
294
298
|
function _emnapi_get_node_version(major, minor, patch) {
|
|
299
|
+
major >>>= 0;
|
|
300
|
+
minor >>>= 0;
|
|
301
|
+
patch >>>= 0;
|
|
295
302
|
var versions = (typeof process === 'object' && process !== null &&
|
|
296
303
|
typeof process.versions === 'object' && process.versions !== null &&
|
|
297
304
|
typeof process.versions.node === 'string')
|
|
@@ -335,6 +342,7 @@ function createNapiModule(options) {
|
|
|
335
342
|
}
|
|
336
343
|
function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
|
|
337
344
|
var envObject = emnapiCtx.envStore.get(env);
|
|
345
|
+
callback >>>= 0;
|
|
338
346
|
envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
|
|
339
347
|
}
|
|
340
348
|
function _emnapi_ctx_increase_waiting_request_counter() {
|
|
@@ -343,6 +351,18 @@ function createNapiModule(options) {
|
|
|
343
351
|
function _emnapi_ctx_decrease_waiting_request_counter() {
|
|
344
352
|
emnapiCtx.decreaseWaitingRequestCounter();
|
|
345
353
|
}
|
|
354
|
+
function _emnapi_is_main_runtime_thread() {
|
|
355
|
+
return ENVIRONMENT_IS_PTHREAD ? 0 : 1;
|
|
356
|
+
}
|
|
357
|
+
function _emnapi_is_main_browser_thread() {
|
|
358
|
+
return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
|
|
359
|
+
}
|
|
360
|
+
function _emnapi_unwind() {
|
|
361
|
+
throw 'unwind';
|
|
362
|
+
}
|
|
363
|
+
function _emnapi_get_now() {
|
|
364
|
+
return performance.timeOrigin + performance.now();
|
|
365
|
+
}
|
|
346
366
|
function $emnapiSetValueI64(result, numberValue) {
|
|
347
367
|
var tempDouble;
|
|
348
368
|
var tempI64 = [
|
|
@@ -353,18 +373,30 @@ function createNapiModule(options) {
|
|
|
353
373
|
HEAP_DATA_VIEW.setInt32(result, tempI64[0], true);
|
|
354
374
|
HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true);
|
|
355
375
|
}
|
|
376
|
+
function _emnapi_open_handle_scope() {
|
|
377
|
+
return emnapiCtx.openScope().id;
|
|
378
|
+
}
|
|
379
|
+
function _emnapi_close_handle_scope(_scope) {
|
|
380
|
+
return emnapiCtx.closeScope();
|
|
381
|
+
}
|
|
356
382
|
var utilMod = Object.freeze({
|
|
357
383
|
__proto__: null,
|
|
358
384
|
$emnapiSetValueI64: $emnapiSetValueI64,
|
|
359
385
|
_emnapi_call_finalizer: _emnapi_call_finalizer,
|
|
360
386
|
_emnapi_callback_into_module: _emnapi_callback_into_module,
|
|
387
|
+
_emnapi_close_handle_scope: _emnapi_close_handle_scope,
|
|
361
388
|
_emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter,
|
|
362
389
|
_emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter,
|
|
363
390
|
_emnapi_get_node_version: _emnapi_get_node_version,
|
|
391
|
+
_emnapi_get_now: _emnapi_get_now,
|
|
392
|
+
_emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
|
|
393
|
+
_emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread,
|
|
364
394
|
_emnapi_next_tick: _emnapi_next_tick,
|
|
395
|
+
_emnapi_open_handle_scope: _emnapi_open_handle_scope,
|
|
365
396
|
_emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop,
|
|
366
397
|
_emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push,
|
|
367
398
|
_emnapi_set_immediate: _emnapi_set_immediate,
|
|
399
|
+
_emnapi_unwind: _emnapi_unwind,
|
|
368
400
|
napi_clear_last_error: napi_clear_last_error,
|
|
369
401
|
napi_set_last_error: napi_set_last_error
|
|
370
402
|
});
|
|
@@ -375,9 +407,19 @@ function createNapiModule(options) {
|
|
|
375
407
|
var worker = PThread.pthreads[tid];
|
|
376
408
|
return worker;
|
|
377
409
|
}
|
|
410
|
+
function _emnapi_worker_ref(pthreadPtr) {
|
|
411
|
+
if (ENVIRONMENT_IS_PTHREAD)
|
|
412
|
+
return;
|
|
413
|
+
pthreadPtr >>>= 0;
|
|
414
|
+
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
415
|
+
if (worker && typeof worker.ref === 'function') {
|
|
416
|
+
worker.ref();
|
|
417
|
+
}
|
|
418
|
+
}
|
|
378
419
|
function _emnapi_worker_unref(pthreadPtr) {
|
|
379
420
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
380
421
|
return;
|
|
422
|
+
pthreadPtr >>>= 0;
|
|
381
423
|
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
382
424
|
if (worker && typeof worker.unref === 'function') {
|
|
383
425
|
worker.unref();
|
|
@@ -415,9 +457,6 @@ function createNapiModule(options) {
|
|
|
415
457
|
};
|
|
416
458
|
});
|
|
417
459
|
uvThreadpoolReady.ready = false;
|
|
418
|
-
function _emnapi_is_main_browser_thread() {
|
|
419
|
-
return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
|
|
420
|
-
}
|
|
421
460
|
function _emnapi_after_uvthreadpool_ready(callback, q, type) {
|
|
422
461
|
if (uvThreadpoolReady.ready) {
|
|
423
462
|
(wasmTable.get(callback))(q, type);
|
|
@@ -432,7 +471,7 @@ function createNapiModule(options) {
|
|
|
432
471
|
var p = [];
|
|
433
472
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
434
473
|
var _loop_1 = function (i) {
|
|
435
|
-
var pthreadPtr = HEAP_DATA_VIEW.
|
|
474
|
+
var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true);
|
|
436
475
|
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
437
476
|
p.push(new Promise(function (resolve) {
|
|
438
477
|
var handler = function (e) {
|
|
@@ -480,8 +519,8 @@ function createNapiModule(options) {
|
|
|
480
519
|
_emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready,
|
|
481
520
|
_emnapi_async_send_js: _emnapi_async_send_js,
|
|
482
521
|
_emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
|
|
483
|
-
_emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
|
|
484
522
|
_emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
|
|
523
|
+
_emnapi_worker_ref: _emnapi_worker_ref,
|
|
485
524
|
_emnapi_worker_unref: _emnapi_worker_unref
|
|
486
525
|
});
|
|
487
526
|
function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
|
|
@@ -490,22 +529,14 @@ function createNapiModule(options) {
|
|
|
490
529
|
var envObject = emnapiCtx.envStore.get(env);
|
|
491
530
|
if (!adjusted_value)
|
|
492
531
|
return envObject.setLastError(1);
|
|
493
|
-
var
|
|
494
|
-
|
|
495
|
-
return envObject.setLastError(1);
|
|
496
|
-
}
|
|
497
|
-
var old_size = wasmMemory.buffer.byteLength;
|
|
498
|
-
var new_size = old_size + change_in_bytes_number;
|
|
499
|
-
new_size = new_size + ((65536 - new_size % 65536) % 65536);
|
|
500
|
-
if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
|
|
501
|
-
return envObject.setLastError(9);
|
|
502
|
-
}
|
|
532
|
+
var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
|
|
533
|
+
adjusted_value >>>= 0;
|
|
503
534
|
if (emnapiCtx.feature.supportBigInt) {
|
|
504
535
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
505
|
-
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(
|
|
536
|
+
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
|
|
506
537
|
}
|
|
507
538
|
else {
|
|
508
|
-
$emnapiSetValueI64(adjusted_value,
|
|
539
|
+
$emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
|
|
509
540
|
}
|
|
510
541
|
return envObject.clearLastError();
|
|
511
542
|
}
|
|
@@ -663,6 +694,7 @@ function createNapiModule(options) {
|
|
|
663
694
|
var asyncId = asyncContext.asyncId;
|
|
664
695
|
var triggerAsyncId = asyncContext.triggerAsyncId;
|
|
665
696
|
if (result) {
|
|
697
|
+
result >>>= 0;
|
|
666
698
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
667
699
|
HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
|
|
668
700
|
HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
|
|
@@ -683,11 +715,13 @@ function createNapiModule(options) {
|
|
|
683
715
|
return;
|
|
684
716
|
var resource = emnapiCtx.handleStore.get(async_resource).value;
|
|
685
717
|
var callback = emnapiCtx.handleStore.get(cb).value;
|
|
718
|
+
argv >>>= 0;
|
|
719
|
+
size >>>= 0;
|
|
686
720
|
size = size >>> 0;
|
|
687
721
|
var arr = Array(size);
|
|
688
722
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
689
723
|
for (; i < size; i++) {
|
|
690
|
-
var argVal = HEAP_DATA_VIEW.
|
|
724
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
691
725
|
arr[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
692
726
|
}
|
|
693
727
|
var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, {
|
|
@@ -695,9 +729,10 @@ function createNapiModule(options) {
|
|
|
695
729
|
triggerAsyncId: trigger_async_id
|
|
696
730
|
});
|
|
697
731
|
if (result) {
|
|
732
|
+
result >>>= 0;
|
|
698
733
|
var envObject = emnapiCtx.envStore.get(env);
|
|
699
734
|
v = envObject.ensureHandleId(ret);
|
|
700
|
-
HEAP_DATA_VIEW.
|
|
735
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
701
736
|
}
|
|
702
737
|
}
|
|
703
738
|
function _emnapi_async_init_js(async_resource, async_resource_name, result) {
|
|
@@ -721,6 +756,7 @@ function createNapiModule(options) {
|
|
|
721
756
|
}
|
|
722
757
|
var low = Number(numberValue & BigInt(0xffffffff));
|
|
723
758
|
var high = Number(numberValue >> BigInt(32));
|
|
759
|
+
result >>>= 0;
|
|
724
760
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
725
761
|
HEAP_DATA_VIEW.setInt32(result, low, true);
|
|
726
762
|
HEAP_DATA_VIEW.setInt32(result + 4, high, true);
|
|
@@ -730,6 +766,7 @@ function createNapiModule(options) {
|
|
|
730
766
|
if (!emnapiNodeBinding) {
|
|
731
767
|
return 9;
|
|
732
768
|
}
|
|
769
|
+
async_context >>>= 0;
|
|
733
770
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
734
771
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
735
772
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
@@ -772,14 +809,17 @@ function createNapiModule(options) {
|
|
|
772
809
|
if (typeof v8func !== 'function') {
|
|
773
810
|
return envObject.setLastError(1);
|
|
774
811
|
}
|
|
812
|
+
async_context >>>= 0;
|
|
775
813
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
776
814
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
777
815
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
778
816
|
var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
|
|
817
|
+
argv >>>= 0;
|
|
818
|
+
argc >>>= 0;
|
|
779
819
|
argc = argc >>> 0;
|
|
780
820
|
var arr = Array(argc);
|
|
781
821
|
for (; i < argc; i++) {
|
|
782
|
-
var argVal = HEAP_DATA_VIEW.
|
|
822
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
783
823
|
arr[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
784
824
|
}
|
|
785
825
|
var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr);
|
|
@@ -789,8 +829,9 @@ function createNapiModule(options) {
|
|
|
789
829
|
if (ret.status !== 0)
|
|
790
830
|
return envObject.setLastError(ret.status);
|
|
791
831
|
if (result) {
|
|
832
|
+
result >>>= 0;
|
|
792
833
|
v = envObject.ensureHandleId(ret.value);
|
|
793
|
-
HEAP_DATA_VIEW.
|
|
834
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
794
835
|
}
|
|
795
836
|
return envObject.getReturnStatus();
|
|
796
837
|
}
|
|
@@ -816,32 +857,61 @@ function createNapiModule(options) {
|
|
|
816
857
|
napi_open_callback_scope: napi_open_callback_scope
|
|
817
858
|
});
|
|
818
859
|
var emnapiTSFN = {
|
|
860
|
+
_liveSet: {},
|
|
819
861
|
offset: {
|
|
862
|
+
__size__: 0,
|
|
820
863
|
resource: 0,
|
|
821
|
-
async_id:
|
|
822
|
-
trigger_async_id:
|
|
823
|
-
queue_size:
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
864
|
+
async_id: 0,
|
|
865
|
+
trigger_async_id: 0,
|
|
866
|
+
queue_size: 0,
|
|
867
|
+
is_some: 0,
|
|
868
|
+
queue: 0,
|
|
869
|
+
async_pending: 0,
|
|
870
|
+
async_u_fd: 0,
|
|
871
|
+
thread_count: 0,
|
|
872
|
+
state: 0,
|
|
873
|
+
dispatch_state: 0,
|
|
874
|
+
context: 0,
|
|
875
|
+
max_queue_size: 0,
|
|
876
|
+
ref: 0,
|
|
877
|
+
env: 0,
|
|
878
|
+
finalize_data: 0,
|
|
879
|
+
finalize_cb: 0,
|
|
880
|
+
call_js_cb: 0,
|
|
881
|
+
handles_closing: 0,
|
|
882
|
+
async_ref: 0,
|
|
883
|
+
mutex: 0,
|
|
884
|
+
cond: 0
|
|
840
885
|
},
|
|
841
886
|
init: function () {
|
|
887
|
+
emnapiTSFN._liveSet = new Set();
|
|
888
|
+
emnapiTSFN.offset.__size__ = 184;
|
|
889
|
+
emnapiTSFN.offset.resource = 0;
|
|
890
|
+
emnapiTSFN.offset.async_id = 8;
|
|
891
|
+
emnapiTSFN.offset.trigger_async_id = 16;
|
|
892
|
+
emnapiTSFN.offset.queue_size = 60;
|
|
893
|
+
emnapiTSFN.offset.is_some = 24;
|
|
894
|
+
emnapiTSFN.offset.queue = 64;
|
|
895
|
+
emnapiTSFN.offset.async_pending = 132;
|
|
896
|
+
emnapiTSFN.offset.async_u_fd = 96;
|
|
897
|
+
emnapiTSFN.offset.thread_count = 136;
|
|
898
|
+
emnapiTSFN.offset.state = 140;
|
|
899
|
+
emnapiTSFN.offset.dispatch_state = 144;
|
|
900
|
+
emnapiTSFN.offset.context = 148;
|
|
901
|
+
emnapiTSFN.offset.max_queue_size = 152;
|
|
902
|
+
emnapiTSFN.offset.ref = 156;
|
|
903
|
+
emnapiTSFN.offset.env = 160;
|
|
904
|
+
emnapiTSFN.offset.finalize_data = 164;
|
|
905
|
+
emnapiTSFN.offset.finalize_cb = 168;
|
|
906
|
+
emnapiTSFN.offset.call_js_cb = 172;
|
|
907
|
+
emnapiTSFN.offset.handles_closing = 176;
|
|
908
|
+
emnapiTSFN.offset.async_ref = 180;
|
|
909
|
+
emnapiTSFN.offset.mutex = 32;
|
|
910
|
+
emnapiTSFN.offset.cond = 56;
|
|
911
|
+
emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
|
|
842
912
|
if (typeof PThread !== 'undefined') {
|
|
843
913
|
PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
|
|
844
|
-
PThread.
|
|
914
|
+
Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
|
|
845
915
|
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
846
916
|
PThread.getNewWorker = function () {
|
|
847
917
|
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
@@ -862,7 +932,10 @@ function createNapiModule(options) {
|
|
|
862
932
|
var type = __emnapi__.type;
|
|
863
933
|
var payload = __emnapi__.payload;
|
|
864
934
|
if (type === 'tsfn-send') {
|
|
865
|
-
emnapiTSFN.
|
|
935
|
+
var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
|
|
936
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
937
|
+
emnapiTSFN.enqueue(payload.tsfn);
|
|
938
|
+
}
|
|
866
939
|
}
|
|
867
940
|
}
|
|
868
941
|
};
|
|
@@ -884,18 +957,33 @@ function createNapiModule(options) {
|
|
|
884
957
|
}
|
|
885
958
|
return true;
|
|
886
959
|
},
|
|
960
|
+
ensureBufferFor: function (end) {
|
|
961
|
+
var buffer = wasmMemory.buffer;
|
|
962
|
+
if (end > buffer.byteLength) {
|
|
963
|
+
wasmMemory.grow(0);
|
|
964
|
+
buffer = wasmMemory.buffer;
|
|
965
|
+
}
|
|
966
|
+
return buffer;
|
|
967
|
+
},
|
|
887
968
|
initQueue: function (func) {
|
|
888
969
|
var size = 2 * 4;
|
|
889
970
|
var queue = _malloc(size);
|
|
890
971
|
if (!queue)
|
|
891
972
|
return false;
|
|
892
|
-
|
|
973
|
+
queue >>>= 0;
|
|
974
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
|
|
893
975
|
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
894
976
|
return true;
|
|
895
977
|
},
|
|
896
978
|
destroyQueue: function (func) {
|
|
897
979
|
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
898
980
|
if (queue) {
|
|
981
|
+
var node = emnapiTSFN.loadSizeTypeValue(queue, false);
|
|
982
|
+
while (node !== 0) {
|
|
983
|
+
var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
|
|
984
|
+
_free(node);
|
|
985
|
+
node = next;
|
|
986
|
+
}
|
|
899
987
|
_free(queue);
|
|
900
988
|
}
|
|
901
989
|
},
|
|
@@ -907,6 +995,7 @@ function createNapiModule(options) {
|
|
|
907
995
|
var node = _malloc(size);
|
|
908
996
|
if (!node)
|
|
909
997
|
throw new Error('OOM');
|
|
998
|
+
node >>>= 0;
|
|
910
999
|
emnapiTSFN.storeSizeTypeValue(node, data, false);
|
|
911
1000
|
emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
|
|
912
1001
|
if (head === 0 && tail === 0) {
|
|
@@ -942,11 +1031,11 @@ function createNapiModule(options) {
|
|
|
942
1031
|
var waitCondition = function () {
|
|
943
1032
|
var queueSize = emnapiTSFN.getQueueSize(func);
|
|
944
1033
|
var maxSize = emnapiTSFN.getMaxQueueSize(func);
|
|
945
|
-
|
|
946
|
-
return queueSize >= maxSize && maxSize > 0 && !isClosing;
|
|
1034
|
+
return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
|
|
947
1035
|
};
|
|
948
1036
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
949
|
-
|
|
1037
|
+
var shouldDelete = false;
|
|
1038
|
+
var ret = mutex.execute(function () {
|
|
950
1039
|
while (waitCondition()) {
|
|
951
1040
|
if (mode === 0) {
|
|
952
1041
|
return 15;
|
|
@@ -956,31 +1045,35 @@ function createNapiModule(options) {
|
|
|
956
1045
|
}
|
|
957
1046
|
cond.wait();
|
|
958
1047
|
}
|
|
959
|
-
if (emnapiTSFN.
|
|
960
|
-
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
961
|
-
return 1;
|
|
962
|
-
}
|
|
963
|
-
else {
|
|
964
|
-
emnapiTSFN.subThreadCount(func);
|
|
965
|
-
return 16;
|
|
966
|
-
}
|
|
967
|
-
}
|
|
968
|
-
else {
|
|
1048
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
969
1049
|
emnapiTSFN.pushQueue(func, data);
|
|
970
1050
|
emnapiTSFN.send(func);
|
|
971
1051
|
return 0;
|
|
972
1052
|
}
|
|
1053
|
+
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1054
|
+
return 1;
|
|
1055
|
+
}
|
|
1056
|
+
emnapiTSFN.subThreadCount(func);
|
|
1057
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1058
|
+
return 16;
|
|
1059
|
+
}
|
|
1060
|
+
shouldDelete = true;
|
|
1061
|
+
return 16;
|
|
973
1062
|
});
|
|
1063
|
+
if (shouldDelete) {
|
|
1064
|
+
emnapiTSFN.destroy(func);
|
|
1065
|
+
}
|
|
1066
|
+
return ret;
|
|
974
1067
|
},
|
|
975
1068
|
getMutex: function (func) {
|
|
976
1069
|
var index = func + emnapiTSFN.offset.mutex;
|
|
977
1070
|
var mutex = {
|
|
978
1071
|
lock: function () {
|
|
979
1072
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
980
|
-
var i32a = new Int32Array(
|
|
1073
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
981
1074
|
if (isBrowserMain) {
|
|
982
1075
|
while (true) {
|
|
983
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1076
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
984
1077
|
if (oldValue === 0) {
|
|
985
1078
|
return;
|
|
986
1079
|
}
|
|
@@ -988,18 +1081,18 @@ function createNapiModule(options) {
|
|
|
988
1081
|
}
|
|
989
1082
|
else {
|
|
990
1083
|
while (true) {
|
|
991
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1084
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
992
1085
|
if (oldValue === 0) {
|
|
993
1086
|
return;
|
|
994
1087
|
}
|
|
995
|
-
Atomics.wait(i32a, 0,
|
|
1088
|
+
Atomics.wait(i32a, 0, 10);
|
|
996
1089
|
}
|
|
997
1090
|
}
|
|
998
1091
|
},
|
|
999
1092
|
unlock: function () {
|
|
1000
|
-
var i32a = new Int32Array(
|
|
1001
|
-
var oldValue = Atomics.compareExchange(i32a, 0,
|
|
1002
|
-
if (oldValue !==
|
|
1093
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1094
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1095
|
+
if (oldValue !== 10) {
|
|
1003
1096
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
1004
1097
|
}
|
|
1005
1098
|
Atomics.notify(i32a, 0, 1);
|
|
@@ -1021,14 +1114,14 @@ function createNapiModule(options) {
|
|
|
1021
1114
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1022
1115
|
var cond = {
|
|
1023
1116
|
wait: function () {
|
|
1024
|
-
var i32a = new Int32Array(
|
|
1117
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1025
1118
|
var value = Atomics.load(i32a, 0);
|
|
1026
1119
|
mutex.unlock();
|
|
1027
1120
|
Atomics.wait(i32a, 0, value);
|
|
1028
1121
|
mutex.lock();
|
|
1029
1122
|
},
|
|
1030
1123
|
signal: function () {
|
|
1031
|
-
var i32a = new Int32Array(
|
|
1124
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1032
1125
|
Atomics.add(i32a, 0, 1);
|
|
1033
1126
|
Atomics.notify(i32a, 0, 1);
|
|
1034
1127
|
}
|
|
@@ -1041,15 +1134,15 @@ function createNapiModule(options) {
|
|
|
1041
1134
|
addQueueSize: function (func) {
|
|
1042
1135
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1043
1136
|
var arr, index;
|
|
1044
|
-
arr = new Uint32Array(
|
|
1045
|
-
index = (func + offset)
|
|
1137
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1138
|
+
index = (func + offset) >>> 2;
|
|
1046
1139
|
Atomics.add(arr, index, 1);
|
|
1047
1140
|
},
|
|
1048
1141
|
subQueueSize: function (func) {
|
|
1049
1142
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1050
1143
|
var arr, index;
|
|
1051
|
-
arr = new Uint32Array(
|
|
1052
|
-
index = (func + offset)
|
|
1144
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1145
|
+
index = (func + offset) >>> 2;
|
|
1053
1146
|
Atomics.sub(arr, index, 1);
|
|
1054
1147
|
},
|
|
1055
1148
|
getThreadCount: function (func) {
|
|
@@ -1058,31 +1151,31 @@ function createNapiModule(options) {
|
|
|
1058
1151
|
addThreadCount: function (func) {
|
|
1059
1152
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1060
1153
|
var arr, index;
|
|
1061
|
-
arr = new Uint32Array(
|
|
1062
|
-
index = (func + offset)
|
|
1154
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1155
|
+
index = (func + offset) >>> 2;
|
|
1063
1156
|
Atomics.add(arr, index, 1);
|
|
1064
1157
|
},
|
|
1065
1158
|
subThreadCount: function (func) {
|
|
1066
1159
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1067
1160
|
var arr, index;
|
|
1068
|
-
arr = new Uint32Array(
|
|
1069
|
-
index = (func + offset)
|
|
1161
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1162
|
+
index = (func + offset) >>> 2;
|
|
1070
1163
|
Atomics.sub(arr, index, 1);
|
|
1071
1164
|
},
|
|
1072
|
-
|
|
1073
|
-
return Atomics.load(new Int32Array(
|
|
1165
|
+
getState: function (func) {
|
|
1166
|
+
return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
|
|
1074
1167
|
},
|
|
1075
|
-
|
|
1076
|
-
Atomics.store(new Int32Array(
|
|
1168
|
+
setState: function (func, value) {
|
|
1169
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
|
|
1077
1170
|
},
|
|
1078
1171
|
getHandlesClosing: function (func) {
|
|
1079
|
-
return Atomics.load(new
|
|
1172
|
+
return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
|
|
1080
1173
|
},
|
|
1081
1174
|
setHandlesClosing: function (func, value) {
|
|
1082
|
-
Atomics.store(new
|
|
1175
|
+
Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
|
|
1083
1176
|
},
|
|
1084
1177
|
getDispatchState: function (func) {
|
|
1085
|
-
return Atomics.load(new Uint32Array(
|
|
1178
|
+
return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
|
|
1086
1179
|
},
|
|
1087
1180
|
getContext: function (func) {
|
|
1088
1181
|
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
@@ -1112,66 +1205,96 @@ function createNapiModule(options) {
|
|
|
1112
1205
|
var ret;
|
|
1113
1206
|
var arr;
|
|
1114
1207
|
if (unsigned) {
|
|
1115
|
-
arr = new Uint32Array(
|
|
1116
|
-
ret = Atomics.load(arr, offset
|
|
1208
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1209
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1117
1210
|
return ret;
|
|
1118
1211
|
}
|
|
1119
1212
|
else {
|
|
1120
|
-
arr = new Int32Array(
|
|
1121
|
-
ret = Atomics.load(arr, offset
|
|
1213
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1214
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1122
1215
|
return ret;
|
|
1123
1216
|
}
|
|
1124
1217
|
},
|
|
1125
1218
|
storeSizeTypeValue: function (offset, value, unsigned) {
|
|
1126
1219
|
var arr;
|
|
1127
1220
|
if (unsigned) {
|
|
1128
|
-
arr = new Uint32Array(
|
|
1129
|
-
Atomics.store(arr, offset
|
|
1221
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1222
|
+
Atomics.store(arr, offset >>> 2, value);
|
|
1130
1223
|
return undefined;
|
|
1131
1224
|
}
|
|
1132
1225
|
else {
|
|
1133
|
-
arr = new Int32Array(
|
|
1134
|
-
Atomics.store(arr, offset
|
|
1226
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1227
|
+
Atomics.store(arr, offset >>> 2, value >>> 0);
|
|
1135
1228
|
return undefined;
|
|
1136
1229
|
}
|
|
1137
1230
|
},
|
|
1231
|
+
releaseResources: function (func) {
|
|
1232
|
+
if (emnapiTSFN.getState(func) !== 2) {
|
|
1233
|
+
emnapiTSFN.setState(func, 2);
|
|
1234
|
+
var env = emnapiTSFN.getEnv(func);
|
|
1235
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
1236
|
+
var ref = emnapiTSFN.getRef(func);
|
|
1237
|
+
if (ref) {
|
|
1238
|
+
emnapiCtx.refStore.get(ref).dispose();
|
|
1239
|
+
}
|
|
1240
|
+
var resource = emnapiTSFN.getResource(func);
|
|
1241
|
+
emnapiCtx.refStore.get(resource).dispose();
|
|
1242
|
+
emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
|
|
1243
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1244
|
+
HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
|
|
1245
|
+
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1246
|
+
envObject.unref();
|
|
1247
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1248
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1249
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1250
|
+
if (Atomics.load(arr, asyncRefOffset) > 0) {
|
|
1251
|
+
Atomics.store(arr, asyncRefOffset, 0);
|
|
1252
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1253
|
+
}
|
|
1254
|
+
if (emnapiNodeBinding) {
|
|
1255
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1256
|
+
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1257
|
+
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1258
|
+
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
},
|
|
1138
1262
|
destroy: function (func) {
|
|
1263
|
+
emnapiTSFN._liveSet.delete(func);
|
|
1139
1264
|
emnapiTSFN.destroyQueue(func);
|
|
1140
|
-
|
|
1141
|
-
var envObject = emnapiCtx.envStore.get(env);
|
|
1142
|
-
var ref = emnapiTSFN.getRef(func);
|
|
1143
|
-
if (ref) {
|
|
1144
|
-
emnapiCtx.refStore.get(ref).dispose();
|
|
1145
|
-
}
|
|
1146
|
-
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1147
|
-
envObject.unref();
|
|
1148
|
-
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
|
|
1149
|
-
var arr = new Int32Array(wasmMemory.buffer);
|
|
1150
|
-
if (Atomics.load(arr, asyncRefOffset)) {
|
|
1151
|
-
Atomics.store(arr, asyncRefOffset, 0);
|
|
1152
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1153
|
-
}
|
|
1154
|
-
var resource = emnapiTSFN.getResource(func);
|
|
1155
|
-
emnapiCtx.refStore.get(resource).dispose();
|
|
1156
|
-
if (emnapiNodeBinding) {
|
|
1157
|
-
var view = new DataView(wasmMemory.buffer);
|
|
1158
|
-
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1159
|
-
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1160
|
-
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1161
|
-
}
|
|
1265
|
+
emnapiTSFN.releaseResources(func);
|
|
1162
1266
|
_free(func);
|
|
1163
1267
|
},
|
|
1164
|
-
|
|
1268
|
+
emptyQueue: function (func) {
|
|
1269
|
+
var drainQueue = [];
|
|
1270
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1271
|
+
while (emnapiTSFN.getQueueSize(func) > 0) {
|
|
1272
|
+
drainQueue.push(emnapiTSFN.shiftQueue(func));
|
|
1273
|
+
}
|
|
1274
|
+
});
|
|
1165
1275
|
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
1166
1276
|
var context = emnapiTSFN.getContext(func);
|
|
1167
1277
|
var data;
|
|
1168
|
-
|
|
1169
|
-
data =
|
|
1278
|
+
for (var i = 0; i < drainQueue.length; i++) {
|
|
1279
|
+
data = drainQueue[i];
|
|
1170
1280
|
if (callJsCb) {
|
|
1171
1281
|
(wasmTable.get(callJsCb))(0, 0, context, data);
|
|
1172
1282
|
}
|
|
1173
1283
|
}
|
|
1174
|
-
|
|
1284
|
+
},
|
|
1285
|
+
maybeDelete: function (func) {
|
|
1286
|
+
var shouldDelete = false;
|
|
1287
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1288
|
+
if (emnapiTSFN.getThreadCount(func) > 0) {
|
|
1289
|
+
emnapiTSFN.releaseResources(func);
|
|
1290
|
+
}
|
|
1291
|
+
else {
|
|
1292
|
+
shouldDelete = true;
|
|
1293
|
+
}
|
|
1294
|
+
});
|
|
1295
|
+
if (shouldDelete) {
|
|
1296
|
+
emnapiTSFN.destroy(func);
|
|
1297
|
+
}
|
|
1175
1298
|
},
|
|
1176
1299
|
finalize: function (func) {
|
|
1177
1300
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1184,12 +1307,13 @@ function createNapiModule(options) {
|
|
|
1184
1307
|
envObject.callFinalizerInternal(0, finalize, data, context);
|
|
1185
1308
|
};
|
|
1186
1309
|
try {
|
|
1310
|
+
emnapiTSFN.emptyQueue(func);
|
|
1187
1311
|
if (finalize) {
|
|
1188
1312
|
if (emnapiNodeBinding) {
|
|
1189
1313
|
var resource = emnapiTSFN.getResource(func);
|
|
1190
1314
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1191
1315
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1192
|
-
var view = new DataView(
|
|
1316
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1193
1317
|
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1194
1318
|
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1195
1319
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
@@ -1201,7 +1325,7 @@ function createNapiModule(options) {
|
|
|
1201
1325
|
f();
|
|
1202
1326
|
}
|
|
1203
1327
|
}
|
|
1204
|
-
emnapiTSFN.
|
|
1328
|
+
emnapiTSFN.maybeDelete(func);
|
|
1205
1329
|
}
|
|
1206
1330
|
finally {
|
|
1207
1331
|
emnapiCtx.closeScope(envObject);
|
|
@@ -1217,7 +1341,7 @@ function createNapiModule(options) {
|
|
|
1217
1341
|
try {
|
|
1218
1342
|
if (set_closing) {
|
|
1219
1343
|
emnapiTSFN.getMutex(func).execute(function () {
|
|
1220
|
-
emnapiTSFN.
|
|
1344
|
+
emnapiTSFN.setState(func, 1);
|
|
1221
1345
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1222
1346
|
emnapiTSFN.getCond(func).signal();
|
|
1223
1347
|
}
|
|
@@ -1227,6 +1351,7 @@ function createNapiModule(options) {
|
|
|
1227
1351
|
return;
|
|
1228
1352
|
}
|
|
1229
1353
|
emnapiTSFN.setHandlesClosing(func, 1);
|
|
1354
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
|
|
1230
1355
|
emnapiCtx.feature.setImmediate(function () {
|
|
1231
1356
|
emnapiTSFN.finalize(func);
|
|
1232
1357
|
});
|
|
@@ -1242,10 +1367,7 @@ function createNapiModule(options) {
|
|
|
1242
1367
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1243
1368
|
var cond = emnapiTSFN.getCond(func);
|
|
1244
1369
|
mutex.execute(function () {
|
|
1245
|
-
if (emnapiTSFN.
|
|
1246
|
-
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1247
|
-
}
|
|
1248
|
-
else {
|
|
1370
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1249
1371
|
var size = emnapiTSFN.getQueueSize(func);
|
|
1250
1372
|
if (size > 0) {
|
|
1251
1373
|
data = emnapiTSFN.shiftQueue(func);
|
|
@@ -1258,7 +1380,7 @@ function createNapiModule(options) {
|
|
|
1258
1380
|
}
|
|
1259
1381
|
if (size === 0) {
|
|
1260
1382
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1261
|
-
emnapiTSFN.
|
|
1383
|
+
emnapiTSFN.setState(func, 1);
|
|
1262
1384
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1263
1385
|
cond.signal();
|
|
1264
1386
|
}
|
|
@@ -1269,6 +1391,9 @@ function createNapiModule(options) {
|
|
|
1269
1391
|
has_more = true;
|
|
1270
1392
|
}
|
|
1271
1393
|
}
|
|
1394
|
+
else {
|
|
1395
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1396
|
+
}
|
|
1272
1397
|
});
|
|
1273
1398
|
if (popped_value) {
|
|
1274
1399
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1296,7 +1421,7 @@ function createNapiModule(options) {
|
|
|
1296
1421
|
var resource = emnapiTSFN.getResource(func);
|
|
1297
1422
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1298
1423
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1299
|
-
var view = new DataView(
|
|
1424
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1300
1425
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
1301
1426
|
asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
|
|
1302
1427
|
triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
|
|
@@ -1315,8 +1440,9 @@ function createNapiModule(options) {
|
|
|
1315
1440
|
dispatch: function (func) {
|
|
1316
1441
|
var has_more = true;
|
|
1317
1442
|
var iterations_left = 1000;
|
|
1318
|
-
var
|
|
1319
|
-
var
|
|
1443
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1444
|
+
var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
|
|
1445
|
+
var index = dispatchStateAddress >>> 2;
|
|
1320
1446
|
while (has_more && --iterations_left !== 0) {
|
|
1321
1447
|
Atomics.store(ui32a, index, 1);
|
|
1322
1448
|
has_more = emnapiTSFN.dispatchOne(func);
|
|
@@ -1328,25 +1454,66 @@ function createNapiModule(options) {
|
|
|
1328
1454
|
emnapiTSFN.send(func);
|
|
1329
1455
|
}
|
|
1330
1456
|
},
|
|
1331
|
-
|
|
1332
|
-
var
|
|
1333
|
-
|
|
1457
|
+
enqueue: function (func) {
|
|
1458
|
+
var pending = func + emnapiTSFN.offset.async_pending;
|
|
1459
|
+
var scheduled = func + emnapiTSFN.offset.async_u_fd;
|
|
1460
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
|
|
1461
|
+
if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
|
|
1334
1462
|
return;
|
|
1335
1463
|
}
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1464
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1465
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1466
|
+
return;
|
|
1467
|
+
}
|
|
1468
|
+
if (Atomics.load(i32a, pending >>> 2) === 0) {
|
|
1469
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1470
|
+
return;
|
|
1471
|
+
}
|
|
1472
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1473
|
+
try {
|
|
1474
|
+
if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
|
|
1475
|
+
return;
|
|
1476
|
+
}
|
|
1477
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1478
|
+
return;
|
|
1479
|
+
}
|
|
1480
|
+
emnapiTSFN.dispatch(func);
|
|
1481
|
+
}
|
|
1482
|
+
finally {
|
|
1483
|
+
if (emnapiTSFN._liveSet.has(func)) {
|
|
1484
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1485
|
+
if (Atomics.load(i32a, pending >>> 2) !== 0) {
|
|
1486
|
+
emnapiTSFN.enqueue(func);
|
|
1487
|
+
}
|
|
1342
1488
|
}
|
|
1343
1489
|
}
|
|
1344
1490
|
});
|
|
1491
|
+
});
|
|
1492
|
+
},
|
|
1493
|
+
send: function (func) {
|
|
1494
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1495
|
+
var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
|
|
1496
|
+
if ((current_state & 1) === 1) {
|
|
1497
|
+
return;
|
|
1345
1498
|
}
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1499
|
+
var pendng = func + emnapiTSFN.offset.async_pending;
|
|
1500
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
1501
|
+
return;
|
|
1502
|
+
}
|
|
1503
|
+
if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
|
|
1504
|
+
if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
|
|
1505
|
+
postMessage({
|
|
1506
|
+
__emnapi__: {
|
|
1507
|
+
type: 'tsfn-send',
|
|
1508
|
+
payload: {
|
|
1509
|
+
tsfn: func
|
|
1510
|
+
}
|
|
1511
|
+
}
|
|
1512
|
+
});
|
|
1513
|
+
}
|
|
1514
|
+
else {
|
|
1515
|
+
emnapiTSFN.enqueue(func);
|
|
1516
|
+
}
|
|
1350
1517
|
}
|
|
1351
1518
|
}
|
|
1352
1519
|
};
|
|
@@ -1357,6 +1524,13 @@ function createNapiModule(options) {
|
|
|
1357
1524
|
envObject.checkGCAccess();
|
|
1358
1525
|
if (!async_resource_name)
|
|
1359
1526
|
return envObject.setLastError(1);
|
|
1527
|
+
max_queue_size >>>= 0;
|
|
1528
|
+
initial_thread_count >>>= 0;
|
|
1529
|
+
env >>>= 0;
|
|
1530
|
+
thread_finalize_data >>>= 0;
|
|
1531
|
+
thread_finalize_cb >>>= 0;
|
|
1532
|
+
context >>>= 0;
|
|
1533
|
+
call_js_cb >>>= 0;
|
|
1360
1534
|
max_queue_size = max_queue_size >>> 0;
|
|
1361
1535
|
initial_thread_count = initial_thread_count >>> 0;
|
|
1362
1536
|
if (initial_thread_count === 0) {
|
|
@@ -1365,6 +1539,7 @@ function createNapiModule(options) {
|
|
|
1365
1539
|
if (!result)
|
|
1366
1540
|
return envObject.setLastError(1);
|
|
1367
1541
|
var ref = 0;
|
|
1542
|
+
func >>>= 0;
|
|
1368
1543
|
if (!func) {
|
|
1369
1544
|
if (!call_js_cb)
|
|
1370
1545
|
return envObject.setLastError(1);
|
|
@@ -1394,34 +1569,38 @@ function createNapiModule(options) {
|
|
|
1394
1569
|
}
|
|
1395
1570
|
asyncResourceName = String(asyncResourceName);
|
|
1396
1571
|
var resource_name = envObject.ensureHandleId(asyncResourceName);
|
|
1397
|
-
var sizeofTSFN = emnapiTSFN.offset.
|
|
1572
|
+
var sizeofTSFN = emnapiTSFN.offset.__size__;
|
|
1398
1573
|
var tsfn = _malloc(sizeofTSFN);
|
|
1399
1574
|
if (!tsfn)
|
|
1400
1575
|
return envObject.setLastError(9);
|
|
1401
|
-
|
|
1576
|
+
tsfn >>>= 0;
|
|
1577
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
1402
1578
|
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
|
|
1403
1579
|
var resource_ = resourceRef.id;
|
|
1404
1580
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1405
|
-
HEAP_DATA_VIEW.
|
|
1581
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
|
|
1406
1582
|
if (!emnapiTSFN.initQueue(tsfn)) {
|
|
1407
1583
|
_free(tsfn);
|
|
1408
1584
|
resourceRef.dispose();
|
|
1409
1585
|
return envObject.setLastError(9);
|
|
1410
1586
|
}
|
|
1411
1587
|
_emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
|
|
1588
|
+
HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
|
|
1412
1589
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
|
|
1413
|
-
HEAP_DATA_VIEW.
|
|
1590
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
|
|
1414
1591
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
|
|
1415
|
-
HEAP_DATA_VIEW.
|
|
1416
|
-
HEAP_DATA_VIEW.
|
|
1417
|
-
HEAP_DATA_VIEW.
|
|
1418
|
-
HEAP_DATA_VIEW.
|
|
1419
|
-
HEAP_DATA_VIEW.
|
|
1592
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true);
|
|
1593
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true);
|
|
1594
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
|
|
1595
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
|
|
1596
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
|
|
1420
1597
|
emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
|
|
1598
|
+
emnapiTSFN._liveSet.add(tsfn);
|
|
1421
1599
|
envObject.ref();
|
|
1422
1600
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1423
|
-
HEAP_DATA_VIEW.
|
|
1424
|
-
|
|
1601
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
|
|
1602
|
+
result >>>= 0;
|
|
1603
|
+
HEAP_DATA_VIEW.setUint32(result, tsfn, true);
|
|
1425
1604
|
return envObject.clearLastError();
|
|
1426
1605
|
}
|
|
1427
1606
|
function napi_get_threadsafe_function_context(func, result) {
|
|
@@ -1429,9 +1608,11 @@ function createNapiModule(options) {
|
|
|
1429
1608
|
abort();
|
|
1430
1609
|
return 1;
|
|
1431
1610
|
}
|
|
1611
|
+
func >>>= 0;
|
|
1612
|
+
result >>>= 0;
|
|
1432
1613
|
var context = emnapiTSFN.getContext(func);
|
|
1433
1614
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1434
|
-
HEAP_DATA_VIEW.
|
|
1615
|
+
HEAP_DATA_VIEW.setUint32(result, context, true);
|
|
1435
1616
|
return 0;
|
|
1436
1617
|
}
|
|
1437
1618
|
function napi_call_threadsafe_function(func, data, mode) {
|
|
@@ -1439,6 +1620,8 @@ function createNapiModule(options) {
|
|
|
1439
1620
|
abort();
|
|
1440
1621
|
return 1;
|
|
1441
1622
|
}
|
|
1623
|
+
func >>>= 0;
|
|
1624
|
+
data >>>= 0;
|
|
1442
1625
|
return emnapiTSFN.push(func, data, mode);
|
|
1443
1626
|
}
|
|
1444
1627
|
function napi_acquire_threadsafe_function(func) {
|
|
@@ -1446,13 +1629,14 @@ function createNapiModule(options) {
|
|
|
1446
1629
|
abort();
|
|
1447
1630
|
return 1;
|
|
1448
1631
|
}
|
|
1632
|
+
func >>>= 0;
|
|
1449
1633
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1450
1634
|
return mutex.execute(function () {
|
|
1451
|
-
if (emnapiTSFN.
|
|
1452
|
-
|
|
1635
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1636
|
+
emnapiTSFN.addThreadCount(func);
|
|
1637
|
+
return 0;
|
|
1453
1638
|
}
|
|
1454
|
-
|
|
1455
|
-
return 0;
|
|
1639
|
+
return 16;
|
|
1456
1640
|
});
|
|
1457
1641
|
}
|
|
1458
1642
|
function napi_release_threadsafe_function(func, mode) {
|
|
@@ -1460,37 +1644,52 @@ function createNapiModule(options) {
|
|
|
1460
1644
|
abort();
|
|
1461
1645
|
return 1;
|
|
1462
1646
|
}
|
|
1647
|
+
func >>>= 0;
|
|
1463
1648
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1464
1649
|
var cond = emnapiTSFN.getCond(func);
|
|
1465
|
-
|
|
1650
|
+
var shouldDelete = false;
|
|
1651
|
+
var ret = mutex.execute(function () {
|
|
1466
1652
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1467
1653
|
return 1;
|
|
1468
1654
|
}
|
|
1469
1655
|
emnapiTSFN.subThreadCount(func);
|
|
1470
1656
|
if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
if (
|
|
1657
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1658
|
+
if (mode === 1) {
|
|
1659
|
+
emnapiTSFN.setState(func, 1);
|
|
1660
|
+
}
|
|
1661
|
+
if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1476
1662
|
cond.signal();
|
|
1477
1663
|
}
|
|
1478
1664
|
emnapiTSFN.send(func);
|
|
1479
1665
|
}
|
|
1480
1666
|
}
|
|
1667
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1668
|
+
return 0;
|
|
1669
|
+
}
|
|
1670
|
+
shouldDelete = true;
|
|
1481
1671
|
return 0;
|
|
1482
1672
|
});
|
|
1673
|
+
if (shouldDelete) {
|
|
1674
|
+
emnapiTSFN.destroy(func);
|
|
1675
|
+
}
|
|
1676
|
+
return ret;
|
|
1483
1677
|
}
|
|
1484
1678
|
function napi_unref_threadsafe_function(env, func) {
|
|
1485
1679
|
if (!func) {
|
|
1486
1680
|
abort();
|
|
1487
1681
|
return 1;
|
|
1488
1682
|
}
|
|
1489
|
-
|
|
1490
|
-
var
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1683
|
+
func >>>= 0;
|
|
1684
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1685
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1686
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1687
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1688
|
+
if (currentValue > 0) {
|
|
1689
|
+
Atomics.store(arr, asyncRefOffset, currentValue - 1);
|
|
1690
|
+
if (currentValue === 1) {
|
|
1691
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1692
|
+
}
|
|
1494
1693
|
}
|
|
1495
1694
|
return 0;
|
|
1496
1695
|
}
|
|
@@ -1499,34 +1698,66 @@ function createNapiModule(options) {
|
|
|
1499
1698
|
abort();
|
|
1500
1699
|
return 1;
|
|
1501
1700
|
}
|
|
1502
|
-
|
|
1503
|
-
var
|
|
1504
|
-
|
|
1505
|
-
|
|
1701
|
+
func >>>= 0;
|
|
1702
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1703
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1704
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1705
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1706
|
+
if (!currentValue) {
|
|
1506
1707
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1507
1708
|
}
|
|
1709
|
+
Atomics.store(arr, asyncRefOffset, currentValue + 1);
|
|
1508
1710
|
return 0;
|
|
1509
1711
|
}
|
|
1510
1712
|
var emnapiAWMT = {
|
|
1511
|
-
|
|
1512
|
-
runningWorkers: [],
|
|
1513
|
-
workQueue: [],
|
|
1713
|
+
pool: [],
|
|
1514
1714
|
workerReady: null,
|
|
1715
|
+
globalAddress: 0,
|
|
1716
|
+
globalOffset: {
|
|
1717
|
+
idle_threads: 0,
|
|
1718
|
+
q: 1 * 4,
|
|
1719
|
+
next: 1 * 4,
|
|
1720
|
+
prev: 2 * 4,
|
|
1721
|
+
mutex: 3 * 4,
|
|
1722
|
+
cond: 4 * 4,
|
|
1723
|
+
exit_message: 5 * 4,
|
|
1724
|
+
end: 7 * 4
|
|
1725
|
+
},
|
|
1515
1726
|
offset: {
|
|
1516
1727
|
resource: 0,
|
|
1517
1728
|
async_id: 8,
|
|
1518
1729
|
trigger_async_id: 16,
|
|
1519
1730
|
env: 24,
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1731
|
+
status: 1 * 4 + 24,
|
|
1732
|
+
queue: 2 * 4 + 24,
|
|
1733
|
+
queue_next: 2 * 4 + 24,
|
|
1734
|
+
queue_prev: 3 * 4 + 24,
|
|
1735
|
+
data: 4 * 4 + 24,
|
|
1736
|
+
execute: 5 * 4 + 24,
|
|
1737
|
+
complete: 6 * 4 + 24,
|
|
1738
|
+
end: 7 * 4 + 24
|
|
1739
|
+
},
|
|
1740
|
+
ensureBufferFor: function (end) {
|
|
1741
|
+
var buffer = wasmMemory.buffer;
|
|
1742
|
+
if (end > buffer.byteLength) {
|
|
1743
|
+
wasmMemory.grow(0);
|
|
1744
|
+
buffer = wasmMemory.buffer;
|
|
1745
|
+
}
|
|
1746
|
+
return buffer;
|
|
1524
1747
|
},
|
|
1525
1748
|
init: function () {
|
|
1526
|
-
emnapiAWMT.
|
|
1527
|
-
emnapiAWMT.runningWorkers = [];
|
|
1528
|
-
emnapiAWMT.workQueue = [];
|
|
1749
|
+
emnapiAWMT.pool = [];
|
|
1529
1750
|
emnapiAWMT.workerReady = null;
|
|
1751
|
+
if (typeof PThread !== 'undefined') {
|
|
1752
|
+
PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
|
|
1753
|
+
Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
|
|
1754
|
+
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
1755
|
+
PThread.getNewWorker = function () {
|
|
1756
|
+
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
1757
|
+
emnapiAWMT.addListener(r);
|
|
1758
|
+
return r;
|
|
1759
|
+
};
|
|
1760
|
+
}
|
|
1530
1761
|
},
|
|
1531
1762
|
addListener: function (worker) {
|
|
1532
1763
|
if (!worker)
|
|
@@ -1540,18 +1771,8 @@ function createNapiModule(options) {
|
|
|
1540
1771
|
var type = __emnapi__.type;
|
|
1541
1772
|
var payload = __emnapi__.payload;
|
|
1542
1773
|
if (type === 'async-work-complete') {
|
|
1543
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1544
|
-
emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
|
|
1545
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1546
|
-
emnapiAWMT.checkIdleWorker();
|
|
1547
1774
|
emnapiAWMT.callComplete(payload.work, 0);
|
|
1548
1775
|
}
|
|
1549
|
-
else if (type === 'async-work-queue') {
|
|
1550
|
-
emnapiAWMT.scheduleWork(payload.work);
|
|
1551
|
-
}
|
|
1552
|
-
else if (type === 'async-work-cancel') {
|
|
1553
|
-
emnapiAWMT.cancelWork(payload.work);
|
|
1554
|
-
}
|
|
1555
1776
|
}
|
|
1556
1777
|
};
|
|
1557
1778
|
var dispose = function () {
|
|
@@ -1572,142 +1793,233 @@ function createNapiModule(options) {
|
|
|
1572
1793
|
}
|
|
1573
1794
|
return true;
|
|
1574
1795
|
},
|
|
1796
|
+
initGlobal: function () {
|
|
1797
|
+
if (!emnapiAWMT.globalAddress) {
|
|
1798
|
+
emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
|
|
1799
|
+
emnapiAWMT.globalAddress >>>= 0;
|
|
1800
|
+
var size = emnapiAWMT.globalOffset.end;
|
|
1801
|
+
var addr = emnapiAWMT.globalAddress;
|
|
1802
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
|
|
1803
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
|
|
1804
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
|
|
1805
|
+
}
|
|
1806
|
+
},
|
|
1807
|
+
terminateWorkers: function () {
|
|
1808
|
+
emnapiAWMT.pool.forEach(function (w) {
|
|
1809
|
+
var _a, _b;
|
|
1810
|
+
(_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
1811
|
+
(_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
1812
|
+
w.terminate();
|
|
1813
|
+
});
|
|
1814
|
+
emnapiAWMT.pool.length = 0;
|
|
1815
|
+
},
|
|
1575
1816
|
initWorkers: function (n) {
|
|
1576
1817
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
1577
1818
|
return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
|
|
1578
1819
|
}
|
|
1579
1820
|
if (emnapiAWMT.workerReady)
|
|
1580
1821
|
return emnapiAWMT.workerReady;
|
|
1581
|
-
if (typeof onCreateWorker !== 'function') {
|
|
1582
|
-
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
1583
|
-
}
|
|
1584
|
-
var promises = [];
|
|
1585
|
-
var args = [];
|
|
1586
1822
|
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
1587
1823
|
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
1588
1824
|
}
|
|
1825
|
+
var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
|
|
1826
|
+
var args = [];
|
|
1827
|
+
emnapiAWMT.initGlobal();
|
|
1589
1828
|
for (var i = 0; i < n; ++i) {
|
|
1590
|
-
args.push(
|
|
1829
|
+
args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
|
|
1591
1830
|
}
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
var p = PThread.loadWasmModuleToWorker(worker);
|
|
1596
|
-
emnapiAWMT.addListener(worker);
|
|
1597
|
-
promises.push(p.then(function () {
|
|
1598
|
-
if (typeof worker.unref === 'function') {
|
|
1599
|
-
worker.unref();
|
|
1600
|
-
}
|
|
1601
|
-
}));
|
|
1602
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1603
|
-
var arg = args[i];
|
|
1604
|
-
worker.threadBlockBase = arg;
|
|
1605
|
-
worker.postMessage({
|
|
1606
|
-
__emnapi__: {
|
|
1607
|
-
type: 'async-worker-init',
|
|
1608
|
-
payload: { arg: arg }
|
|
1609
|
-
}
|
|
1610
|
-
});
|
|
1611
|
-
};
|
|
1612
|
-
for (var i = 0; i < n; ++i) {
|
|
1613
|
-
_loop_1(i);
|
|
1831
|
+
var promises = args.map(function (index) {
|
|
1832
|
+
if (index === 0) {
|
|
1833
|
+
return Promise.reject(new Error('Failed to create async worker'));
|
|
1614
1834
|
}
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1835
|
+
var worker;
|
|
1836
|
+
if (index < 0) {
|
|
1837
|
+
worker = emnapiAWMT.pool[-index - 1];
|
|
1838
|
+
if (worker)
|
|
1839
|
+
return worker.whenLoaded;
|
|
1620
1840
|
}
|
|
1621
|
-
|
|
1622
|
-
|
|
1841
|
+
index >>>= 0;
|
|
1842
|
+
var tidOffset = 20;
|
|
1843
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
|
|
1844
|
+
var tid = view.getInt32(index + tidOffset, true);
|
|
1845
|
+
worker = PThread.pthreads[tid];
|
|
1846
|
+
return worker.whenLoaded;
|
|
1847
|
+
});
|
|
1623
1848
|
emnapiAWMT.workerReady = Promise.all(promises);
|
|
1624
1849
|
return emnapiAWMT.workerReady;
|
|
1625
1850
|
},
|
|
1626
|
-
checkIdleWorker: function () {
|
|
1627
|
-
if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
|
|
1628
|
-
var worker = emnapiAWMT.unusedWorkers.shift();
|
|
1629
|
-
var work = emnapiAWMT.workQueue.shift();
|
|
1630
|
-
emnapiAWMT.runningWorkers.push(worker);
|
|
1631
|
-
worker.postMessage({
|
|
1632
|
-
__emnapi__: {
|
|
1633
|
-
type: 'async-work-execute',
|
|
1634
|
-
payload: { work: work }
|
|
1635
|
-
}
|
|
1636
|
-
});
|
|
1637
|
-
}
|
|
1638
|
-
},
|
|
1639
1851
|
getResource: function (work) {
|
|
1640
|
-
|
|
1852
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
|
|
1853
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1854
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
|
|
1641
1855
|
},
|
|
1642
1856
|
getExecute: function (work) {
|
|
1643
|
-
|
|
1857
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
|
|
1858
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1859
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
|
|
1644
1860
|
},
|
|
1645
1861
|
getComplete: function (work) {
|
|
1646
|
-
|
|
1862
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
|
|
1863
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1864
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
|
|
1647
1865
|
},
|
|
1648
1866
|
getEnv: function (work) {
|
|
1649
|
-
|
|
1867
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
|
|
1868
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1869
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
|
|
1650
1870
|
},
|
|
1651
1871
|
getData: function (work) {
|
|
1652
|
-
|
|
1872
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
|
|
1873
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1874
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
|
|
1875
|
+
},
|
|
1876
|
+
getMutex: function () {
|
|
1877
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
|
|
1878
|
+
var mutex = {
|
|
1879
|
+
lock: function () {
|
|
1880
|
+
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1881
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1882
|
+
if (isBrowserMain) {
|
|
1883
|
+
while (true) {
|
|
1884
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1885
|
+
if (oldValue === 0) {
|
|
1886
|
+
return;
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
}
|
|
1890
|
+
else {
|
|
1891
|
+
while (true) {
|
|
1892
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1893
|
+
if (oldValue === 0) {
|
|
1894
|
+
return;
|
|
1895
|
+
}
|
|
1896
|
+
Atomics.wait(i32a, 0, 10);
|
|
1897
|
+
}
|
|
1898
|
+
}
|
|
1899
|
+
},
|
|
1900
|
+
unlock: function () {
|
|
1901
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1902
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1903
|
+
if (oldValue !== 10) {
|
|
1904
|
+
throw new Error('Tried to unlock while not holding the mutex');
|
|
1905
|
+
}
|
|
1906
|
+
Atomics.notify(i32a, 0, 1);
|
|
1907
|
+
},
|
|
1908
|
+
execute: function (fn) {
|
|
1909
|
+
mutex.lock();
|
|
1910
|
+
try {
|
|
1911
|
+
return fn();
|
|
1912
|
+
}
|
|
1913
|
+
finally {
|
|
1914
|
+
mutex.unlock();
|
|
1915
|
+
}
|
|
1916
|
+
}
|
|
1917
|
+
};
|
|
1918
|
+
return mutex;
|
|
1919
|
+
},
|
|
1920
|
+
getCond: function () {
|
|
1921
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
|
|
1922
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1923
|
+
var cond = {
|
|
1924
|
+
wait: function () {
|
|
1925
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1926
|
+
var value = Atomics.load(i32a, 0);
|
|
1927
|
+
mutex.unlock();
|
|
1928
|
+
Atomics.wait(i32a, 0, value);
|
|
1929
|
+
mutex.lock();
|
|
1930
|
+
},
|
|
1931
|
+
signal: function () {
|
|
1932
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1933
|
+
Atomics.add(i32a, 0, 1);
|
|
1934
|
+
Atomics.notify(i32a, 0, 1);
|
|
1935
|
+
}
|
|
1936
|
+
};
|
|
1937
|
+
return cond;
|
|
1938
|
+
},
|
|
1939
|
+
queueInit: function (q) {
|
|
1940
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1941
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1942
|
+
HEAP_DATA_VIEW.setUint32(q, q, true);
|
|
1943
|
+
HEAP_DATA_VIEW.setUint32(q + 4, q, true);
|
|
1944
|
+
},
|
|
1945
|
+
queueInsertTail: function (h, q) {
|
|
1946
|
+
emnapiAWMT.ensureBufferFor(h + 4 + 4);
|
|
1947
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1948
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1949
|
+
HEAP_DATA_VIEW.setUint32(q, h, true);
|
|
1950
|
+
var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
|
|
1951
|
+
HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
|
|
1952
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1953
|
+
HEAP_DATA_VIEW.setUint32(qprev, q, true);
|
|
1954
|
+
HEAP_DATA_VIEW.setUint32(h + 4, q, true);
|
|
1955
|
+
},
|
|
1956
|
+
queueRemove: function (q) {
|
|
1957
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1958
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1959
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1960
|
+
var qnext = HEAP_DATA_VIEW.getUint32(q, true);
|
|
1961
|
+
HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
|
|
1962
|
+
HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
|
|
1963
|
+
},
|
|
1964
|
+
queueEmpty: function (q) {
|
|
1965
|
+
emnapiAWMT.ensureBufferFor(q + 4);
|
|
1966
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1967
|
+
return q == HEAP_DATA_VIEW.getUint32(q, true);
|
|
1653
1968
|
},
|
|
1654
1969
|
scheduleWork: function (work) {
|
|
1655
1970
|
var _a;
|
|
1656
|
-
if (
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
}
|
|
1971
|
+
if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
|
|
1972
|
+
emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
|
|
1973
|
+
emnapiAWMT.workerReady.ready = true;
|
|
1974
|
+
}).catch(function (err) {
|
|
1975
|
+
emnapiAWMT.workerReady = null;
|
|
1976
|
+
throw err;
|
|
1663
1977
|
});
|
|
1664
|
-
return;
|
|
1665
1978
|
}
|
|
1666
1979
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1667
|
-
emnapiAWMT.
|
|
1668
|
-
|
|
1669
|
-
|
|
1980
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
1981
|
+
Atomics.store(statusBuffer, 0, 0);
|
|
1982
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1983
|
+
var cond = emnapiAWMT.getCond();
|
|
1984
|
+
mutex.lock();
|
|
1985
|
+
try {
|
|
1986
|
+
emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
|
|
1670
1987
|
}
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
}, fail);
|
|
1681
|
-
}
|
|
1682
|
-
catch (err) {
|
|
1683
|
-
fail(err);
|
|
1684
|
-
}
|
|
1988
|
+
catch (err) {
|
|
1989
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1990
|
+
mutex.unlock();
|
|
1991
|
+
throw err;
|
|
1992
|
+
}
|
|
1993
|
+
emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
|
|
1994
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1995
|
+
if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
|
|
1996
|
+
cond.signal();
|
|
1685
1997
|
}
|
|
1998
|
+
mutex.unlock();
|
|
1686
1999
|
},
|
|
1687
2000
|
cancelWork: function (work) {
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
}
|
|
1696
|
-
|
|
2001
|
+
var cancelled = false;
|
|
2002
|
+
emnapiAWMT.getMutex().execute(function () {
|
|
2003
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
|
|
2004
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2005
|
+
cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
|
|
2006
|
+
if (cancelled) {
|
|
2007
|
+
emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
|
|
2008
|
+
}
|
|
2009
|
+
});
|
|
2010
|
+
if (!cancelled) {
|
|
2011
|
+
return 9;
|
|
1697
2012
|
}
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
emnapiAWMT.workQueue.splice(index, 1);
|
|
1701
|
-
emnapiCtx.feature.setImmediate(function () {
|
|
1702
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1703
|
-
emnapiAWMT.checkIdleWorker();
|
|
1704
|
-
emnapiAWMT.callComplete(work, 11);
|
|
1705
|
-
});
|
|
1706
|
-
return 0;
|
|
2013
|
+
if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
|
|
2014
|
+
return 9;
|
|
1707
2015
|
}
|
|
1708
|
-
|
|
2016
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
2017
|
+
emnapiAWMT.callComplete(work, 11);
|
|
2018
|
+
});
|
|
2019
|
+
return 0;
|
|
1709
2020
|
},
|
|
1710
2021
|
callComplete: function (work, status) {
|
|
2022
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1711
2023
|
var complete = emnapiAWMT.getComplete(work);
|
|
1712
2024
|
var env = emnapiAWMT.getEnv(work);
|
|
1713
2025
|
var data = emnapiAWMT.getData(work);
|
|
@@ -1725,7 +2037,7 @@ function createNapiModule(options) {
|
|
|
1725
2037
|
var resource = emnapiAWMT.getResource(work);
|
|
1726
2038
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1727
2039
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1728
|
-
var view = new DataView(
|
|
2040
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
1729
2041
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
1730
2042
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
1731
2043
|
emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
|
|
@@ -1742,6 +2054,7 @@ function createNapiModule(options) {
|
|
|
1742
2054
|
}
|
|
1743
2055
|
}
|
|
1744
2056
|
};
|
|
2057
|
+
emnapiAWMT.init();
|
|
1745
2058
|
var napi_create_async_work = singleThreadAsyncWork
|
|
1746
2059
|
? function (env, resource, resource_name, execute, complete, data, result) {
|
|
1747
2060
|
if (!env)
|
|
@@ -1763,8 +2076,9 @@ function createNapiModule(options) {
|
|
|
1763
2076
|
return envObject.setLastError(1);
|
|
1764
2077
|
var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
|
|
1765
2078
|
var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
|
|
2079
|
+
result >>>= 0;
|
|
1766
2080
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1767
|
-
HEAP_DATA_VIEW.
|
|
2081
|
+
HEAP_DATA_VIEW.setUint32(result, id, true);
|
|
1768
2082
|
return envObject.clearLastError();
|
|
1769
2083
|
}
|
|
1770
2084
|
: function (env, resource, resource_name, execute, complete, data, result) {
|
|
@@ -1789,18 +2103,21 @@ function createNapiModule(options) {
|
|
|
1789
2103
|
var aw = _malloc(sizeofAW);
|
|
1790
2104
|
if (!aw)
|
|
1791
2105
|
return envObject.setLastError(9);
|
|
1792
|
-
|
|
2106
|
+
aw >>>= 0;
|
|
2107
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
|
|
1793
2108
|
var s = envObject.ensureHandleId(resourceObject);
|
|
1794
2109
|
var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
|
|
1795
2110
|
var resource_ = resourceRef.id;
|
|
1796
2111
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1797
|
-
HEAP_DATA_VIEW.
|
|
2112
|
+
HEAP_DATA_VIEW.setUint32(aw, resource_, true);
|
|
1798
2113
|
_emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id);
|
|
1799
|
-
HEAP_DATA_VIEW.
|
|
1800
|
-
HEAP_DATA_VIEW.
|
|
1801
|
-
HEAP_DATA_VIEW.
|
|
1802
|
-
HEAP_DATA_VIEW.
|
|
1803
|
-
|
|
2114
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true);
|
|
2115
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
|
|
2116
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
|
|
2117
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
|
|
2118
|
+
emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
|
|
2119
|
+
result >>>= 0;
|
|
2120
|
+
HEAP_DATA_VIEW.setUint32(result, aw, true);
|
|
1804
2121
|
return envObject.clearLastError();
|
|
1805
2122
|
};
|
|
1806
2123
|
var napi_delete_async_work = singleThreadAsyncWork
|
|
@@ -1811,6 +2128,7 @@ function createNapiModule(options) {
|
|
|
1811
2128
|
envObject.checkGCAccess();
|
|
1812
2129
|
if (!work)
|
|
1813
2130
|
return envObject.setLastError(1);
|
|
2131
|
+
work >>>= 0;
|
|
1814
2132
|
emnapiAWST.remove(work);
|
|
1815
2133
|
return envObject.clearLastError();
|
|
1816
2134
|
}
|
|
@@ -1821,10 +2139,11 @@ function createNapiModule(options) {
|
|
|
1821
2139
|
envObject.checkGCAccess();
|
|
1822
2140
|
if (!work)
|
|
1823
2141
|
return envObject.setLastError(1);
|
|
2142
|
+
work >>>= 0;
|
|
1824
2143
|
var resource = emnapiAWMT.getResource(work);
|
|
1825
2144
|
emnapiCtx.refStore.get(resource).dispose();
|
|
1826
2145
|
if (emnapiNodeBinding) {
|
|
1827
|
-
var view = new DataView(
|
|
2146
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
1828
2147
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
1829
2148
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
1830
2149
|
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
@@ -1839,6 +2158,7 @@ function createNapiModule(options) {
|
|
|
1839
2158
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1840
2159
|
if (!work)
|
|
1841
2160
|
return envObject.setLastError(1);
|
|
2161
|
+
work >>>= 0;
|
|
1842
2162
|
emnapiAWST.queue(work);
|
|
1843
2163
|
return envObject.clearLastError();
|
|
1844
2164
|
}
|
|
@@ -1848,6 +2168,7 @@ function createNapiModule(options) {
|
|
|
1848
2168
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1849
2169
|
if (!work)
|
|
1850
2170
|
return envObject.setLastError(1);
|
|
2171
|
+
work >>>= 0;
|
|
1851
2172
|
emnapiAWMT.scheduleWork(work);
|
|
1852
2173
|
return envObject.clearLastError();
|
|
1853
2174
|
};
|
|
@@ -1858,6 +2179,7 @@ function createNapiModule(options) {
|
|
|
1858
2179
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1859
2180
|
if (!work)
|
|
1860
2181
|
return envObject.setLastError(1);
|
|
2182
|
+
work >>>= 0;
|
|
1861
2183
|
var status = emnapiAWST.cancel(work);
|
|
1862
2184
|
if (status === 0)
|
|
1863
2185
|
return envObject.clearLastError();
|
|
@@ -1869,41 +2191,125 @@ function createNapiModule(options) {
|
|
|
1869
2191
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1870
2192
|
if (!work)
|
|
1871
2193
|
return envObject.setLastError(1);
|
|
2194
|
+
work >>>= 0;
|
|
1872
2195
|
var status = emnapiAWMT.cancelWork(work);
|
|
1873
2196
|
if (status === 0)
|
|
1874
2197
|
return envObject.clearLastError();
|
|
1875
2198
|
return envObject.setLastError(status);
|
|
1876
2199
|
};
|
|
1877
|
-
function
|
|
2200
|
+
function _emnapi_async_worker(globalAddress) {
|
|
2201
|
+
globalAddress >>>= 0;
|
|
2202
|
+
emnapiAWMT.globalAddress = globalAddress;
|
|
2203
|
+
var mutex = emnapiAWMT.getMutex();
|
|
2204
|
+
var cond = emnapiAWMT.getCond();
|
|
2205
|
+
mutex.lock();
|
|
2206
|
+
var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
|
|
2207
|
+
var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
|
|
2208
|
+
var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
|
|
2209
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2210
|
+
for (;;) {
|
|
2211
|
+
emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
|
|
2212
|
+
while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
|
|
2213
|
+
Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2214
|
+
cond.wait();
|
|
2215
|
+
Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2216
|
+
}
|
|
2217
|
+
var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
|
|
2218
|
+
if (q === exitMessageAddr) {
|
|
2219
|
+
cond.signal();
|
|
2220
|
+
mutex.unlock();
|
|
2221
|
+
break;
|
|
2222
|
+
}
|
|
2223
|
+
var work = q - emnapiAWMT.offset.queue;
|
|
2224
|
+
emnapiAWMT.queueRemove(q);
|
|
2225
|
+
emnapiAWMT.queueInit(q);
|
|
2226
|
+
mutex.unlock();
|
|
2227
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
2228
|
+
if (Atomics.load(statusBuffer, 0) === 1) {
|
|
2229
|
+
abort('unreachable');
|
|
2230
|
+
}
|
|
2231
|
+
var execute = emnapiAWMT.getExecute(work);
|
|
2232
|
+
var env = emnapiAWMT.getEnv(work);
|
|
2233
|
+
var data = emnapiAWMT.getData(work);
|
|
2234
|
+
(wasmTable.get(execute))(env, data);
|
|
2235
|
+
Atomics.store(statusBuffer, 0, 2);
|
|
2236
|
+
var postMessage_1 = napiModule.postMessage;
|
|
2237
|
+
postMessage_1({
|
|
2238
|
+
__emnapi__: {
|
|
2239
|
+
type: 'async-work-complete',
|
|
2240
|
+
payload: { work: work }
|
|
2241
|
+
}
|
|
2242
|
+
});
|
|
2243
|
+
mutex.lock();
|
|
2244
|
+
}
|
|
2245
|
+
return 0;
|
|
2246
|
+
}
|
|
2247
|
+
function _emnapi_spawn_worker(f, globalAddress) {
|
|
2248
|
+
if (typeof onCreateWorker !== 'function') {
|
|
2249
|
+
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
2250
|
+
}
|
|
2251
|
+
var promises = [];
|
|
2252
|
+
var args = [];
|
|
2253
|
+
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
2254
|
+
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
2255
|
+
}
|
|
2256
|
+
args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
|
|
2257
|
+
var handleError = function (e) {
|
|
2258
|
+
if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
|
|
2259
|
+
emnapiAWMT.terminateWorkers();
|
|
2260
|
+
}
|
|
2261
|
+
};
|
|
2262
|
+
var ret;
|
|
2263
|
+
try {
|
|
2264
|
+
var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
|
|
2265
|
+
var p = PThread.loadWasmModuleToWorker(worker_1);
|
|
2266
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
2267
|
+
worker_1.on('error', handleError);
|
|
2268
|
+
}
|
|
2269
|
+
else {
|
|
2270
|
+
worker_1.addEventListener('error', handleError, false);
|
|
2271
|
+
}
|
|
2272
|
+
emnapiAWMT.addListener(worker_1);
|
|
2273
|
+
emnapiTSFN.addListener(worker_1);
|
|
2274
|
+
promises.push(p.then(function () {
|
|
2275
|
+
if (typeof worker_1.unref === 'function') {
|
|
2276
|
+
worker_1.unref();
|
|
2277
|
+
}
|
|
2278
|
+
}));
|
|
2279
|
+
ret = emnapiAWMT.pool.push(worker_1) - 1;
|
|
2280
|
+
var arg = args[0];
|
|
2281
|
+
worker_1.threadBlockBase = arg;
|
|
2282
|
+
worker_1.postMessage({
|
|
2283
|
+
__emnapi__: {
|
|
2284
|
+
type: 'async-worker-init',
|
|
2285
|
+
payload: { arg: arg, func: [f, globalAddress] }
|
|
2286
|
+
}
|
|
2287
|
+
});
|
|
2288
|
+
}
|
|
2289
|
+
catch (err) {
|
|
2290
|
+
var arg = args[0];
|
|
2291
|
+
_free(arg);
|
|
2292
|
+
throw err;
|
|
2293
|
+
}
|
|
2294
|
+
return ret;
|
|
2295
|
+
}
|
|
2296
|
+
function initWorker(startArg, func) {
|
|
1878
2297
|
if (napiModule.childThread) {
|
|
1879
2298
|
if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
|
|
1880
2299
|
throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
|
|
1881
2300
|
}
|
|
1882
2301
|
wasmInstance.exports.emnapi_async_worker_init(startArg);
|
|
2302
|
+
(wasmTable.get(func[0]))(func[1]);
|
|
1883
2303
|
}
|
|
1884
2304
|
else {
|
|
1885
2305
|
throw new Error('startThread is only available in child threads');
|
|
1886
2306
|
}
|
|
1887
2307
|
}
|
|
1888
|
-
function executeAsyncWork(work) {
|
|
1889
|
-
if (!ENVIRONMENT_IS_PTHREAD)
|
|
1890
|
-
return;
|
|
1891
|
-
var execute = emnapiAWMT.getExecute(work);
|
|
1892
|
-
var env = emnapiAWMT.getEnv(work);
|
|
1893
|
-
var data = emnapiAWMT.getData(work);
|
|
1894
|
-
(wasmTable.get(execute))(env, data);
|
|
1895
|
-
var postMessage = napiModule.postMessage;
|
|
1896
|
-
postMessage({
|
|
1897
|
-
__emnapi__: {
|
|
1898
|
-
type: 'async-work-complete',
|
|
1899
|
-
payload: { work: work }
|
|
1900
|
-
}
|
|
1901
|
-
});
|
|
1902
|
-
}
|
|
1903
2308
|
napiModule.initWorker = initWorker;
|
|
1904
|
-
napiModule.executeAsyncWork = executeAsyncWork;
|
|
1905
2309
|
var asyncWorkMod = Object.freeze({
|
|
1906
2310
|
__proto__: null,
|
|
2311
|
+
_emnapi_async_worker: _emnapi_async_worker,
|
|
2312
|
+
_emnapi_spawn_worker: _emnapi_spawn_worker,
|
|
1907
2313
|
napi_cancel_async_work: napi_cancel_async_work,
|
|
1908
2314
|
napi_create_async_work: napi_create_async_work,
|
|
1909
2315
|
napi_delete_async_work: napi_delete_async_work,
|
|
@@ -1918,6 +2324,10 @@ function createNapiModule(options) {
|
|
|
1918
2324
|
emnapiExternalMemory.table = new WeakMap();
|
|
1919
2325
|
emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
|
|
1920
2326
|
},
|
|
2327
|
+
isSharedArrayBuffer: function (value) {
|
|
2328
|
+
return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
|
|
2329
|
+
(Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
|
|
2330
|
+
},
|
|
1921
2331
|
isDetachedArrayBuffer: function (arrayBuffer) {
|
|
1922
2332
|
if (arrayBuffer.byteLength === 0) {
|
|
1923
2333
|
try {
|
|
@@ -1960,6 +2370,7 @@ function createNapiModule(options) {
|
|
|
1960
2370
|
var pointer = _malloc(arrayBuffer.byteLength);
|
|
1961
2371
|
if (!pointer)
|
|
1962
2372
|
throw new Error('Out of memory');
|
|
2373
|
+
pointer >>>= 0;
|
|
1963
2374
|
new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
|
|
1964
2375
|
info.address = pointer;
|
|
1965
2376
|
info.ownership = emnapiExternalMemory.registry ? 0 : 1;
|
|
@@ -1981,8 +2392,7 @@ function createNapiModule(options) {
|
|
|
1981
2392
|
}
|
|
1982
2393
|
return view;
|
|
1983
2394
|
}
|
|
1984
|
-
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
|
|
1985
|
-
((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
|
|
2395
|
+
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
|
|
1986
2396
|
if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
|
|
1987
2397
|
var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
|
|
1988
2398
|
var Ctor = info.Ctor;
|
|
@@ -2006,10 +2416,59 @@ function createNapiModule(options) {
|
|
|
2006
2416
|
var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated;
|
|
2007
2417
|
return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view };
|
|
2008
2418
|
}
|
|
2009
|
-
return { address: view.byteOffset, ownership: 1, runtimeAllocated: 0, view: view };
|
|
2419
|
+
return { address: view.byteOffset, ownership: 1, runtimeAllocated: 0, view: view };
|
|
2420
|
+
}
|
|
2421
|
+
var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated;
|
|
2422
|
+
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
2423
|
+
}
|
|
2424
|
+
};
|
|
2425
|
+
var emnapiExternalSAB = {
|
|
2426
|
+
registry: undefined,
|
|
2427
|
+
handleTable: new WeakMap(),
|
|
2428
|
+
init: function () {
|
|
2429
|
+
emnapiExternalSAB.handleTable = new WeakMap();
|
|
2430
|
+
emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
|
|
2431
|
+
? new FinalizationRegistry(function (metaPtr) {
|
|
2432
|
+
emnapiExternalSAB.release(metaPtr);
|
|
2433
|
+
})
|
|
2434
|
+
: undefined;
|
|
2435
|
+
},
|
|
2436
|
+
allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
|
|
2437
|
+
var size = 4 * 6;
|
|
2438
|
+
var metaPtr = _malloc(size);
|
|
2439
|
+
if (!metaPtr)
|
|
2440
|
+
throw new Error('Out of memory');
|
|
2441
|
+
metaPtr >>>= 0;
|
|
2442
|
+
Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2443
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2444
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
|
|
2445
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
|
|
2446
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
|
|
2447
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
|
|
2448
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
|
|
2449
|
+
return metaPtr;
|
|
2450
|
+
},
|
|
2451
|
+
readMeta: function (metaPtr) {
|
|
2452
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2453
|
+
var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
|
|
2454
|
+
var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
|
|
2455
|
+
var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
|
|
2456
|
+
var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
|
|
2457
|
+
var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
|
|
2458
|
+
return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
|
|
2459
|
+
},
|
|
2460
|
+
release: function (metaPtr) {
|
|
2461
|
+
var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2462
|
+
if (oldRefcount === 1) {
|
|
2463
|
+
var info = emnapiExternalSAB.readMeta(metaPtr);
|
|
2464
|
+
var finalize_cb = info.finalize_cb;
|
|
2465
|
+
if (finalize_cb) {
|
|
2466
|
+
var finalize_data = info.finalize_data;
|
|
2467
|
+
var finalize_hint = info.finalize_hint;
|
|
2468
|
+
(wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
|
|
2469
|
+
}
|
|
2470
|
+
_free(metaPtr);
|
|
2010
2471
|
}
|
|
2011
|
-
var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated;
|
|
2012
|
-
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
2013
2472
|
}
|
|
2014
2473
|
};
|
|
2015
2474
|
var emnapiString = {
|
|
@@ -2115,7 +2574,7 @@ function createNapiModule(options) {
|
|
|
2115
2574
|
ptr >>>= 0;
|
|
2116
2575
|
var HEAPU8 = new Uint8Array(wasmMemory.buffer);
|
|
2117
2576
|
var end = ptr;
|
|
2118
|
-
if (length === -1) {
|
|
2577
|
+
if (length === -1 || length === 4294967295) {
|
|
2119
2578
|
for (; HEAPU8[end];)
|
|
2120
2579
|
++end;
|
|
2121
2580
|
}
|
|
@@ -2206,12 +2665,12 @@ function createNapiModule(options) {
|
|
|
2206
2665
|
return '';
|
|
2207
2666
|
ptr >>>= 0;
|
|
2208
2667
|
var end = ptr;
|
|
2209
|
-
if (length === -1) {
|
|
2210
|
-
var idx = end
|
|
2668
|
+
if (length === -1 || length === 4294967295) {
|
|
2669
|
+
var idx = end >>> 1;
|
|
2211
2670
|
var HEAPU16 = new Uint16Array(wasmMemory.buffer);
|
|
2212
2671
|
while (HEAPU16[idx])
|
|
2213
2672
|
++idx;
|
|
2214
|
-
end = idx << 1;
|
|
2673
|
+
end = (idx << 1) >>> 0;
|
|
2215
2674
|
}
|
|
2216
2675
|
else {
|
|
2217
2676
|
end = ptr + (length >>> 0) * 2;
|
|
@@ -2242,11 +2701,12 @@ function createNapiModule(options) {
|
|
|
2242
2701
|
return outPtr - startPtr;
|
|
2243
2702
|
},
|
|
2244
2703
|
newString: function (env, str, length, result, stringMaker) {
|
|
2704
|
+
length >>>= 0;
|
|
2245
2705
|
if (!env)
|
|
2246
2706
|
return 1;
|
|
2247
2707
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2248
2708
|
envObject.checkGCAccess();
|
|
2249
|
-
var autoLength = length === -1;
|
|
2709
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2250
2710
|
var sizelength = length >>> 0;
|
|
2251
2711
|
if (length !== 0) {
|
|
2252
2712
|
if (!str)
|
|
@@ -2256,18 +2716,21 @@ function createNapiModule(options) {
|
|
|
2256
2716
|
return envObject.setLastError(1);
|
|
2257
2717
|
if (!(autoLength || (sizelength <= 2147483647)))
|
|
2258
2718
|
return envObject.setLastError(1);
|
|
2719
|
+
str >>>= 0;
|
|
2259
2720
|
var strValue = stringMaker(str, autoLength, sizelength);
|
|
2721
|
+
result >>>= 0;
|
|
2260
2722
|
var value = emnapiCtx.addToCurrentScope(strValue).id;
|
|
2261
2723
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2262
|
-
HEAP_DATA_VIEW.
|
|
2724
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
2263
2725
|
return envObject.clearLastError();
|
|
2264
2726
|
},
|
|
2265
2727
|
newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
|
|
2728
|
+
length >>>= 0;
|
|
2266
2729
|
if (!env)
|
|
2267
2730
|
return 1;
|
|
2268
2731
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2269
2732
|
envObject.checkGCAccess();
|
|
2270
|
-
var autoLength = length === -1;
|
|
2733
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2271
2734
|
var sizelength = length >>> 0;
|
|
2272
2735
|
if (length !== 0) {
|
|
2273
2736
|
if (!str)
|
|
@@ -2309,6 +2772,7 @@ function createNapiModule(options) {
|
|
|
2309
2772
|
if (!handle.isArray()) {
|
|
2310
2773
|
return envObject.setLastError(8);
|
|
2311
2774
|
}
|
|
2775
|
+
result >>>= 0;
|
|
2312
2776
|
var v = handle.value.length >>> 0;
|
|
2313
2777
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2314
2778
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2327,19 +2791,55 @@ function createNapiModule(options) {
|
|
|
2327
2791
|
if (!arraybuffer)
|
|
2328
2792
|
return envObject.setLastError(1);
|
|
2329
2793
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
2330
|
-
if (!handle.isArrayBuffer()) {
|
|
2794
|
+
if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
2331
2795
|
return envObject.setLastError(1);
|
|
2332
2796
|
}
|
|
2333
2797
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2334
2798
|
if (data) {
|
|
2799
|
+
data >>>= 0;
|
|
2335
2800
|
var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
|
|
2336
|
-
HEAP_DATA_VIEW.
|
|
2801
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2337
2802
|
}
|
|
2338
2803
|
if (byte_length) {
|
|
2804
|
+
byte_length >>>= 0;
|
|
2339
2805
|
HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
|
|
2340
2806
|
}
|
|
2341
2807
|
return envObject.clearLastError();
|
|
2342
2808
|
}
|
|
2809
|
+
function node_api_set_prototype(env, object, value) {
|
|
2810
|
+
if (!env)
|
|
2811
|
+
return 1;
|
|
2812
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
2813
|
+
envObject.checkGCAccess();
|
|
2814
|
+
if (!envObject.tryCatch.isEmpty())
|
|
2815
|
+
return envObject.setLastError(10);
|
|
2816
|
+
if (!envObject.canCallIntoJs())
|
|
2817
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
2818
|
+
envObject.clearLastError();
|
|
2819
|
+
try {
|
|
2820
|
+
if (!value)
|
|
2821
|
+
return envObject.setLastError(1);
|
|
2822
|
+
var obj = emnapiCtx.handleStore.get(object).value;
|
|
2823
|
+
if (obj == null) {
|
|
2824
|
+
throw new TypeError('Cannot convert undefined or null to object');
|
|
2825
|
+
}
|
|
2826
|
+
var type = typeof obj;
|
|
2827
|
+
var v = void 0;
|
|
2828
|
+
try {
|
|
2829
|
+
v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
|
|
2830
|
+
}
|
|
2831
|
+
catch (_) {
|
|
2832
|
+
return envObject.setLastError(2);
|
|
2833
|
+
}
|
|
2834
|
+
var val = emnapiCtx.handleStore.get(value).value;
|
|
2835
|
+
Object.setPrototypeOf(v, val);
|
|
2836
|
+
return envObject.getReturnStatus();
|
|
2837
|
+
}
|
|
2838
|
+
catch (err) {
|
|
2839
|
+
envObject.tryCatch.setError(err);
|
|
2840
|
+
return envObject.setLastError(10);
|
|
2841
|
+
}
|
|
2842
|
+
}
|
|
2343
2843
|
function napi_get_prototype(env, value, result) {
|
|
2344
2844
|
if (!env)
|
|
2345
2845
|
return 1;
|
|
@@ -2366,9 +2866,10 @@ function createNapiModule(options) {
|
|
|
2366
2866
|
catch (_) {
|
|
2367
2867
|
return envObject.setLastError(2);
|
|
2368
2868
|
}
|
|
2869
|
+
result >>>= 0;
|
|
2369
2870
|
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
2370
2871
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2371
|
-
HEAP_DATA_VIEW.
|
|
2872
|
+
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
2372
2873
|
return envObject.getReturnStatus();
|
|
2373
2874
|
}
|
|
2374
2875
|
catch (err) {
|
|
@@ -2390,6 +2891,7 @@ function createNapiModule(options) {
|
|
|
2390
2891
|
var v = handle.value;
|
|
2391
2892
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2392
2893
|
if (type) {
|
|
2894
|
+
type >>>= 0;
|
|
2393
2895
|
var t = void 0;
|
|
2394
2896
|
if (v instanceof Int8Array) {
|
|
2395
2897
|
t = 0;
|
|
@@ -2412,6 +2914,9 @@ function createNapiModule(options) {
|
|
|
2412
2914
|
else if (v instanceof Uint32Array) {
|
|
2413
2915
|
t = 6;
|
|
2414
2916
|
}
|
|
2917
|
+
else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
|
|
2918
|
+
t = 11;
|
|
2919
|
+
}
|
|
2415
2920
|
else if (v instanceof Float32Array) {
|
|
2416
2921
|
t = 7;
|
|
2417
2922
|
}
|
|
@@ -2429,22 +2934,25 @@ function createNapiModule(options) {
|
|
|
2429
2934
|
}
|
|
2430
2935
|
HEAP_DATA_VIEW.setInt32(type, t, true);
|
|
2431
2936
|
}
|
|
2937
|
+
v = emnapiExternalMemory.getOrUpdateMemoryView(v);
|
|
2432
2938
|
if (length) {
|
|
2939
|
+
length >>>= 0;
|
|
2433
2940
|
HEAP_DATA_VIEW.setUint32(length, v.length, true);
|
|
2434
2941
|
}
|
|
2435
|
-
var buffer;
|
|
2436
2942
|
if (data || arraybuffer) {
|
|
2437
|
-
buffer = v.buffer;
|
|
2438
2943
|
if (data) {
|
|
2944
|
+
data >>>= 0;
|
|
2439
2945
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2440
|
-
HEAP_DATA_VIEW.
|
|
2946
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2441
2947
|
}
|
|
2442
2948
|
if (arraybuffer) {
|
|
2443
|
-
|
|
2444
|
-
|
|
2949
|
+
arraybuffer >>>= 0;
|
|
2950
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2951
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2445
2952
|
}
|
|
2446
2953
|
}
|
|
2447
2954
|
if (byte_offset) {
|
|
2955
|
+
byte_offset >>>= 0;
|
|
2448
2956
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2449
2957
|
}
|
|
2450
2958
|
return envObject.clearLastError();
|
|
@@ -2475,24 +2983,26 @@ function createNapiModule(options) {
|
|
|
2475
2983
|
if (!handle.isDataView()) {
|
|
2476
2984
|
return envObject.setLastError(1);
|
|
2477
2985
|
}
|
|
2478
|
-
var v = handle.value;
|
|
2986
|
+
var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
|
|
2479
2987
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2480
2988
|
if (byte_length) {
|
|
2989
|
+
byte_length >>>= 0;
|
|
2481
2990
|
HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
|
|
2482
2991
|
}
|
|
2483
|
-
var buffer;
|
|
2484
2992
|
if (data || arraybuffer) {
|
|
2485
|
-
buffer = v.buffer;
|
|
2486
2993
|
if (data) {
|
|
2994
|
+
data >>>= 0;
|
|
2487
2995
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2488
|
-
HEAP_DATA_VIEW.
|
|
2996
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2489
2997
|
}
|
|
2490
2998
|
if (arraybuffer) {
|
|
2491
|
-
|
|
2492
|
-
|
|
2999
|
+
arraybuffer >>>= 0;
|
|
3000
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
3001
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2493
3002
|
}
|
|
2494
3003
|
}
|
|
2495
3004
|
if (byte_offset) {
|
|
3005
|
+
byte_offset >>>= 0;
|
|
2496
3006
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2497
3007
|
}
|
|
2498
3008
|
return envObject.clearLastError();
|
|
@@ -2517,6 +3027,7 @@ function createNapiModule(options) {
|
|
|
2517
3027
|
if (!handle.isDate()) {
|
|
2518
3028
|
return envObject.setLastError(1);
|
|
2519
3029
|
}
|
|
3030
|
+
result >>>= 0;
|
|
2520
3031
|
v = handle.value.valueOf();
|
|
2521
3032
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2522
3033
|
HEAP_DATA_VIEW.setFloat64(result, v, true);
|
|
@@ -2540,6 +3051,7 @@ function createNapiModule(options) {
|
|
|
2540
3051
|
if (typeof handle.value !== 'boolean') {
|
|
2541
3052
|
return envObject.setLastError(7);
|
|
2542
3053
|
}
|
|
3054
|
+
result >>>= 0;
|
|
2543
3055
|
var r = handle.value ? 1 : 0;
|
|
2544
3056
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2545
3057
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -2558,6 +3070,7 @@ function createNapiModule(options) {
|
|
|
2558
3070
|
if (typeof handle.value !== 'number') {
|
|
2559
3071
|
return envObject.setLastError(6);
|
|
2560
3072
|
}
|
|
3073
|
+
result >>>= 0;
|
|
2561
3074
|
var r = handle.value;
|
|
2562
3075
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2563
3076
|
HEAP_DATA_VIEW.setFloat64(result, r, true);
|
|
@@ -2582,6 +3095,8 @@ function createNapiModule(options) {
|
|
|
2582
3095
|
if (typeof numberValue !== 'bigint') {
|
|
2583
3096
|
return envObject.setLastError(6);
|
|
2584
3097
|
}
|
|
3098
|
+
lossless >>>= 0;
|
|
3099
|
+
result >>>= 0;
|
|
2585
3100
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2586
3101
|
if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
|
|
2587
3102
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2618,6 +3133,8 @@ function createNapiModule(options) {
|
|
|
2618
3133
|
if (typeof numberValue !== 'bigint') {
|
|
2619
3134
|
return envObject.setLastError(6);
|
|
2620
3135
|
}
|
|
3136
|
+
lossless >>>= 0;
|
|
3137
|
+
result >>>= 0;
|
|
2621
3138
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2622
3139
|
if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
|
|
2623
3140
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2649,8 +3166,12 @@ function createNapiModule(options) {
|
|
|
2649
3166
|
return envObject.setLastError(17);
|
|
2650
3167
|
}
|
|
2651
3168
|
var isMinus = handle.value < BigInt(0);
|
|
3169
|
+
sign_bit >>>= 0;
|
|
3170
|
+
words >>>= 0;
|
|
3171
|
+
word_count >>>= 0;
|
|
2652
3172
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2653
3173
|
var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
|
|
3174
|
+
word_count_int >>>= 0;
|
|
2654
3175
|
var wordCount = 0;
|
|
2655
3176
|
var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
|
|
2656
3177
|
while (bigintValue !== BigInt(0)) {
|
|
@@ -2698,9 +3219,10 @@ function createNapiModule(options) {
|
|
|
2698
3219
|
if (!handle.isExternal()) {
|
|
2699
3220
|
return envObject.setLastError(1);
|
|
2700
3221
|
}
|
|
3222
|
+
result >>>= 0;
|
|
2701
3223
|
var p = handle.data();
|
|
2702
3224
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2703
|
-
HEAP_DATA_VIEW.
|
|
3225
|
+
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
2704
3226
|
return envObject.clearLastError();
|
|
2705
3227
|
}
|
|
2706
3228
|
function napi_get_value_int32(env, value, result) {
|
|
@@ -2716,6 +3238,7 @@ function createNapiModule(options) {
|
|
|
2716
3238
|
if (typeof handle.value !== 'number') {
|
|
2717
3239
|
return envObject.setLastError(6);
|
|
2718
3240
|
}
|
|
3241
|
+
result >>>= 0;
|
|
2719
3242
|
var v = new Int32Array([handle.value])[0];
|
|
2720
3243
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2721
3244
|
HEAP_DATA_VIEW.setInt32(result, v, true);
|
|
@@ -2735,6 +3258,7 @@ function createNapiModule(options) {
|
|
|
2735
3258
|
return envObject.setLastError(6);
|
|
2736
3259
|
}
|
|
2737
3260
|
var numberValue = handle.value;
|
|
3261
|
+
result >>>= 0;
|
|
2738
3262
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2739
3263
|
if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
|
|
2740
3264
|
HEAP_DATA_VIEW.setInt32(result, 0, true);
|
|
@@ -2760,6 +3284,9 @@ function createNapiModule(options) {
|
|
|
2760
3284
|
envObject.checkGCAccess();
|
|
2761
3285
|
if (!value)
|
|
2762
3286
|
return envObject.setLastError(1);
|
|
3287
|
+
result >>>= 0;
|
|
3288
|
+
buf >>>= 0;
|
|
3289
|
+
buf_size >>>= 0;
|
|
2763
3290
|
buf_size = buf_size >>> 0;
|
|
2764
3291
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2765
3292
|
if (typeof handle.value !== 'string') {
|
|
@@ -2796,6 +3323,9 @@ function createNapiModule(options) {
|
|
|
2796
3323
|
envObject.checkGCAccess();
|
|
2797
3324
|
if (!value)
|
|
2798
3325
|
return envObject.setLastError(1);
|
|
3326
|
+
result >>>= 0;
|
|
3327
|
+
buf >>>= 0;
|
|
3328
|
+
buf_size >>>= 0;
|
|
2799
3329
|
buf_size = buf_size >>> 0;
|
|
2800
3330
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2801
3331
|
if (typeof handle.value !== 'string') {
|
|
@@ -2826,6 +3356,9 @@ function createNapiModule(options) {
|
|
|
2826
3356
|
envObject.checkGCAccess();
|
|
2827
3357
|
if (!value)
|
|
2828
3358
|
return envObject.setLastError(1);
|
|
3359
|
+
result >>>= 0;
|
|
3360
|
+
buf >>>= 0;
|
|
3361
|
+
buf_size >>>= 0;
|
|
2829
3362
|
buf_size = buf_size >>> 0;
|
|
2830
3363
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2831
3364
|
if (typeof handle.value !== 'string') {
|
|
@@ -2861,6 +3394,7 @@ function createNapiModule(options) {
|
|
|
2861
3394
|
if (typeof handle.value !== 'number') {
|
|
2862
3395
|
return envObject.setLastError(6);
|
|
2863
3396
|
}
|
|
3397
|
+
result >>>= 0;
|
|
2864
3398
|
var v = new Uint32Array([handle.value])[0];
|
|
2865
3399
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2866
3400
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2886,7 +3420,8 @@ function createNapiModule(options) {
|
|
|
2886
3420
|
napi_get_value_string_latin1: napi_get_value_string_latin1,
|
|
2887
3421
|
napi_get_value_string_utf16: napi_get_value_string_utf16,
|
|
2888
3422
|
napi_get_value_string_utf8: napi_get_value_string_utf8,
|
|
2889
|
-
napi_get_value_uint32: napi_get_value_uint32
|
|
3423
|
+
napi_get_value_uint32: napi_get_value_uint32,
|
|
3424
|
+
node_api_set_prototype: node_api_set_prototype
|
|
2890
3425
|
});
|
|
2891
3426
|
function napi_create_int32(env, value, result) {
|
|
2892
3427
|
if (!env)
|
|
@@ -2895,9 +3430,10 @@ function createNapiModule(options) {
|
|
|
2895
3430
|
envObject.checkGCAccess();
|
|
2896
3431
|
if (!result)
|
|
2897
3432
|
return envObject.setLastError(1);
|
|
3433
|
+
result >>>= 0;
|
|
2898
3434
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2899
3435
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2900
|
-
HEAP_DATA_VIEW.
|
|
3436
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
2901
3437
|
return envObject.clearLastError();
|
|
2902
3438
|
}
|
|
2903
3439
|
function napi_create_uint32(env, value, result) {
|
|
@@ -2907,9 +3443,10 @@ function createNapiModule(options) {
|
|
|
2907
3443
|
envObject.checkGCAccess();
|
|
2908
3444
|
if (!result)
|
|
2909
3445
|
return envObject.setLastError(1);
|
|
3446
|
+
result >>>= 0;
|
|
2910
3447
|
var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
|
|
2911
3448
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2912
|
-
HEAP_DATA_VIEW.
|
|
3449
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
2913
3450
|
return envObject.clearLastError();
|
|
2914
3451
|
}
|
|
2915
3452
|
function napi_create_int64(env, low, high, result) {
|
|
@@ -2922,8 +3459,9 @@ function createNapiModule(options) {
|
|
|
2922
3459
|
return envObject.setLastError(1);
|
|
2923
3460
|
value = Number(low);
|
|
2924
3461
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3462
|
+
high >>>= 0;
|
|
2925
3463
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2926
|
-
HEAP_DATA_VIEW.
|
|
3464
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
2927
3465
|
return envObject.clearLastError();
|
|
2928
3466
|
}
|
|
2929
3467
|
function napi_create_double(env, value, result) {
|
|
@@ -2933,9 +3471,10 @@ function createNapiModule(options) {
|
|
|
2933
3471
|
envObject.checkGCAccess();
|
|
2934
3472
|
if (!result)
|
|
2935
3473
|
return envObject.setLastError(1);
|
|
3474
|
+
result >>>= 0;
|
|
2936
3475
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2937
3476
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2938
|
-
HEAP_DATA_VIEW.
|
|
3477
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
2939
3478
|
return envObject.clearLastError();
|
|
2940
3479
|
}
|
|
2941
3480
|
function napi_create_string_latin1(env, str, length, result) {
|
|
@@ -3003,8 +3542,9 @@ function createNapiModule(options) {
|
|
|
3003
3542
|
return envObject.setLastError(1);
|
|
3004
3543
|
value = low;
|
|
3005
3544
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3545
|
+
high >>>= 0;
|
|
3006
3546
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3007
|
-
HEAP_DATA_VIEW.
|
|
3547
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3008
3548
|
return envObject.clearLastError();
|
|
3009
3549
|
}
|
|
3010
3550
|
function napi_create_bigint_uint64(env, low, high, result) {
|
|
@@ -3020,8 +3560,9 @@ function createNapiModule(options) {
|
|
|
3020
3560
|
return envObject.setLastError(1);
|
|
3021
3561
|
value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
|
|
3022
3562
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3563
|
+
high >>>= 0;
|
|
3023
3564
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3024
|
-
HEAP_DATA_VIEW.
|
|
3565
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3025
3566
|
return envObject.clearLastError();
|
|
3026
3567
|
}
|
|
3027
3568
|
function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
|
|
@@ -3041,6 +3582,8 @@ function createNapiModule(options) {
|
|
|
3041
3582
|
}
|
|
3042
3583
|
if (!result)
|
|
3043
3584
|
return envObject.setLastError(1);
|
|
3585
|
+
words >>>= 0;
|
|
3586
|
+
word_count >>>= 0;
|
|
3044
3587
|
word_count = word_count >>> 0;
|
|
3045
3588
|
if (word_count > 2147483647) {
|
|
3046
3589
|
return envObject.setLastError(1);
|
|
@@ -3057,8 +3600,9 @@ function createNapiModule(options) {
|
|
|
3057
3600
|
value += wordi << BigInt(64 * i);
|
|
3058
3601
|
}
|
|
3059
3602
|
value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
|
|
3603
|
+
result >>>= 0;
|
|
3060
3604
|
v = emnapiCtx.addToCurrentScope(value).id;
|
|
3061
|
-
HEAP_DATA_VIEW.
|
|
3605
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3062
3606
|
return envObject.getReturnStatus();
|
|
3063
3607
|
}
|
|
3064
3608
|
catch (err) {
|
|
@@ -3085,6 +3629,7 @@ function createNapiModule(options) {
|
|
|
3085
3629
|
node_api_create_property_key_utf8: node_api_create_property_key_utf8
|
|
3086
3630
|
});
|
|
3087
3631
|
function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
|
|
3632
|
+
utf8name >>>= 0;
|
|
3088
3633
|
var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
|
|
3089
3634
|
var f;
|
|
3090
3635
|
var napiCallback = (wasmTable.get(cb));
|
|
@@ -3225,9 +3770,10 @@ function createNapiModule(options) {
|
|
|
3225
3770
|
if (!finalize_cb)
|
|
3226
3771
|
return envObject.setLastError(1);
|
|
3227
3772
|
reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
|
|
3773
|
+
result >>>= 0;
|
|
3228
3774
|
referenceId = reference.id;
|
|
3229
3775
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3230
|
-
HEAP_DATA_VIEW.
|
|
3776
|
+
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
3231
3777
|
}
|
|
3232
3778
|
else {
|
|
3233
3779
|
if (finalize_cb) {
|
|
@@ -3273,9 +3819,10 @@ function createNapiModule(options) {
|
|
|
3273
3819
|
if (!ref)
|
|
3274
3820
|
return envObject.setLastError(1);
|
|
3275
3821
|
if (result) {
|
|
3822
|
+
result >>>= 0;
|
|
3276
3823
|
data = ref.data();
|
|
3277
3824
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3278
|
-
HEAP_DATA_VIEW.
|
|
3825
|
+
HEAP_DATA_VIEW.setUint32(result, data, true);
|
|
3279
3826
|
}
|
|
3280
3827
|
if (action === 1) {
|
|
3281
3828
|
binding.wrapped = 0;
|
|
@@ -3309,12 +3856,15 @@ function createNapiModule(options) {
|
|
|
3309
3856
|
return envObject.setLastError(1);
|
|
3310
3857
|
if (!constructor)
|
|
3311
3858
|
return envObject.setLastError(1);
|
|
3859
|
+
length >>>= 0;
|
|
3860
|
+
properties >>>= 0;
|
|
3861
|
+
property_count >>>= 0;
|
|
3312
3862
|
property_count = property_count >>> 0;
|
|
3313
3863
|
if (property_count > 0) {
|
|
3314
3864
|
if (!properties)
|
|
3315
3865
|
return envObject.setLastError(1);
|
|
3316
3866
|
}
|
|
3317
|
-
if ((length
|
|
3867
|
+
if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
|
|
3318
3868
|
return envObject.setLastError(1);
|
|
3319
3869
|
}
|
|
3320
3870
|
var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
|
|
@@ -3325,14 +3875,15 @@ function createNapiModule(options) {
|
|
|
3325
3875
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3326
3876
|
for (var i = 0; i < property_count; i++) {
|
|
3327
3877
|
propPtr = properties + (i * (4 * 8));
|
|
3328
|
-
var utf8Name = HEAP_DATA_VIEW.
|
|
3329
|
-
var name_1 = HEAP_DATA_VIEW.
|
|
3330
|
-
var method = HEAP_DATA_VIEW.
|
|
3331
|
-
var getter = HEAP_DATA_VIEW.
|
|
3332
|
-
var setter = HEAP_DATA_VIEW.
|
|
3333
|
-
var value = HEAP_DATA_VIEW.
|
|
3878
|
+
var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
|
|
3879
|
+
var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
|
|
3880
|
+
var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
|
|
3881
|
+
var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
|
|
3882
|
+
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
3883
|
+
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
3334
3884
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
3335
|
-
|
|
3885
|
+
attributes >>>= 0;
|
|
3886
|
+
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
3336
3887
|
if (utf8Name) {
|
|
3337
3888
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
3338
3889
|
}
|
|
@@ -3353,7 +3904,8 @@ function createNapiModule(options) {
|
|
|
3353
3904
|
}
|
|
3354
3905
|
var valueHandle = emnapiCtx.addToCurrentScope(F);
|
|
3355
3906
|
valueHandleId = valueHandle.id;
|
|
3356
|
-
|
|
3907
|
+
result >>>= 0;
|
|
3908
|
+
HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
|
|
3357
3909
|
return envObject.getReturnStatus();
|
|
3358
3910
|
}
|
|
3359
3911
|
catch (err) {
|
|
@@ -3388,6 +3940,7 @@ function createNapiModule(options) {
|
|
|
3388
3940
|
if (!(value.isObject() || value.isFunction())) {
|
|
3389
3941
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
|
|
3390
3942
|
}
|
|
3943
|
+
type_tag >>>= 0;
|
|
3391
3944
|
if (!type_tag) {
|
|
3392
3945
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
|
|
3393
3946
|
}
|
|
@@ -3432,6 +3985,7 @@ function createNapiModule(options) {
|
|
|
3432
3985
|
}
|
|
3433
3986
|
var binding = envObject.getObjectBinding(value.value);
|
|
3434
3987
|
if (binding.tag !== null) {
|
|
3988
|
+
type_tag >>>= 0;
|
|
3435
3989
|
var tag = binding.tag;
|
|
3436
3990
|
var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
|
|
3437
3991
|
ret = (tag[0] === typeTag[0] &&
|
|
@@ -3442,6 +3996,7 @@ function createNapiModule(options) {
|
|
|
3442
3996
|
else {
|
|
3443
3997
|
ret = false;
|
|
3444
3998
|
}
|
|
3999
|
+
result >>>= 0;
|
|
3445
4000
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3446
4001
|
HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
|
|
3447
4002
|
return envObject.getReturnStatus();
|
|
@@ -3469,11 +4024,15 @@ function createNapiModule(options) {
|
|
|
3469
4024
|
}
|
|
3470
4025
|
var handle = handleResult.handle;
|
|
3471
4026
|
var ownership = !result ? 0 : 1;
|
|
4027
|
+
finalize_data >>>= 0;
|
|
4028
|
+
finalize_cb >>>= 0;
|
|
4029
|
+
finalize_hint >>>= 0;
|
|
3472
4030
|
var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
|
|
3473
4031
|
if (result) {
|
|
4032
|
+
result >>>= 0;
|
|
3474
4033
|
var referenceId = reference.id;
|
|
3475
4034
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3476
|
-
HEAP_DATA_VIEW.
|
|
4035
|
+
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
3477
4036
|
}
|
|
3478
4037
|
return envObject.clearLastError();
|
|
3479
4038
|
}
|
|
@@ -3509,6 +4068,9 @@ function createNapiModule(options) {
|
|
|
3509
4068
|
try {
|
|
3510
4069
|
if (!result)
|
|
3511
4070
|
return envObject.setLastError(1);
|
|
4071
|
+
byte_length >>>= 0;
|
|
4072
|
+
external_data >>>= 0;
|
|
4073
|
+
result >>>= 0;
|
|
3512
4074
|
byte_length = byte_length >>> 0;
|
|
3513
4075
|
if (!external_data) {
|
|
3514
4076
|
byte_length = 0;
|
|
@@ -3560,6 +4122,12 @@ function createNapiModule(options) {
|
|
|
3560
4122
|
case -1:
|
|
3561
4123
|
viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 };
|
|
3562
4124
|
break;
|
|
4125
|
+
case 11:
|
|
4126
|
+
if (typeof Float16Array !== 'function') {
|
|
4127
|
+
return envObject.setLastError(1);
|
|
4128
|
+
}
|
|
4129
|
+
viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 };
|
|
4130
|
+
break;
|
|
3563
4131
|
case -2: {
|
|
3564
4132
|
if (!emnapiCtx.feature.Buffer) {
|
|
3565
4133
|
throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
|
|
@@ -3588,7 +4156,7 @@ function createNapiModule(options) {
|
|
|
3588
4156
|
}
|
|
3589
4157
|
value = handle.id;
|
|
3590
4158
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3591
|
-
HEAP_DATA_VIEW.
|
|
4159
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3592
4160
|
return envObject.getReturnStatus();
|
|
3593
4161
|
}
|
|
3594
4162
|
catch (err) {
|
|
@@ -3609,11 +4177,11 @@ function createNapiModule(options) {
|
|
|
3609
4177
|
offset = offset !== null && offset !== void 0 ? offset : 0;
|
|
3610
4178
|
offset = offset >>> 0;
|
|
3611
4179
|
var view;
|
|
3612
|
-
if (arrayBufferOrView instanceof ArrayBuffer) {
|
|
4180
|
+
if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
3613
4181
|
var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
|
|
3614
4182
|
if (!pointer)
|
|
3615
4183
|
throw new Error('Unknown ArrayBuffer address');
|
|
3616
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4184
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3617
4185
|
len = arrayBufferOrView.byteLength - offset;
|
|
3618
4186
|
}
|
|
3619
4187
|
len = len >>> 0;
|
|
@@ -3635,7 +4203,7 @@ function createNapiModule(options) {
|
|
|
3635
4203
|
var pointer = viewPointerInfo.address;
|
|
3636
4204
|
if (!pointer)
|
|
3637
4205
|
throw new Error('Unknown ArrayBuffer address');
|
|
3638
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4206
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3639
4207
|
len = latestView.byteLength - offset;
|
|
3640
4208
|
}
|
|
3641
4209
|
len = len >>> 0;
|
|
@@ -3667,16 +4235,20 @@ function createNapiModule(options) {
|
|
|
3667
4235
|
try {
|
|
3668
4236
|
if (!arraybuffer_or_view)
|
|
3669
4237
|
return envObject.setLastError(1);
|
|
4238
|
+
arraybuffer_or_view >>>= 0;
|
|
4239
|
+
offset >>>= 0;
|
|
4240
|
+
len >>>= 0;
|
|
3670
4241
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3671
|
-
var handleId = HEAP_DATA_VIEW.
|
|
4242
|
+
var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
|
|
3672
4243
|
var handle = envObject.ctx.handleStore.get(handleId);
|
|
3673
|
-
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView()) {
|
|
4244
|
+
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
3674
4245
|
return envObject.setLastError(1);
|
|
3675
4246
|
}
|
|
3676
4247
|
var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
|
|
3677
4248
|
if (handle.value !== ret) {
|
|
4249
|
+
arraybuffer_or_view >>>= 0;
|
|
3678
4250
|
v = envObject.ensureHandleId(ret);
|
|
3679
|
-
HEAP_DATA_VIEW.
|
|
4251
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
|
|
3680
4252
|
}
|
|
3681
4253
|
return envObject.getReturnStatus();
|
|
3682
4254
|
}
|
|
@@ -3689,7 +4261,7 @@ function createNapiModule(options) {
|
|
|
3689
4261
|
var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer;
|
|
3690
4262
|
var isDataView = arrayBufferOrView instanceof DataView;
|
|
3691
4263
|
var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView;
|
|
3692
|
-
if (!isArrayBuffer && !isTypedArray && !isDataView) {
|
|
4264
|
+
if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
3693
4265
|
throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter');
|
|
3694
4266
|
}
|
|
3695
4267
|
var info;
|
|
@@ -3728,13 +4300,16 @@ function createNapiModule(options) {
|
|
|
3728
4300
|
p = info.address;
|
|
3729
4301
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3730
4302
|
if (address) {
|
|
3731
|
-
|
|
4303
|
+
address >>>= 0;
|
|
4304
|
+
HEAP_DATA_VIEW.setUint32(address, p, true);
|
|
3732
4305
|
}
|
|
3733
4306
|
if (ownership) {
|
|
4307
|
+
ownership >>>= 0;
|
|
3734
4308
|
ownershipOut = info.ownership;
|
|
3735
4309
|
HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
|
|
3736
4310
|
}
|
|
3737
4311
|
if (runtime_allocated) {
|
|
4312
|
+
runtime_allocated >>>= 0;
|
|
3738
4313
|
runtimeAllocated = info.runtimeAllocated;
|
|
3739
4314
|
HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
|
|
3740
4315
|
}
|
|
@@ -3760,22 +4335,102 @@ function createNapiModule(options) {
|
|
|
3760
4335
|
}
|
|
3761
4336
|
var versions = runtimeVersion.split('.')
|
|
3762
4337
|
.map(function (n) { return Number(n); });
|
|
4338
|
+
version >>>= 0;
|
|
3763
4339
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3764
4340
|
HEAP_DATA_VIEW.setUint32(version, versions[0], true);
|
|
3765
4341
|
HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
|
|
3766
4342
|
HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
|
|
3767
4343
|
return envObject.clearLastError();
|
|
3768
4344
|
}
|
|
4345
|
+
function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
|
|
4346
|
+
if (!env)
|
|
4347
|
+
return 1;
|
|
4348
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4349
|
+
envObject.checkGCAccess();
|
|
4350
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4351
|
+
return envObject.setLastError(10);
|
|
4352
|
+
if (!envObject.canCallIntoJs())
|
|
4353
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4354
|
+
envObject.clearLastError();
|
|
4355
|
+
try {
|
|
4356
|
+
if (!sharedarraybuffer)
|
|
4357
|
+
return envObject.setLastError(1);
|
|
4358
|
+
if (!handle)
|
|
4359
|
+
return envObject.setLastError(1);
|
|
4360
|
+
handle >>>= 0;
|
|
4361
|
+
var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
|
|
4362
|
+
if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
|
|
4363
|
+
return envObject.setLastError(1);
|
|
4364
|
+
}
|
|
4365
|
+
var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
|
|
4366
|
+
if (metaPtr === undefined) {
|
|
4367
|
+
return envObject.setLastError(1);
|
|
4368
|
+
}
|
|
4369
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4370
|
+
HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
|
|
4371
|
+
return envObject.getReturnStatus();
|
|
4372
|
+
}
|
|
4373
|
+
catch (err) {
|
|
4374
|
+
envObject.tryCatch.setError(err);
|
|
4375
|
+
return envObject.setLastError(10);
|
|
4376
|
+
}
|
|
4377
|
+
}
|
|
4378
|
+
function emnapi_acquire_external_sharedarraybuffer(handle) {
|
|
4379
|
+
handle >>>= 0;
|
|
4380
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4381
|
+
}
|
|
4382
|
+
function emnapi_release_external_sharedarraybuffer(handle) {
|
|
4383
|
+
handle >>>= 0;
|
|
4384
|
+
emnapiExternalSAB.release(handle);
|
|
4385
|
+
}
|
|
4386
|
+
function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
|
|
4387
|
+
if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
|
|
4388
|
+
throw new TypeError('Expected a SharedArrayBuffer');
|
|
4389
|
+
}
|
|
4390
|
+
if (!emnapiExternalSAB.registry) {
|
|
4391
|
+
throw new Error('FinalizationRegistry is not supported in this environment');
|
|
4392
|
+
}
|
|
4393
|
+
handle >>>= 0;
|
|
4394
|
+
var meta = emnapiExternalSAB.readMeta(handle);
|
|
4395
|
+
var external_data = meta.external_data;
|
|
4396
|
+
external_data >>>= 0;
|
|
4397
|
+
if (sab == null) {
|
|
4398
|
+
sab = new SharedArrayBuffer(meta.byte_length);
|
|
4399
|
+
new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
|
|
4400
|
+
}
|
|
4401
|
+
else {
|
|
4402
|
+
if (emnapiExternalSAB.handleTable.has(sab)) {
|
|
4403
|
+
return sab;
|
|
4404
|
+
}
|
|
4405
|
+
}
|
|
4406
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4407
|
+
if (!emnapiExternalMemory.table.has(sab)) {
|
|
4408
|
+
if (external_data) {
|
|
4409
|
+
emnapiExternalMemory.table.set(sab, {
|
|
4410
|
+
address: external_data,
|
|
4411
|
+
ownership: 1,
|
|
4412
|
+
runtimeAllocated: 0
|
|
4413
|
+
});
|
|
4414
|
+
}
|
|
4415
|
+
}
|
|
4416
|
+
emnapiExternalSAB.handleTable.set(sab, handle);
|
|
4417
|
+
emnapiExternalSAB.registry.register(sab, handle);
|
|
4418
|
+
return sab;
|
|
4419
|
+
}
|
|
3769
4420
|
var emnapiMod = Object.freeze({
|
|
3770
4421
|
__proto__: null,
|
|
4422
|
+
$emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
|
|
3771
4423
|
$emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
|
|
3772
4424
|
$emnapiSyncMemory: $emnapiSyncMemory,
|
|
4425
|
+
emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
|
|
3773
4426
|
emnapi_create_memory_view: emnapi_create_memory_view,
|
|
4427
|
+
emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
|
|
3774
4428
|
emnapi_get_memory_address: emnapi_get_memory_address,
|
|
3775
4429
|
emnapi_get_runtime_version: emnapi_get_runtime_version,
|
|
3776
4430
|
emnapi_is_node_binding_available: emnapi_is_node_binding_available,
|
|
3777
4431
|
emnapi_is_support_bigint: emnapi_is_support_bigint,
|
|
3778
4432
|
emnapi_is_support_weakref: emnapi_is_support_weakref,
|
|
4433
|
+
emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
|
|
3779
4434
|
emnapi_sync_memory: emnapi_sync_memory
|
|
3780
4435
|
});
|
|
3781
4436
|
function napi_create_array(env, result) {
|
|
@@ -3785,9 +4440,10 @@ function createNapiModule(options) {
|
|
|
3785
4440
|
envObject.checkGCAccess();
|
|
3786
4441
|
if (!result)
|
|
3787
4442
|
return envObject.setLastError(1);
|
|
4443
|
+
result >>>= 0;
|
|
3788
4444
|
var value = emnapiCtx.addToCurrentScope([]).id;
|
|
3789
4445
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3790
|
-
HEAP_DATA_VIEW.
|
|
4446
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3791
4447
|
return envObject.clearLastError();
|
|
3792
4448
|
}
|
|
3793
4449
|
function napi_create_array_with_length(env, length, result) {
|
|
@@ -3797,19 +4453,23 @@ function createNapiModule(options) {
|
|
|
3797
4453
|
envObject.checkGCAccess();
|
|
3798
4454
|
if (!result)
|
|
3799
4455
|
return envObject.setLastError(1);
|
|
4456
|
+
length >>>= 0;
|
|
4457
|
+
result >>>= 0;
|
|
3800
4458
|
length = length >>> 0;
|
|
3801
4459
|
var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
|
|
3802
4460
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3803
|
-
HEAP_DATA_VIEW.
|
|
4461
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3804
4462
|
return envObject.clearLastError();
|
|
3805
4463
|
}
|
|
3806
|
-
function emnapiCreateArrayBuffer(byte_length, data) {
|
|
4464
|
+
function emnapiCreateArrayBuffer(byte_length, data, shared) {
|
|
4465
|
+
byte_length >>>= 0;
|
|
3807
4466
|
byte_length = byte_length >>> 0;
|
|
3808
|
-
var arrayBuffer = new ArrayBuffer(byte_length);
|
|
4467
|
+
var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
|
|
3809
4468
|
if (data) {
|
|
4469
|
+
data >>>= 0;
|
|
3810
4470
|
var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
|
|
3811
4471
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3812
|
-
HEAP_DATA_VIEW.
|
|
4472
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
3813
4473
|
}
|
|
3814
4474
|
return arrayBuffer;
|
|
3815
4475
|
}
|
|
@@ -3827,10 +4487,37 @@ function createNapiModule(options) {
|
|
|
3827
4487
|
try {
|
|
3828
4488
|
if (!result)
|
|
3829
4489
|
return envObject.setLastError(1);
|
|
3830
|
-
|
|
4490
|
+
result >>>= 0;
|
|
4491
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
|
|
4492
|
+
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
4493
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4494
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4495
|
+
return envObject.getReturnStatus();
|
|
4496
|
+
}
|
|
4497
|
+
catch (err) {
|
|
4498
|
+
envObject.tryCatch.setError(err);
|
|
4499
|
+
return envObject.setLastError(10);
|
|
4500
|
+
}
|
|
4501
|
+
}
|
|
4502
|
+
function node_api_create_sharedarraybuffer(env, byte_length, data, result) {
|
|
4503
|
+
var value;
|
|
4504
|
+
if (!env)
|
|
4505
|
+
return 1;
|
|
4506
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4507
|
+
envObject.checkGCAccess();
|
|
4508
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4509
|
+
return envObject.setLastError(10);
|
|
4510
|
+
if (!envObject.canCallIntoJs())
|
|
4511
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4512
|
+
envObject.clearLastError();
|
|
4513
|
+
try {
|
|
4514
|
+
if (!result)
|
|
4515
|
+
return envObject.setLastError(1);
|
|
4516
|
+
result >>>= 0;
|
|
4517
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
|
|
3831
4518
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
3832
4519
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3833
|
-
HEAP_DATA_VIEW.
|
|
4520
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3834
4521
|
return envObject.getReturnStatus();
|
|
3835
4522
|
}
|
|
3836
4523
|
catch (err) {
|
|
@@ -3852,9 +4539,10 @@ function createNapiModule(options) {
|
|
|
3852
4539
|
try {
|
|
3853
4540
|
if (!result)
|
|
3854
4541
|
return envObject.setLastError(1);
|
|
4542
|
+
result >>>= 0;
|
|
3855
4543
|
value = emnapiCtx.addToCurrentScope(new Date(time)).id;
|
|
3856
4544
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3857
|
-
HEAP_DATA_VIEW.
|
|
4545
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3858
4546
|
return envObject.getReturnStatus();
|
|
3859
4547
|
}
|
|
3860
4548
|
catch (err) {
|
|
@@ -3883,9 +4571,10 @@ function createNapiModule(options) {
|
|
|
3883
4571
|
if (finalize_cb) {
|
|
3884
4572
|
emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
|
|
3885
4573
|
}
|
|
4574
|
+
result >>>= 0;
|
|
3886
4575
|
value = externalHandle.id;
|
|
3887
4576
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3888
|
-
HEAP_DATA_VIEW.
|
|
4577
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3889
4578
|
return envObject.clearLastError();
|
|
3890
4579
|
}
|
|
3891
4580
|
catch (err) {
|
|
@@ -3907,6 +4596,9 @@ function createNapiModule(options) {
|
|
|
3907
4596
|
try {
|
|
3908
4597
|
if (!result)
|
|
3909
4598
|
return envObject.setLastError(1);
|
|
4599
|
+
byte_length >>>= 0;
|
|
4600
|
+
external_data >>>= 0;
|
|
4601
|
+
result >>>= 0;
|
|
3910
4602
|
byte_length = byte_length >>> 0;
|
|
3911
4603
|
if (!external_data) {
|
|
3912
4604
|
byte_length = 0;
|
|
@@ -3949,7 +4641,61 @@ function createNapiModule(options) {
|
|
|
3949
4641
|
}
|
|
3950
4642
|
value = handle.id;
|
|
3951
4643
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3952
|
-
HEAP_DATA_VIEW.
|
|
4644
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4645
|
+
return envObject.getReturnStatus();
|
|
4646
|
+
}
|
|
4647
|
+
catch (err) {
|
|
4648
|
+
envObject.tryCatch.setError(err);
|
|
4649
|
+
return envObject.setLastError(10);
|
|
4650
|
+
}
|
|
4651
|
+
}
|
|
4652
|
+
function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
|
|
4653
|
+
var value;
|
|
4654
|
+
if (!env)
|
|
4655
|
+
return 1;
|
|
4656
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4657
|
+
envObject.checkGCAccess();
|
|
4658
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4659
|
+
return envObject.setLastError(10);
|
|
4660
|
+
if (!envObject.canCallIntoJs())
|
|
4661
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4662
|
+
envObject.clearLastError();
|
|
4663
|
+
try {
|
|
4664
|
+
if (!result)
|
|
4665
|
+
return envObject.setLastError(1);
|
|
4666
|
+
byte_length >>>= 0;
|
|
4667
|
+
external_data >>>= 0;
|
|
4668
|
+
result >>>= 0;
|
|
4669
|
+
byte_length = byte_length >>> 0;
|
|
4670
|
+
if (!external_data) {
|
|
4671
|
+
byte_length = 0;
|
|
4672
|
+
}
|
|
4673
|
+
if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
|
|
4674
|
+
throw new RangeError('Memory out of range');
|
|
4675
|
+
}
|
|
4676
|
+
if (!emnapiExternalSAB.registry && finalize_cb) {
|
|
4677
|
+
throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
|
|
4678
|
+
}
|
|
4679
|
+
var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
|
|
4680
|
+
if (byte_length !== 0) {
|
|
4681
|
+
var u8arr = new Uint8Array(sharedArrayBuffer);
|
|
4682
|
+
u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
|
|
4683
|
+
emnapiExternalMemory.table.set(sharedArrayBuffer, {
|
|
4684
|
+
address: external_data,
|
|
4685
|
+
ownership: 1,
|
|
4686
|
+
runtimeAllocated: 0
|
|
4687
|
+
});
|
|
4688
|
+
}
|
|
4689
|
+
value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
|
|
4690
|
+
if (finalize_cb) {
|
|
4691
|
+
finalize_cb >>>= 0;
|
|
4692
|
+
finalize_hint >>>= 0;
|
|
4693
|
+
var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
|
|
4694
|
+
emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
|
|
4695
|
+
emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
|
|
4696
|
+
}
|
|
4697
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4698
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3953
4699
|
return envObject.getReturnStatus();
|
|
3954
4700
|
}
|
|
3955
4701
|
catch (err) {
|
|
@@ -3964,9 +4710,55 @@ function createNapiModule(options) {
|
|
|
3964
4710
|
envObject.checkGCAccess();
|
|
3965
4711
|
if (!result)
|
|
3966
4712
|
return envObject.setLastError(1);
|
|
4713
|
+
result >>>= 0;
|
|
3967
4714
|
var value = emnapiCtx.addToCurrentScope({}).id;
|
|
3968
4715
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3969
|
-
HEAP_DATA_VIEW.
|
|
4716
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4717
|
+
return envObject.clearLastError();
|
|
4718
|
+
}
|
|
4719
|
+
function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
|
|
4720
|
+
if (!env)
|
|
4721
|
+
return 1;
|
|
4722
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4723
|
+
envObject.checkGCAccess();
|
|
4724
|
+
if (!result)
|
|
4725
|
+
return envObject.setLastError(1);
|
|
4726
|
+
property_count >>>= 0;
|
|
4727
|
+
property_count = property_count >>> 0;
|
|
4728
|
+
if (property_count > 0) {
|
|
4729
|
+
if (!property_names)
|
|
4730
|
+
return envObject.setLastError(1);
|
|
4731
|
+
if (!property_values)
|
|
4732
|
+
return envObject.setLastError(1);
|
|
4733
|
+
}
|
|
4734
|
+
var v8_prototype_or_null = prototype_or_null
|
|
4735
|
+
? emnapiCtx.handleStore.get(prototype_or_null).value
|
|
4736
|
+
: null;
|
|
4737
|
+
var properties = {};
|
|
4738
|
+
property_names >>>= 0;
|
|
4739
|
+
property_values >>>= 0;
|
|
4740
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4741
|
+
for (var i = 0; i < property_count; i++) {
|
|
4742
|
+
var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
|
|
4743
|
+
if (!(typeof name_value === "string" || typeof name_value === "symbol"))
|
|
4744
|
+
return envObject.setLastError(4);
|
|
4745
|
+
properties[name_value] = {
|
|
4746
|
+
value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
|
|
4747
|
+
writable: true,
|
|
4748
|
+
enumerable: true,
|
|
4749
|
+
configurable: true
|
|
4750
|
+
};
|
|
4751
|
+
}
|
|
4752
|
+
var obj;
|
|
4753
|
+
try {
|
|
4754
|
+
obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties);
|
|
4755
|
+
}
|
|
4756
|
+
catch (_) {
|
|
4757
|
+
return envObject.setLastError(9);
|
|
4758
|
+
}
|
|
4759
|
+
var value = emnapiCtx.addToCurrentScope(obj).id;
|
|
4760
|
+
result >>>= 0;
|
|
4761
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3970
4762
|
return envObject.clearLastError();
|
|
3971
4763
|
}
|
|
3972
4764
|
function napi_create_symbol(env, description, result) {
|
|
@@ -3976,10 +4768,11 @@ function createNapiModule(options) {
|
|
|
3976
4768
|
envObject.checkGCAccess();
|
|
3977
4769
|
if (!result)
|
|
3978
4770
|
return envObject.setLastError(1);
|
|
4771
|
+
result >>>= 0;
|
|
3979
4772
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3980
4773
|
if (!description) {
|
|
3981
4774
|
var value = emnapiCtx.addToCurrentScope(Symbol()).id;
|
|
3982
|
-
HEAP_DATA_VIEW.
|
|
4775
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3983
4776
|
}
|
|
3984
4777
|
else {
|
|
3985
4778
|
var handle = emnapiCtx.handleStore.get(description);
|
|
@@ -3988,7 +4781,7 @@ function createNapiModule(options) {
|
|
|
3988
4781
|
return envObject.setLastError(3);
|
|
3989
4782
|
}
|
|
3990
4783
|
var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id;
|
|
3991
|
-
HEAP_DATA_VIEW.
|
|
4784
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3992
4785
|
}
|
|
3993
4786
|
return envObject.clearLastError();
|
|
3994
4787
|
}
|
|
@@ -4009,10 +4802,9 @@ function createNapiModule(options) {
|
|
|
4009
4802
|
if (!result)
|
|
4010
4803
|
return envObject.setLastError(1);
|
|
4011
4804
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
4012
|
-
if (!handle.isArrayBuffer()) {
|
|
4013
|
-
return envObject.setLastError(1);
|
|
4014
|
-
}
|
|
4015
4805
|
var buffer = handle.value;
|
|
4806
|
+
byte_offset >>>= 0;
|
|
4807
|
+
length >>>= 0;
|
|
4016
4808
|
var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
|
|
4017
4809
|
var _a;
|
|
4018
4810
|
byte_offset = byte_offset >>> 0;
|
|
@@ -4043,36 +4835,47 @@ function createNapiModule(options) {
|
|
|
4043
4835
|
});
|
|
4044
4836
|
}
|
|
4045
4837
|
}
|
|
4838
|
+
result >>>= 0;
|
|
4046
4839
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4047
4840
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4048
|
-
HEAP_DATA_VIEW.
|
|
4841
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4049
4842
|
return envObject.getReturnStatus();
|
|
4050
4843
|
};
|
|
4051
|
-
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4075
|
-
|
|
4844
|
+
if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
|
|
4845
|
+
switch (type) {
|
|
4846
|
+
case 0:
|
|
4847
|
+
return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
|
|
4848
|
+
case 1:
|
|
4849
|
+
return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
|
|
4850
|
+
case 2:
|
|
4851
|
+
return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
|
|
4852
|
+
case 3:
|
|
4853
|
+
return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
|
|
4854
|
+
case 4:
|
|
4855
|
+
return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
|
|
4856
|
+
case 5:
|
|
4857
|
+
return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
|
|
4858
|
+
case 6:
|
|
4859
|
+
return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
|
|
4860
|
+
case 7:
|
|
4861
|
+
return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
|
|
4862
|
+
case 8:
|
|
4863
|
+
return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
|
|
4864
|
+
case 9:
|
|
4865
|
+
return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
|
|
4866
|
+
case 10:
|
|
4867
|
+
return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
|
|
4868
|
+
case 11:
|
|
4869
|
+
if (typeof Float16Array !== 'function') {
|
|
4870
|
+
return envObject.setLastError(1);
|
|
4871
|
+
}
|
|
4872
|
+
return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
|
|
4873
|
+
default:
|
|
4874
|
+
return envObject.setLastError(1);
|
|
4875
|
+
}
|
|
4876
|
+
}
|
|
4877
|
+
else {
|
|
4878
|
+
return envObject.setLastError(1);
|
|
4076
4879
|
}
|
|
4077
4880
|
}
|
|
4078
4881
|
catch (err) {
|
|
@@ -4099,18 +4902,21 @@ function createNapiModule(options) {
|
|
|
4099
4902
|
if (!Buffer) {
|
|
4100
4903
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
|
|
4101
4904
|
}
|
|
4905
|
+
result >>>= 0;
|
|
4102
4906
|
var buffer = void 0;
|
|
4907
|
+
size >>>= 0;
|
|
4103
4908
|
size = size >>> 0;
|
|
4104
4909
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4105
4910
|
if (!data || (size === 0)) {
|
|
4106
4911
|
buffer = Buffer.alloc(size);
|
|
4107
4912
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4108
|
-
HEAP_DATA_VIEW.
|
|
4913
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4109
4914
|
}
|
|
4110
4915
|
else {
|
|
4111
4916
|
pointer = _malloc(size);
|
|
4112
4917
|
if (!pointer)
|
|
4113
4918
|
throw new Error('Out of memory');
|
|
4919
|
+
pointer >>>= 0;
|
|
4114
4920
|
new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
|
|
4115
4921
|
var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
|
|
4116
4922
|
var viewDescriptor = {
|
|
@@ -4123,8 +4929,9 @@ function createNapiModule(options) {
|
|
|
4123
4929
|
emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor);
|
|
4124
4930
|
(_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
|
|
4125
4931
|
value = emnapiCtx.addToCurrentScope(buffer_1).id;
|
|
4126
|
-
HEAP_DATA_VIEW.
|
|
4127
|
-
|
|
4932
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4933
|
+
data >>>= 0;
|
|
4934
|
+
HEAP_DATA_VIEW.setUint32(data, pointer, true);
|
|
4128
4935
|
}
|
|
4129
4936
|
return envObject.getReturnStatus();
|
|
4130
4937
|
}
|
|
@@ -4151,12 +4958,15 @@ function createNapiModule(options) {
|
|
|
4151
4958
|
if (!Buffer) {
|
|
4152
4959
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', '');
|
|
4153
4960
|
}
|
|
4154
|
-
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data);
|
|
4961
|
+
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
|
|
4155
4962
|
var buffer = Buffer.from(arrayBuffer);
|
|
4963
|
+
data >>>= 0;
|
|
4964
|
+
length >>>= 0;
|
|
4156
4965
|
buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
|
|
4157
4966
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4967
|
+
result >>>= 0;
|
|
4158
4968
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4159
|
-
HEAP_DATA_VIEW.
|
|
4969
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4160
4970
|
return envObject.getReturnStatus();
|
|
4161
4971
|
}
|
|
4162
4972
|
catch (err) {
|
|
@@ -4183,6 +4993,8 @@ function createNapiModule(options) {
|
|
|
4183
4993
|
return envObject.setLastError(1);
|
|
4184
4994
|
if (!result)
|
|
4185
4995
|
return envObject.setLastError(1);
|
|
4996
|
+
byte_offset >>>= 0;
|
|
4997
|
+
byte_length >>>= 0;
|
|
4186
4998
|
byte_offset = byte_offset >>> 0;
|
|
4187
4999
|
byte_length = byte_length >>> 0;
|
|
4188
5000
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
@@ -4211,9 +5023,10 @@ function createNapiModule(options) {
|
|
|
4211
5023
|
});
|
|
4212
5024
|
}
|
|
4213
5025
|
}
|
|
5026
|
+
result >>>= 0;
|
|
4214
5027
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4215
5028
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4216
|
-
HEAP_DATA_VIEW.
|
|
5029
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4217
5030
|
return envObject.getReturnStatus();
|
|
4218
5031
|
}
|
|
4219
5032
|
catch (err) {
|
|
@@ -4222,7 +5035,6 @@ function createNapiModule(options) {
|
|
|
4222
5035
|
}
|
|
4223
5036
|
}
|
|
4224
5037
|
function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
|
|
4225
|
-
var value;
|
|
4226
5038
|
if (!env)
|
|
4227
5039
|
return 1;
|
|
4228
5040
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4237,34 +5049,41 @@ function createNapiModule(options) {
|
|
|
4237
5049
|
return envObject.setLastError(1);
|
|
4238
5050
|
if (!result)
|
|
4239
5051
|
return envObject.setLastError(1);
|
|
5052
|
+
byte_length >>>= 0;
|
|
5053
|
+
byte_offset >>>= 0;
|
|
4240
5054
|
byte_length = byte_length >>> 0;
|
|
4241
5055
|
byte_offset = byte_offset >>> 0;
|
|
4242
|
-
var
|
|
4243
|
-
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
|
|
4247
|
-
|
|
4248
|
-
|
|
4249
|
-
|
|
4250
|
-
|
|
4251
|
-
|
|
4252
|
-
|
|
4253
|
-
|
|
4254
|
-
|
|
4255
|
-
|
|
4256
|
-
|
|
4257
|
-
|
|
4258
|
-
|
|
4259
|
-
|
|
4260
|
-
runtimeAllocated: 0
|
|
4261
|
-
});
|
|
5056
|
+
var value = emnapiCtx.handleStore.get(arraybuffer).value;
|
|
5057
|
+
var createDataview = function (buffer) {
|
|
5058
|
+
if ((byte_length + byte_offset) > buffer.byteLength) {
|
|
5059
|
+
var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
|
|
5060
|
+
err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
|
|
5061
|
+
throw err;
|
|
5062
|
+
}
|
|
5063
|
+
var dataview = new DataView(buffer, byte_offset, byte_length);
|
|
5064
|
+
if (buffer === wasmMemory.buffer) {
|
|
5065
|
+
if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
|
|
5066
|
+
emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
|
|
5067
|
+
Ctor: DataView,
|
|
5068
|
+
address: byte_offset,
|
|
5069
|
+
length: byte_length,
|
|
5070
|
+
ownership: 1,
|
|
5071
|
+
runtimeAllocated: 0
|
|
5072
|
+
});
|
|
5073
|
+
}
|
|
4262
5074
|
}
|
|
5075
|
+
result >>>= 0;
|
|
5076
|
+
var v = emnapiCtx.addToCurrentScope(dataview).id;
|
|
5077
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5078
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
5079
|
+
return envObject.getReturnStatus();
|
|
5080
|
+
};
|
|
5081
|
+
if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
|
|
5082
|
+
return createDataview(value);
|
|
5083
|
+
}
|
|
5084
|
+
else {
|
|
5085
|
+
return envObject.setLastError(1);
|
|
4263
5086
|
}
|
|
4264
|
-
value = emnapiCtx.addToCurrentScope(dataview).id;
|
|
4265
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4266
|
-
HEAP_DATA_VIEW.setInt32(result, value, true);
|
|
4267
|
-
return envObject.getReturnStatus();
|
|
4268
5087
|
}
|
|
4269
5088
|
catch (err) {
|
|
4270
5089
|
envObject.tryCatch.setError(err);
|
|
@@ -4278,7 +5097,10 @@ function createNapiModule(options) {
|
|
|
4278
5097
|
envObject.checkGCAccess();
|
|
4279
5098
|
if (!result)
|
|
4280
5099
|
return envObject.setLastError(1);
|
|
4281
|
-
|
|
5100
|
+
length >>>= 0;
|
|
5101
|
+
utf8description >>>= 0;
|
|
5102
|
+
result >>>= 0;
|
|
5103
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
4282
5104
|
var sizelength = length >>> 0;
|
|
4283
5105
|
if (length !== 0) {
|
|
4284
5106
|
if (!utf8description)
|
|
@@ -4290,7 +5112,7 @@ function createNapiModule(options) {
|
|
|
4290
5112
|
var descriptionString = emnapiString.UTF8ToString(utf8description, length);
|
|
4291
5113
|
var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id;
|
|
4292
5114
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4293
|
-
HEAP_DATA_VIEW.
|
|
5115
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4294
5116
|
return envObject.clearLastError();
|
|
4295
5117
|
}
|
|
4296
5118
|
var createMod = Object.freeze({
|
|
@@ -4309,6 +5131,9 @@ function createNapiModule(options) {
|
|
|
4309
5131
|
napi_create_symbol: napi_create_symbol,
|
|
4310
5132
|
napi_create_typedarray: napi_create_typedarray,
|
|
4311
5133
|
node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
|
|
5134
|
+
node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
|
|
5135
|
+
node_api_create_object_with_properties: node_api_create_object_with_properties,
|
|
5136
|
+
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
4312
5137
|
node_api_symbol_for: node_api_symbol_for
|
|
4313
5138
|
});
|
|
4314
5139
|
function napi_get_boolean(env, value, result) {
|
|
@@ -4318,9 +5143,10 @@ function createNapiModule(options) {
|
|
|
4318
5143
|
envObject.checkGCAccess();
|
|
4319
5144
|
if (!result)
|
|
4320
5145
|
return envObject.setLastError(1);
|
|
5146
|
+
result >>>= 0;
|
|
4321
5147
|
var v = value === 0 ? 3 : 4;
|
|
4322
5148
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4323
|
-
HEAP_DATA_VIEW.
|
|
5149
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4324
5150
|
return envObject.clearLastError();
|
|
4325
5151
|
}
|
|
4326
5152
|
function napi_get_global(env, result) {
|
|
@@ -4330,9 +5156,10 @@ function createNapiModule(options) {
|
|
|
4330
5156
|
envObject.checkGCAccess();
|
|
4331
5157
|
if (!result)
|
|
4332
5158
|
return envObject.setLastError(1);
|
|
5159
|
+
result >>>= 0;
|
|
4333
5160
|
var value = 5;
|
|
4334
5161
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4335
|
-
HEAP_DATA_VIEW.
|
|
5162
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4336
5163
|
return envObject.clearLastError();
|
|
4337
5164
|
}
|
|
4338
5165
|
function napi_get_null(env, result) {
|
|
@@ -4342,9 +5169,10 @@ function createNapiModule(options) {
|
|
|
4342
5169
|
envObject.checkGCAccess();
|
|
4343
5170
|
if (!result)
|
|
4344
5171
|
return envObject.setLastError(1);
|
|
5172
|
+
result >>>= 0;
|
|
4345
5173
|
var value = 2;
|
|
4346
5174
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4347
|
-
HEAP_DATA_VIEW.
|
|
5175
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4348
5176
|
return envObject.clearLastError();
|
|
4349
5177
|
}
|
|
4350
5178
|
function napi_get_undefined(env, result) {
|
|
@@ -4354,9 +5182,10 @@ function createNapiModule(options) {
|
|
|
4354
5182
|
envObject.checkGCAccess();
|
|
4355
5183
|
if (!result)
|
|
4356
5184
|
return envObject.setLastError(1);
|
|
5185
|
+
result >>>= 0;
|
|
4357
5186
|
var value = 1;
|
|
4358
5187
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4359
|
-
HEAP_DATA_VIEW.
|
|
5188
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4360
5189
|
return envObject.clearLastError();
|
|
4361
5190
|
}
|
|
4362
5191
|
var globalMod = Object.freeze({
|
|
@@ -4370,6 +5199,9 @@ function createNapiModule(options) {
|
|
|
4370
5199
|
if (!env)
|
|
4371
5200
|
return 1;
|
|
4372
5201
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5202
|
+
data >>>= 0;
|
|
5203
|
+
finalize_cb >>>= 0;
|
|
5204
|
+
finalize_hint >>>= 0;
|
|
4373
5205
|
envObject.setInstanceData(data, finalize_cb, finalize_hint);
|
|
4374
5206
|
return envObject.clearLastError();
|
|
4375
5207
|
}
|
|
@@ -4379,9 +5211,10 @@ function createNapiModule(options) {
|
|
|
4379
5211
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4380
5212
|
if (!data)
|
|
4381
5213
|
return envObject.setLastError(1);
|
|
5214
|
+
data >>>= 0;
|
|
4382
5215
|
var value = envObject.getInstanceData();
|
|
4383
5216
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4384
|
-
HEAP_DATA_VIEW.
|
|
5217
|
+
HEAP_DATA_VIEW.setUint32(data, value, true);
|
|
4385
5218
|
return envObject.clearLastError();
|
|
4386
5219
|
}
|
|
4387
5220
|
var envMod = Object.freeze({
|
|
@@ -4390,15 +5223,19 @@ function createNapiModule(options) {
|
|
|
4390
5223
|
napi_set_instance_data: napi_set_instance_data
|
|
4391
5224
|
});
|
|
4392
5225
|
function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
|
|
5226
|
+
error_code >>>= 0;
|
|
5227
|
+
engine_error_code >>>= 0;
|
|
5228
|
+
engine_reserved >>>= 0;
|
|
4393
5229
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4394
5230
|
var lastError = envObject.lastError;
|
|
4395
5231
|
var errorCode = lastError.errorCode;
|
|
4396
5232
|
var engineErrorCode = lastError.engineErrorCode >>> 0;
|
|
4397
5233
|
var engineReserved = lastError.engineReserved;
|
|
5234
|
+
engineReserved >>>= 0;
|
|
4398
5235
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4399
5236
|
HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
|
|
4400
5237
|
HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
|
|
4401
|
-
HEAP_DATA_VIEW.
|
|
5238
|
+
HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true);
|
|
4402
5239
|
}
|
|
4403
5240
|
function napi_throw(env, error) {
|
|
4404
5241
|
if (!env)
|
|
@@ -4434,6 +5271,8 @@ function createNapiModule(options) {
|
|
|
4434
5271
|
try {
|
|
4435
5272
|
if (!msg)
|
|
4436
5273
|
return envObject.setLastError(1);
|
|
5274
|
+
code >>>= 0;
|
|
5275
|
+
msg >>>= 0;
|
|
4437
5276
|
var error = new Error(emnapiString.UTF8ToString(msg, -1));
|
|
4438
5277
|
if (code)
|
|
4439
5278
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4458,6 +5297,8 @@ function createNapiModule(options) {
|
|
|
4458
5297
|
try {
|
|
4459
5298
|
if (!msg)
|
|
4460
5299
|
return envObject.setLastError(1);
|
|
5300
|
+
code >>>= 0;
|
|
5301
|
+
msg >>>= 0;
|
|
4461
5302
|
var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
|
|
4462
5303
|
if (code)
|
|
4463
5304
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4482,6 +5323,8 @@ function createNapiModule(options) {
|
|
|
4482
5323
|
try {
|
|
4483
5324
|
if (!msg)
|
|
4484
5325
|
return envObject.setLastError(1);
|
|
5326
|
+
code >>>= 0;
|
|
5327
|
+
msg >>>= 0;
|
|
4485
5328
|
var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
|
|
4486
5329
|
if (code)
|
|
4487
5330
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4506,6 +5349,8 @@ function createNapiModule(options) {
|
|
|
4506
5349
|
try {
|
|
4507
5350
|
if (!msg)
|
|
4508
5351
|
return envObject.setLastError(1);
|
|
5352
|
+
code >>>= 0;
|
|
5353
|
+
msg >>>= 0;
|
|
4509
5354
|
var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
|
|
4510
5355
|
if (code)
|
|
4511
5356
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4525,6 +5370,7 @@ function createNapiModule(options) {
|
|
|
4525
5370
|
if (!result)
|
|
4526
5371
|
return envObject.setLastError(1);
|
|
4527
5372
|
var r = envObject.tryCatch.hasCaught();
|
|
5373
|
+
result >>>= 0;
|
|
4528
5374
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4529
5375
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
4530
5376
|
return envObject.clearLastError();
|
|
@@ -4550,9 +5396,10 @@ function createNapiModule(options) {
|
|
|
4550
5396
|
}
|
|
4551
5397
|
error.code = codeValue;
|
|
4552
5398
|
}
|
|
5399
|
+
result >>>= 0;
|
|
4553
5400
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4554
5401
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4555
|
-
HEAP_DATA_VIEW.
|
|
5402
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4556
5403
|
return envObject.clearLastError();
|
|
4557
5404
|
}
|
|
4558
5405
|
function napi_create_type_error(env, code, msg, result) {
|
|
@@ -4576,9 +5423,10 @@ function createNapiModule(options) {
|
|
|
4576
5423
|
}
|
|
4577
5424
|
error.code = codeValue;
|
|
4578
5425
|
}
|
|
5426
|
+
result >>>= 0;
|
|
4579
5427
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4580
5428
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4581
|
-
HEAP_DATA_VIEW.
|
|
5429
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4582
5430
|
return envObject.clearLastError();
|
|
4583
5431
|
}
|
|
4584
5432
|
function napi_create_range_error(env, code, msg, result) {
|
|
@@ -4602,9 +5450,10 @@ function createNapiModule(options) {
|
|
|
4602
5450
|
}
|
|
4603
5451
|
error.code = codeValue;
|
|
4604
5452
|
}
|
|
5453
|
+
result >>>= 0;
|
|
4605
5454
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4606
5455
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4607
|
-
HEAP_DATA_VIEW.
|
|
5456
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4608
5457
|
return envObject.clearLastError();
|
|
4609
5458
|
}
|
|
4610
5459
|
function node_api_create_syntax_error(env, code, msg, result) {
|
|
@@ -4628,9 +5477,10 @@ function createNapiModule(options) {
|
|
|
4628
5477
|
}
|
|
4629
5478
|
error.code = codeValue;
|
|
4630
5479
|
}
|
|
5480
|
+
result >>>= 0;
|
|
4631
5481
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4632
5482
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4633
|
-
HEAP_DATA_VIEW.
|
|
5483
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4634
5484
|
return envObject.clearLastError();
|
|
4635
5485
|
}
|
|
4636
5486
|
function napi_get_and_clear_last_exception(env, result) {
|
|
@@ -4640,20 +5490,25 @@ function createNapiModule(options) {
|
|
|
4640
5490
|
envObject.checkGCAccess();
|
|
4641
5491
|
if (!result)
|
|
4642
5492
|
return envObject.setLastError(1);
|
|
5493
|
+
result >>>= 0;
|
|
4643
5494
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4644
5495
|
if (!envObject.tryCatch.hasCaught()) {
|
|
4645
|
-
HEAP_DATA_VIEW.
|
|
5496
|
+
HEAP_DATA_VIEW.setUint32(result, 1, true);
|
|
4646
5497
|
return envObject.clearLastError();
|
|
4647
5498
|
}
|
|
4648
5499
|
else {
|
|
4649
5500
|
var err = envObject.tryCatch.exception();
|
|
4650
5501
|
var value = envObject.ensureHandleId(err);
|
|
4651
|
-
HEAP_DATA_VIEW.
|
|
5502
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4652
5503
|
envObject.tryCatch.reset();
|
|
4653
5504
|
}
|
|
4654
5505
|
return envObject.clearLastError();
|
|
4655
5506
|
}
|
|
4656
5507
|
function napi_fatal_error(location, location_len, message, message_len) {
|
|
5508
|
+
location >>>= 0;
|
|
5509
|
+
location_len >>>= 0;
|
|
5510
|
+
message >>>= 0;
|
|
5511
|
+
message_len >>>= 0;
|
|
4657
5512
|
var locationStr = emnapiString.UTF8ToString(location, location_len);
|
|
4658
5513
|
var messageStr = emnapiString.UTF8ToString(message, message_len);
|
|
4659
5514
|
if (emnapiNodeBinding) {
|
|
@@ -4707,8 +5562,21 @@ function createNapiModule(options) {
|
|
|
4707
5562
|
node_api_create_syntax_error: node_api_create_syntax_error,
|
|
4708
5563
|
node_api_throw_syntax_error: node_api_throw_syntax_error
|
|
4709
5564
|
});
|
|
5565
|
+
function _emnapi_create_function(env, utf8name, length, cb, data, result) {
|
|
5566
|
+
length >>>= 0;
|
|
5567
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5568
|
+
var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
|
|
5569
|
+
if (fresult.status !== 0)
|
|
5570
|
+
return envObject.setLastError(fresult.status);
|
|
5571
|
+
var f = fresult.f;
|
|
5572
|
+
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
5573
|
+
result >>>= 0;
|
|
5574
|
+
var value = valueHandle.id;
|
|
5575
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5576
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5577
|
+
return envObject.getReturnStatus();
|
|
5578
|
+
}
|
|
4710
5579
|
function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
4711
|
-
var value;
|
|
4712
5580
|
if (!env)
|
|
4713
5581
|
return 1;
|
|
4714
5582
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4723,15 +5591,7 @@ function createNapiModule(options) {
|
|
|
4723
5591
|
return envObject.setLastError(1);
|
|
4724
5592
|
if (!cb)
|
|
4725
5593
|
return envObject.setLastError(1);
|
|
4726
|
-
|
|
4727
|
-
if (fresult.status !== 0)
|
|
4728
|
-
return envObject.setLastError(fresult.status);
|
|
4729
|
-
var f = fresult.f;
|
|
4730
|
-
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
4731
|
-
value = valueHandle.id;
|
|
4732
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4733
|
-
HEAP_DATA_VIEW.setInt32(result, value, true);
|
|
4734
|
-
return envObject.getReturnStatus();
|
|
5594
|
+
return _emnapi_create_function(env, utf8name, length, cb, data, result);
|
|
4735
5595
|
}
|
|
4736
5596
|
catch (err) {
|
|
4737
5597
|
envObject.tryCatch.setError(err);
|
|
@@ -4745,21 +5605,24 @@ function createNapiModule(options) {
|
|
|
4745
5605
|
if (!cbinfo)
|
|
4746
5606
|
return envObject.setLastError(1);
|
|
4747
5607
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
5608
|
+
argc >>>= 0;
|
|
5609
|
+
argv >>>= 0;
|
|
4748
5610
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4749
5611
|
if (argv) {
|
|
4750
5612
|
if (!argc)
|
|
4751
5613
|
return envObject.setLastError(1);
|
|
4752
5614
|
var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
|
|
5615
|
+
argcValue >>>= 0;
|
|
4753
5616
|
var len = cbinfoValue.args.length;
|
|
4754
5617
|
var arrlen = argcValue < len ? argcValue : len;
|
|
4755
5618
|
var i = 0;
|
|
4756
5619
|
for (; i < arrlen; i++) {
|
|
4757
5620
|
var argVal = envObject.ensureHandleId(cbinfoValue.args[i]);
|
|
4758
|
-
HEAP_DATA_VIEW.
|
|
5621
|
+
HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true);
|
|
4759
5622
|
}
|
|
4760
5623
|
if (i < argcValue) {
|
|
4761
5624
|
for (; i < argcValue; i++) {
|
|
4762
|
-
HEAP_DATA_VIEW.
|
|
5625
|
+
HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true);
|
|
4763
5626
|
}
|
|
4764
5627
|
}
|
|
4765
5628
|
}
|
|
@@ -4767,11 +5630,13 @@ function createNapiModule(options) {
|
|
|
4767
5630
|
HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
|
|
4768
5631
|
}
|
|
4769
5632
|
if (this_arg) {
|
|
5633
|
+
this_arg >>>= 0;
|
|
4770
5634
|
var v = envObject.ensureHandleId(cbinfoValue.thiz);
|
|
4771
|
-
HEAP_DATA_VIEW.
|
|
5635
|
+
HEAP_DATA_VIEW.setUint32(this_arg, v, true);
|
|
4772
5636
|
}
|
|
4773
5637
|
if (data) {
|
|
4774
|
-
|
|
5638
|
+
data >>>= 0;
|
|
5639
|
+
HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
|
|
4775
5640
|
}
|
|
4776
5641
|
return envObject.clearLastError();
|
|
4777
5642
|
}
|
|
@@ -4790,6 +5655,9 @@ function createNapiModule(options) {
|
|
|
4790
5655
|
try {
|
|
4791
5656
|
if (!recv)
|
|
4792
5657
|
return envObject.setLastError(1);
|
|
5658
|
+
argc >>>= 0;
|
|
5659
|
+
argv >>>= 0;
|
|
5660
|
+
result >>>= 0;
|
|
4793
5661
|
argc = argc >>> 0;
|
|
4794
5662
|
if (argc > 0) {
|
|
4795
5663
|
if (!argv)
|
|
@@ -4804,13 +5672,13 @@ function createNapiModule(options) {
|
|
|
4804
5672
|
var args = [];
|
|
4805
5673
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4806
5674
|
for (; i < argc; i++) {
|
|
4807
|
-
var argVal = HEAP_DATA_VIEW.
|
|
5675
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
4808
5676
|
args.push(emnapiCtx.handleStore.get(argVal).value);
|
|
4809
5677
|
}
|
|
4810
5678
|
var ret = v8func.apply(v8recv, args);
|
|
4811
5679
|
if (result) {
|
|
4812
5680
|
v = envObject.ensureHandleId(ret);
|
|
4813
|
-
HEAP_DATA_VIEW.
|
|
5681
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4814
5682
|
}
|
|
4815
5683
|
return envObject.clearLastError();
|
|
4816
5684
|
}
|
|
@@ -4834,6 +5702,9 @@ function createNapiModule(options) {
|
|
|
4834
5702
|
try {
|
|
4835
5703
|
if (!constructor)
|
|
4836
5704
|
return envObject.setLastError(1);
|
|
5705
|
+
argc >>>= 0;
|
|
5706
|
+
argv >>>= 0;
|
|
5707
|
+
result >>>= 0;
|
|
4837
5708
|
argc = argc >>> 0;
|
|
4838
5709
|
if (argc > 0) {
|
|
4839
5710
|
if (!argv)
|
|
@@ -4849,7 +5720,7 @@ function createNapiModule(options) {
|
|
|
4849
5720
|
if (emnapiCtx.feature.supportReflect) {
|
|
4850
5721
|
var argList = Array(argc);
|
|
4851
5722
|
for (i = 0; i < argc; i++) {
|
|
4852
|
-
var argVal = HEAP_DATA_VIEW.
|
|
5723
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
4853
5724
|
argList[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
4854
5725
|
}
|
|
4855
5726
|
ret = Reflect.construct(Ctor, argList, Ctor);
|
|
@@ -4858,7 +5729,7 @@ function createNapiModule(options) {
|
|
|
4858
5729
|
var args = Array(argc + 1);
|
|
4859
5730
|
args[0] = undefined;
|
|
4860
5731
|
for (i = 0; i < argc; i++) {
|
|
4861
|
-
var argVal = HEAP_DATA_VIEW.
|
|
5732
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
4862
5733
|
args[i + 1] = emnapiCtx.handleStore.get(argVal).value;
|
|
4863
5734
|
}
|
|
4864
5735
|
var BoundCtor = Ctor.bind.apply(Ctor, args);
|
|
@@ -4866,7 +5737,7 @@ function createNapiModule(options) {
|
|
|
4866
5737
|
}
|
|
4867
5738
|
if (result) {
|
|
4868
5739
|
v = envObject.ensureHandleId(ret);
|
|
4869
|
-
HEAP_DATA_VIEW.
|
|
5740
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4870
5741
|
}
|
|
4871
5742
|
return envObject.getReturnStatus();
|
|
4872
5743
|
}
|
|
@@ -4884,6 +5755,7 @@ function createNapiModule(options) {
|
|
|
4884
5755
|
return envObject.setLastError(1);
|
|
4885
5756
|
if (!result)
|
|
4886
5757
|
return envObject.setLastError(1);
|
|
5758
|
+
result >>>= 0;
|
|
4887
5759
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
4888
5760
|
var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
|
|
4889
5761
|
var value = thiz == null || thiz.constructor == null
|
|
@@ -4892,11 +5764,12 @@ function createNapiModule(options) {
|
|
|
4892
5764
|
? envObject.ensureHandleId(thiz.constructor)
|
|
4893
5765
|
: 0;
|
|
4894
5766
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4895
|
-
HEAP_DATA_VIEW.
|
|
5767
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4896
5768
|
return envObject.clearLastError();
|
|
4897
5769
|
}
|
|
4898
5770
|
var functionMod = Object.freeze({
|
|
4899
5771
|
__proto__: null,
|
|
5772
|
+
_emnapi_create_function: _emnapi_create_function,
|
|
4900
5773
|
napi_call_function: napi_call_function,
|
|
4901
5774
|
napi_create_function: napi_create_function,
|
|
4902
5775
|
napi_get_cb_info: napi_get_cb_info,
|
|
@@ -4911,8 +5784,9 @@ function createNapiModule(options) {
|
|
|
4911
5784
|
if (!result)
|
|
4912
5785
|
return envObject.setLastError(1);
|
|
4913
5786
|
var scope = emnapiCtx.openScope(envObject);
|
|
5787
|
+
result >>>= 0;
|
|
4914
5788
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4915
|
-
HEAP_DATA_VIEW.
|
|
5789
|
+
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4916
5790
|
return envObject.clearLastError();
|
|
4917
5791
|
}
|
|
4918
5792
|
function napi_close_handle_scope(env, scope) {
|
|
@@ -4936,8 +5810,9 @@ function createNapiModule(options) {
|
|
|
4936
5810
|
if (!result)
|
|
4937
5811
|
return envObject.setLastError(1);
|
|
4938
5812
|
var scope = emnapiCtx.openScope(envObject);
|
|
5813
|
+
result >>>= 0;
|
|
4939
5814
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4940
|
-
HEAP_DATA_VIEW.
|
|
5815
|
+
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4941
5816
|
return envObject.clearLastError();
|
|
4942
5817
|
}
|
|
4943
5818
|
function napi_close_escapable_handle_scope(env, scope) {
|
|
@@ -4966,10 +5841,12 @@ function createNapiModule(options) {
|
|
|
4966
5841
|
return envObject.setLastError(1);
|
|
4967
5842
|
var scopeObject = emnapiCtx.scopeStore.get(scope);
|
|
4968
5843
|
if (!scopeObject.escapeCalled()) {
|
|
5844
|
+
escapee >>>= 0;
|
|
5845
|
+
result >>>= 0;
|
|
4969
5846
|
var newHandle = scopeObject.escape(escapee);
|
|
4970
5847
|
var value = newHandle ? newHandle.id : 0;
|
|
4971
5848
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4972
|
-
HEAP_DATA_VIEW.
|
|
5849
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4973
5850
|
return envObject.clearLastError();
|
|
4974
5851
|
}
|
|
4975
5852
|
return envObject.setLastError(12);
|
|
@@ -4990,8 +5867,9 @@ function createNapiModule(options) {
|
|
|
4990
5867
|
}
|
|
4991
5868
|
}
|
|
4992
5869
|
var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
|
|
5870
|
+
result >>>= 0;
|
|
4993
5871
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4994
|
-
HEAP_DATA_VIEW.
|
|
5872
|
+
HEAP_DATA_VIEW.setUint32(result, ref.id, true);
|
|
4995
5873
|
return envObject.clearLastError();
|
|
4996
5874
|
}
|
|
4997
5875
|
function napi_delete_reference(env, ref) {
|
|
@@ -5012,6 +5890,7 @@ function createNapiModule(options) {
|
|
|
5012
5890
|
return envObject.setLastError(1);
|
|
5013
5891
|
var count = emnapiCtx.refStore.get(ref).ref();
|
|
5014
5892
|
if (result) {
|
|
5893
|
+
result >>>= 0;
|
|
5015
5894
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5016
5895
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5017
5896
|
}
|
|
@@ -5031,6 +5910,7 @@ function createNapiModule(options) {
|
|
|
5031
5910
|
}
|
|
5032
5911
|
var count = reference.unref();
|
|
5033
5912
|
if (result) {
|
|
5913
|
+
result >>>= 0;
|
|
5034
5914
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5035
5915
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5036
5916
|
}
|
|
@@ -5047,8 +5927,9 @@ function createNapiModule(options) {
|
|
|
5047
5927
|
return envObject.setLastError(1);
|
|
5048
5928
|
var reference = emnapiCtx.refStore.get(ref);
|
|
5049
5929
|
var handleId = reference.get(envObject);
|
|
5930
|
+
result >>>= 0;
|
|
5050
5931
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5051
|
-
HEAP_DATA_VIEW.
|
|
5932
|
+
HEAP_DATA_VIEW.setUint32(result, handleId, true);
|
|
5052
5933
|
return envObject.clearLastError();
|
|
5053
5934
|
}
|
|
5054
5935
|
function napi_add_env_cleanup_hook(env, fun, arg) {
|
|
@@ -5057,6 +5938,8 @@ function createNapiModule(options) {
|
|
|
5057
5938
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5058
5939
|
if (!fun)
|
|
5059
5940
|
return envObject.setLastError(1);
|
|
5941
|
+
fun >>>= 0;
|
|
5942
|
+
arg >>>= 0;
|
|
5060
5943
|
emnapiCtx.addCleanupHook(envObject, fun, arg);
|
|
5061
5944
|
return 0;
|
|
5062
5945
|
}
|
|
@@ -5066,6 +5949,8 @@ function createNapiModule(options) {
|
|
|
5066
5949
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5067
5950
|
if (!fun)
|
|
5068
5951
|
return envObject.setLastError(1);
|
|
5952
|
+
fun >>>= 0;
|
|
5953
|
+
arg >>>= 0;
|
|
5069
5954
|
emnapiCtx.removeCleanupHook(envObject, fun, arg);
|
|
5070
5955
|
return 0;
|
|
5071
5956
|
}
|
|
@@ -5126,10 +6011,12 @@ function createNapiModule(options) {
|
|
|
5126
6011
|
var p = new Promise(function (resolve, reject) {
|
|
5127
6012
|
var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
|
|
5128
6013
|
deferredObjectId = deferredObject.id;
|
|
5129
|
-
|
|
6014
|
+
deferred >>>= 0;
|
|
6015
|
+
HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
|
|
5130
6016
|
});
|
|
6017
|
+
promise >>>= 0;
|
|
5131
6018
|
value = emnapiCtx.addToCurrentScope(p).id;
|
|
5132
|
-
HEAP_DATA_VIEW.
|
|
6019
|
+
HEAP_DATA_VIEW.setUint32(promise, value, true);
|
|
5133
6020
|
return envObject.getReturnStatus();
|
|
5134
6021
|
}
|
|
5135
6022
|
catch (err) {
|
|
@@ -5195,6 +6082,7 @@ function createNapiModule(options) {
|
|
|
5195
6082
|
if (!is_promise)
|
|
5196
6083
|
return envObject.setLastError(1);
|
|
5197
6084
|
var h = emnapiCtx.handleStore.get(value);
|
|
6085
|
+
is_promise >>>= 0;
|
|
5198
6086
|
var r = h.isPromise() ? 1 : 0;
|
|
5199
6087
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5200
6088
|
HEAP_DATA_VIEW.setInt8(is_promise, r, true);
|
|
@@ -5338,9 +6226,10 @@ function createNapiModule(options) {
|
|
|
5338
6226
|
}
|
|
5339
6227
|
}
|
|
5340
6228
|
}
|
|
6229
|
+
result >>>= 0;
|
|
5341
6230
|
value = emnapiCtx.addToCurrentScope(ret).id;
|
|
5342
6231
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5343
|
-
HEAP_DATA_VIEW.
|
|
6232
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5344
6233
|
return envObject.getReturnStatus();
|
|
5345
6234
|
}
|
|
5346
6235
|
catch (err) {
|
|
@@ -5409,6 +6298,7 @@ function createNapiModule(options) {
|
|
|
5409
6298
|
catch (_) {
|
|
5410
6299
|
return envObject.setLastError(2);
|
|
5411
6300
|
}
|
|
6301
|
+
result >>>= 0;
|
|
5412
6302
|
r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
|
|
5413
6303
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5414
6304
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5448,9 +6338,10 @@ function createNapiModule(options) {
|
|
|
5448
6338
|
catch (_) {
|
|
5449
6339
|
return envObject.setLastError(2);
|
|
5450
6340
|
}
|
|
6341
|
+
result >>>= 0;
|
|
5451
6342
|
value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
|
|
5452
6343
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5453
|
-
HEAP_DATA_VIEW.
|
|
6344
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5454
6345
|
return envObject.getReturnStatus();
|
|
5455
6346
|
}
|
|
5456
6347
|
catch (err) {
|
|
@@ -5491,6 +6382,7 @@ function createNapiModule(options) {
|
|
|
5491
6382
|
}
|
|
5492
6383
|
}
|
|
5493
6384
|
if (result) {
|
|
6385
|
+
result >>>= 0;
|
|
5494
6386
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5495
6387
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5496
6388
|
}
|
|
@@ -5535,6 +6427,7 @@ function createNapiModule(options) {
|
|
|
5535
6427
|
return envObject.setLastError(4);
|
|
5536
6428
|
}
|
|
5537
6429
|
r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
|
|
6430
|
+
result >>>= 0;
|
|
5538
6431
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5539
6432
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5540
6433
|
return envObject.getReturnStatus();
|
|
@@ -5566,6 +6459,7 @@ function createNapiModule(options) {
|
|
|
5566
6459
|
if (!cname) {
|
|
5567
6460
|
return envObject.setLastError(1);
|
|
5568
6461
|
}
|
|
6462
|
+
cname >>>= 0;
|
|
5569
6463
|
emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
|
|
5570
6464
|
return envObject.getReturnStatus();
|
|
5571
6465
|
}
|
|
@@ -5604,6 +6498,8 @@ function createNapiModule(options) {
|
|
|
5604
6498
|
catch (_) {
|
|
5605
6499
|
return envObject.setLastError(2);
|
|
5606
6500
|
}
|
|
6501
|
+
utf8name >>>= 0;
|
|
6502
|
+
result >>>= 0;
|
|
5607
6503
|
r = emnapiString.UTF8ToString(utf8name, -1) in v;
|
|
5608
6504
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5609
6505
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
@@ -5644,9 +6540,11 @@ function createNapiModule(options) {
|
|
|
5644
6540
|
catch (_) {
|
|
5645
6541
|
return envObject.setLastError(2);
|
|
5646
6542
|
}
|
|
6543
|
+
utf8name >>>= 0;
|
|
6544
|
+
result >>>= 0;
|
|
5647
6545
|
value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
|
|
5648
6546
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5649
|
-
HEAP_DATA_VIEW.
|
|
6547
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5650
6548
|
return envObject.getReturnStatus();
|
|
5651
6549
|
}
|
|
5652
6550
|
catch (err) {
|
|
@@ -5708,6 +6606,7 @@ function createNapiModule(options) {
|
|
|
5708
6606
|
catch (_) {
|
|
5709
6607
|
return envObject.setLastError(2);
|
|
5710
6608
|
}
|
|
6609
|
+
result >>>= 0;
|
|
5711
6610
|
r = ((index >>> 0) in v) ? 1 : 0;
|
|
5712
6611
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5713
6612
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5745,9 +6644,10 @@ function createNapiModule(options) {
|
|
|
5745
6644
|
catch (_) {
|
|
5746
6645
|
return envObject.setLastError(2);
|
|
5747
6646
|
}
|
|
6647
|
+
result >>>= 0;
|
|
5748
6648
|
value = envObject.ensureHandleId(v[index >>> 0]);
|
|
5749
6649
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5750
|
-
HEAP_DATA_VIEW.
|
|
6650
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5751
6651
|
return envObject.getReturnStatus();
|
|
5752
6652
|
}
|
|
5753
6653
|
catch (err) {
|
|
@@ -5785,6 +6685,7 @@ function createNapiModule(options) {
|
|
|
5785
6685
|
}
|
|
5786
6686
|
}
|
|
5787
6687
|
if (result) {
|
|
6688
|
+
result >>>= 0;
|
|
5788
6689
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5789
6690
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5790
6691
|
}
|
|
@@ -5807,6 +6708,8 @@ function createNapiModule(options) {
|
|
|
5807
6708
|
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
5808
6709
|
envObject.clearLastError();
|
|
5809
6710
|
try {
|
|
6711
|
+
properties >>>= 0;
|
|
6712
|
+
property_count >>>= 0;
|
|
5810
6713
|
property_count = property_count >>> 0;
|
|
5811
6714
|
if (property_count > 0) {
|
|
5812
6715
|
if (!properties)
|
|
@@ -5823,14 +6726,15 @@ function createNapiModule(options) {
|
|
|
5823
6726
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5824
6727
|
for (var i = 0; i < property_count; i++) {
|
|
5825
6728
|
propPtr = properties + (i * (4 * 8));
|
|
5826
|
-
var utf8Name = HEAP_DATA_VIEW.
|
|
5827
|
-
var name_2 = HEAP_DATA_VIEW.
|
|
5828
|
-
var method = HEAP_DATA_VIEW.
|
|
5829
|
-
var getter = HEAP_DATA_VIEW.
|
|
5830
|
-
var setter = HEAP_DATA_VIEW.
|
|
5831
|
-
var value = HEAP_DATA_VIEW.
|
|
6729
|
+
var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
|
|
6730
|
+
var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
|
|
6731
|
+
var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
|
|
6732
|
+
var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
|
|
6733
|
+
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
6734
|
+
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
5832
6735
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
5833
|
-
|
|
6736
|
+
attributes >>>= 0;
|
|
6737
|
+
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
5834
6738
|
if (utf8Name) {
|
|
5835
6739
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
5836
6740
|
}
|
|
@@ -5947,9 +6851,10 @@ function createNapiModule(options) {
|
|
|
5947
6851
|
}
|
|
5948
6852
|
var g = emnapiCtx.handleStore.get(5).value;
|
|
5949
6853
|
var ret = g.eval(v8Script.value);
|
|
6854
|
+
result >>>= 0;
|
|
5950
6855
|
value = envObject.ensureHandleId(ret);
|
|
5951
6856
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5952
|
-
HEAP_DATA_VIEW.
|
|
6857
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5953
6858
|
status = envObject.getReturnStatus();
|
|
5954
6859
|
}
|
|
5955
6860
|
catch (err) {
|
|
@@ -5972,6 +6877,7 @@ function createNapiModule(options) {
|
|
|
5972
6877
|
if (!result)
|
|
5973
6878
|
return envObject.setLastError(1);
|
|
5974
6879
|
var v = emnapiCtx.handleStore.get(value);
|
|
6880
|
+
result >>>= 0;
|
|
5975
6881
|
var r;
|
|
5976
6882
|
if (v.isNumber()) {
|
|
5977
6883
|
r = 3;
|
|
@@ -6027,9 +6933,10 @@ function createNapiModule(options) {
|
|
|
6027
6933
|
if (!result)
|
|
6028
6934
|
return envObject.setLastError(1);
|
|
6029
6935
|
var handle = emnapiCtx.handleStore.get(value);
|
|
6936
|
+
result >>>= 0;
|
|
6030
6937
|
v = handle.value ? 4 : 3;
|
|
6031
6938
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6032
|
-
HEAP_DATA_VIEW.
|
|
6939
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6033
6940
|
return envObject.getReturnStatus();
|
|
6034
6941
|
}
|
|
6035
6942
|
catch (err) {
|
|
@@ -6057,9 +6964,10 @@ function createNapiModule(options) {
|
|
|
6057
6964
|
if (handle.isBigInt()) {
|
|
6058
6965
|
throw new TypeError('Cannot convert a BigInt value to a number');
|
|
6059
6966
|
}
|
|
6967
|
+
result >>>= 0;
|
|
6060
6968
|
v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
|
|
6061
6969
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6062
|
-
HEAP_DATA_VIEW.
|
|
6970
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6063
6971
|
return envObject.getReturnStatus();
|
|
6064
6972
|
}
|
|
6065
6973
|
catch (err) {
|
|
@@ -6087,9 +6995,10 @@ function createNapiModule(options) {
|
|
|
6087
6995
|
if (handle.value == null) {
|
|
6088
6996
|
throw new TypeError('Cannot convert undefined or null to object');
|
|
6089
6997
|
}
|
|
6998
|
+
result >>>= 0;
|
|
6090
6999
|
v = envObject.ensureHandleId(Object(handle.value));
|
|
6091
7000
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6092
|
-
HEAP_DATA_VIEW.
|
|
7001
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6093
7002
|
return envObject.getReturnStatus();
|
|
6094
7003
|
}
|
|
6095
7004
|
catch (err) {
|
|
@@ -6117,9 +7026,10 @@ function createNapiModule(options) {
|
|
|
6117
7026
|
if (handle.isSymbol()) {
|
|
6118
7027
|
throw new TypeError('Cannot convert a Symbol value to a string');
|
|
6119
7028
|
}
|
|
7029
|
+
result >>>= 0;
|
|
6120
7030
|
v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
|
|
6121
7031
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6122
|
-
HEAP_DATA_VIEW.
|
|
7032
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6123
7033
|
return envObject.getReturnStatus();
|
|
6124
7034
|
}
|
|
6125
7035
|
catch (err) {
|
|
@@ -6145,6 +7055,7 @@ function createNapiModule(options) {
|
|
|
6145
7055
|
return envObject.setLastError(1);
|
|
6146
7056
|
if (!constructor)
|
|
6147
7057
|
return envObject.setLastError(1);
|
|
7058
|
+
result >>>= 0;
|
|
6148
7059
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6149
7060
|
HEAP_DATA_VIEW.setInt8(result, 0, true);
|
|
6150
7061
|
var ctor = emnapiCtx.handleStore.get(constructor);
|
|
@@ -6172,6 +7083,7 @@ function createNapiModule(options) {
|
|
|
6172
7083
|
if (!result)
|
|
6173
7084
|
return envObject.setLastError(1);
|
|
6174
7085
|
var h = emnapiCtx.handleStore.get(value);
|
|
7086
|
+
result >>>= 0;
|
|
6175
7087
|
var r = h.isArray() ? 1 : 0;
|
|
6176
7088
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6177
7089
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6187,11 +7099,31 @@ function createNapiModule(options) {
|
|
|
6187
7099
|
if (!result)
|
|
6188
7100
|
return envObject.setLastError(1);
|
|
6189
7101
|
var h = emnapiCtx.handleStore.get(value);
|
|
7102
|
+
result >>>= 0;
|
|
6190
7103
|
var r = h.isArrayBuffer() ? 1 : 0;
|
|
6191
7104
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6192
7105
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
6193
7106
|
return envObject.clearLastError();
|
|
6194
7107
|
}
|
|
7108
|
+
function node_api_is_sharedarraybuffer(env, value, result) {
|
|
7109
|
+
if (!env)
|
|
7110
|
+
return 1;
|
|
7111
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
7112
|
+
envObject.checkGCAccess();
|
|
7113
|
+
if (!value)
|
|
7114
|
+
return envObject.setLastError(1);
|
|
7115
|
+
if (!result)
|
|
7116
|
+
return envObject.setLastError(1);
|
|
7117
|
+
var h = emnapiCtx.handleStore.get(value);
|
|
7118
|
+
result >>>= 0;
|
|
7119
|
+
var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
|
|
7120
|
+
(Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
|
|
7121
|
+
? 1
|
|
7122
|
+
: 0;
|
|
7123
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7124
|
+
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
7125
|
+
return envObject.clearLastError();
|
|
7126
|
+
}
|
|
6195
7127
|
function napi_is_date(env, value, result) {
|
|
6196
7128
|
if (!env)
|
|
6197
7129
|
return 1;
|
|
@@ -6202,6 +7134,7 @@ function createNapiModule(options) {
|
|
|
6202
7134
|
if (!result)
|
|
6203
7135
|
return envObject.setLastError(1);
|
|
6204
7136
|
var h = emnapiCtx.handleStore.get(value);
|
|
7137
|
+
result >>>= 0;
|
|
6205
7138
|
var r = h.isDate() ? 1 : 0;
|
|
6206
7139
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6207
7140
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6217,6 +7150,7 @@ function createNapiModule(options) {
|
|
|
6217
7150
|
if (!result)
|
|
6218
7151
|
return envObject.setLastError(1);
|
|
6219
7152
|
var val = emnapiCtx.handleStore.get(value).value;
|
|
7153
|
+
result >>>= 0;
|
|
6220
7154
|
var r = (val instanceof Error) ? 1 : 0;
|
|
6221
7155
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6222
7156
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6232,6 +7166,7 @@ function createNapiModule(options) {
|
|
|
6232
7166
|
if (!result)
|
|
6233
7167
|
return envObject.setLastError(1);
|
|
6234
7168
|
var h = emnapiCtx.handleStore.get(value);
|
|
7169
|
+
result >>>= 0;
|
|
6235
7170
|
var r = h.isTypedArray() ? 1 : 0;
|
|
6236
7171
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6237
7172
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6247,6 +7182,7 @@ function createNapiModule(options) {
|
|
|
6247
7182
|
if (!result)
|
|
6248
7183
|
return envObject.setLastError(1);
|
|
6249
7184
|
var h = emnapiCtx.handleStore.get(value);
|
|
7185
|
+
result >>>= 0;
|
|
6250
7186
|
var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
|
|
6251
7187
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6252
7188
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6262,6 +7198,7 @@ function createNapiModule(options) {
|
|
|
6262
7198
|
if (!result)
|
|
6263
7199
|
return envObject.setLastError(1);
|
|
6264
7200
|
var h = emnapiCtx.handleStore.get(value);
|
|
7201
|
+
result >>>= 0;
|
|
6265
7202
|
var r = h.isDataView() ? 1 : 0;
|
|
6266
7203
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6267
7204
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6287,6 +7224,7 @@ function createNapiModule(options) {
|
|
|
6287
7224
|
return envObject.setLastError(1);
|
|
6288
7225
|
var lv = emnapiCtx.handleStore.get(lhs).value;
|
|
6289
7226
|
var rv = emnapiCtx.handleStore.get(rhs).value;
|
|
7227
|
+
result >>>= 0;
|
|
6290
7228
|
r = (lv === rv) ? 1 : 0;
|
|
6291
7229
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6292
7230
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6337,6 +7275,7 @@ function createNapiModule(options) {
|
|
|
6337
7275
|
if (!result)
|
|
6338
7276
|
return envObject.setLastError(1);
|
|
6339
7277
|
var h = emnapiCtx.handleStore.get(arraybuffer);
|
|
7278
|
+
result >>>= 0;
|
|
6340
7279
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6341
7280
|
if (h.isArrayBuffer() && h.value.byteLength === 0) {
|
|
6342
7281
|
try {
|
|
@@ -6372,7 +7311,8 @@ function createNapiModule(options) {
|
|
|
6372
7311
|
napi_is_error: napi_is_error,
|
|
6373
7312
|
napi_is_typedarray: napi_is_typedarray,
|
|
6374
7313
|
napi_strict_equals: napi_strict_equals,
|
|
6375
|
-
napi_typeof: napi_typeof
|
|
7314
|
+
napi_typeof: napi_typeof,
|
|
7315
|
+
node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer
|
|
6376
7316
|
});
|
|
6377
7317
|
function napi_get_version(env, result) {
|
|
6378
7318
|
if (!env)
|
|
@@ -6391,11 +7331,13 @@ function createNapiModule(options) {
|
|
|
6391
7331
|
});
|
|
6392
7332
|
emnapiAWST.init();
|
|
6393
7333
|
emnapiExternalMemory.init();
|
|
7334
|
+
emnapiExternalSAB.init();
|
|
6394
7335
|
emnapiString.init();
|
|
6395
7336
|
emnapiTSFN.init();
|
|
6396
7337
|
PThread.init();
|
|
6397
7338
|
napiModule.emnapi.syncMemory = $emnapiSyncMemory;
|
|
6398
7339
|
napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
|
|
7340
|
+
napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
|
|
6399
7341
|
function addImports(mod) {
|
|
6400
7342
|
var keys = Object.keys(mod);
|
|
6401
7343
|
for (var i = 0; i < keys.length; ++i) {
|
|
@@ -6610,7 +7552,23 @@ class MessageHandler extends ThreadMessageHandler {
|
|
|
6610
7552
|
if (typeof options.onLoad !== 'function') {
|
|
6611
7553
|
throw new TypeError('options.onLoad is not a function');
|
|
6612
7554
|
}
|
|
6613
|
-
|
|
7555
|
+
const userOnError = options.onError;
|
|
7556
|
+
super({
|
|
7557
|
+
...options,
|
|
7558
|
+
onError: (err, type) => {
|
|
7559
|
+
var _a;
|
|
7560
|
+
const emnapi_thread_crashed = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed;
|
|
7561
|
+
if (typeof emnapi_thread_crashed === 'function') {
|
|
7562
|
+
emnapi_thread_crashed();
|
|
7563
|
+
}
|
|
7564
|
+
if (typeof userOnError === 'function') {
|
|
7565
|
+
userOnError(err, type);
|
|
7566
|
+
}
|
|
7567
|
+
else {
|
|
7568
|
+
throw err;
|
|
7569
|
+
}
|
|
7570
|
+
}
|
|
7571
|
+
});
|
|
6614
7572
|
this.napiModule = undefined;
|
|
6615
7573
|
}
|
|
6616
7574
|
instantiate(data) {
|
|
@@ -6631,20 +7589,20 @@ class MessageHandler extends ThreadMessageHandler {
|
|
|
6631
7589
|
if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
|
|
6632
7590
|
const type = e.data.__emnapi__.type;
|
|
6633
7591
|
const payload = e.data.__emnapi__.payload;
|
|
6634
|
-
|
|
6635
|
-
|
|
6636
|
-
this.
|
|
6637
|
-
|
|
7592
|
+
try {
|
|
7593
|
+
if (type === 'async-worker-init') {
|
|
7594
|
+
this.handleAfterLoad(e, () => {
|
|
7595
|
+
this.napiModule.initWorker(payload.arg, payload.func);
|
|
7596
|
+
});
|
|
7597
|
+
}
|
|
6638
7598
|
}
|
|
6639
|
-
|
|
6640
|
-
this.
|
|
6641
|
-
this.napiModule.executeAsyncWork(payload.work);
|
|
6642
|
-
});
|
|
7599
|
+
catch (err) {
|
|
7600
|
+
this.onError(err, type);
|
|
6643
7601
|
}
|
|
6644
7602
|
}
|
|
6645
7603
|
}
|
|
6646
7604
|
}
|
|
6647
7605
|
|
|
6648
|
-
const version = "1.
|
|
7606
|
+
const version = "1.11.1";
|
|
6649
7607
|
|
|
6650
7608
|
export { MessageHandler, createNapiModule, instantiateNapiModule, instantiateNapiModuleSync, loadNapiModule, loadNapiModuleSync, version };
|