@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.d593a21 → 0.0.0-insiders.d5ca0ae
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 +1301 -389
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +3 -3
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +3 -3
- package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +3 -3
- package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1454 -428
- package/node_modules/@emnapi/core/dist/emnapi-core.js +1475 -461
- package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +3 -3
- 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 +1301 -389
- package/node_modules/@emnapi/core/package.json +2 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +32 -5
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +11 -3
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +11 -3
- package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +11 -3
- package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +33 -5
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +8 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +33 -5
- package/node_modules/@emnapi/runtime/dist/emnapi.js +33 -5
- package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +11 -3
- 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 +32 -5
- package/node_modules/@emnapi/runtime/package.json +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +21 -33
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +21 -33
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +21 -33
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +21 -33
- package/node_modules/@emnapi/wasi-threads/package.json +1 -1
- package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +47 -12
- package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +20687 -20248
- package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +47 -12
- package/node_modules/@napi-rs/wasm-runtime/package.json +19 -11
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
- package/node_modules/@tybys/wasm-util/dist/wasm-util.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +22 -2
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +22 -2
- package/node_modules/@tybys/wasm-util/package.json +1 -1
- package/package.json +7 -7
- package/tailwindcss-oxide.wasi-browser.js +1 -0
- package/tailwindcss-oxide.wasi.cjs +1 -1
- package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
- package/wasi-worker-browser.mjs +2 -0
|
@@ -108,7 +108,6 @@ function createNapiModule(options) {
|
|
|
108
108
|
filename: '',
|
|
109
109
|
childThread: ENVIRONMENT_IS_PTHREAD,
|
|
110
110
|
initWorker: undefined,
|
|
111
|
-
executeAsyncWork: undefined,
|
|
112
111
|
waitThreadStart: waitThreadStart,
|
|
113
112
|
PThread: undefined,
|
|
114
113
|
init: function (options) {
|
|
@@ -296,6 +295,9 @@ function createNapiModule(options) {
|
|
|
296
295
|
return envObject.clearLastError();
|
|
297
296
|
}
|
|
298
297
|
function _emnapi_get_node_version(major, minor, patch) {
|
|
298
|
+
major >>>= 0;
|
|
299
|
+
minor >>>= 0;
|
|
300
|
+
patch >>>= 0;
|
|
299
301
|
var versions = (typeof process === 'object' && process !== null &&
|
|
300
302
|
typeof process.versions === 'object' && process.versions !== null &&
|
|
301
303
|
typeof process.versions.node === 'string')
|
|
@@ -339,6 +341,7 @@ function createNapiModule(options) {
|
|
|
339
341
|
}
|
|
340
342
|
function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
|
|
341
343
|
var envObject = emnapiCtx.envStore.get(env);
|
|
344
|
+
callback >>>= 0;
|
|
342
345
|
envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
|
|
343
346
|
}
|
|
344
347
|
function _emnapi_ctx_increase_waiting_request_counter() {
|
|
@@ -403,9 +406,19 @@ function createNapiModule(options) {
|
|
|
403
406
|
var worker = PThread.pthreads[tid];
|
|
404
407
|
return worker;
|
|
405
408
|
}
|
|
409
|
+
function _emnapi_worker_ref(pthreadPtr) {
|
|
410
|
+
if (ENVIRONMENT_IS_PTHREAD)
|
|
411
|
+
return;
|
|
412
|
+
pthreadPtr >>>= 0;
|
|
413
|
+
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
414
|
+
if (worker && typeof worker.ref === 'function') {
|
|
415
|
+
worker.ref();
|
|
416
|
+
}
|
|
417
|
+
}
|
|
406
418
|
function _emnapi_worker_unref(pthreadPtr) {
|
|
407
419
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
408
420
|
return;
|
|
421
|
+
pthreadPtr >>>= 0;
|
|
409
422
|
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
410
423
|
if (worker && typeof worker.unref === 'function') {
|
|
411
424
|
worker.unref();
|
|
@@ -506,6 +519,7 @@ function createNapiModule(options) {
|
|
|
506
519
|
_emnapi_async_send_js: _emnapi_async_send_js,
|
|
507
520
|
_emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
|
|
508
521
|
_emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
|
|
522
|
+
_emnapi_worker_ref: _emnapi_worker_ref,
|
|
509
523
|
_emnapi_worker_unref: _emnapi_worker_unref
|
|
510
524
|
});
|
|
511
525
|
function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
|
|
@@ -514,22 +528,14 @@ function createNapiModule(options) {
|
|
|
514
528
|
var envObject = emnapiCtx.envStore.get(env);
|
|
515
529
|
if (!adjusted_value)
|
|
516
530
|
return envObject.setLastError(1);
|
|
517
|
-
var
|
|
518
|
-
|
|
519
|
-
return envObject.setLastError(1);
|
|
520
|
-
}
|
|
521
|
-
var old_size = wasmMemory.buffer.byteLength;
|
|
522
|
-
var new_size = old_size + change_in_bytes_number;
|
|
523
|
-
new_size = new_size + ((65536 - new_size % 65536) % 65536);
|
|
524
|
-
if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
|
|
525
|
-
return envObject.setLastError(9);
|
|
526
|
-
}
|
|
531
|
+
var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
|
|
532
|
+
adjusted_value >>>= 0;
|
|
527
533
|
if (emnapiCtx.feature.supportBigInt) {
|
|
528
534
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
529
|
-
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(
|
|
535
|
+
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
|
|
530
536
|
}
|
|
531
537
|
else {
|
|
532
|
-
$emnapiSetValueI64(adjusted_value,
|
|
538
|
+
$emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
|
|
533
539
|
}
|
|
534
540
|
return envObject.clearLastError();
|
|
535
541
|
}
|
|
@@ -687,6 +693,7 @@ function createNapiModule(options) {
|
|
|
687
693
|
var asyncId = asyncContext.asyncId;
|
|
688
694
|
var triggerAsyncId = asyncContext.triggerAsyncId;
|
|
689
695
|
if (result) {
|
|
696
|
+
result >>>= 0;
|
|
690
697
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
691
698
|
HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
|
|
692
699
|
HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
|
|
@@ -707,6 +714,8 @@ function createNapiModule(options) {
|
|
|
707
714
|
return;
|
|
708
715
|
var resource = emnapiCtx.handleStore.get(async_resource).value;
|
|
709
716
|
var callback = emnapiCtx.handleStore.get(cb).value;
|
|
717
|
+
argv >>>= 0;
|
|
718
|
+
size >>>= 0;
|
|
710
719
|
size = size >>> 0;
|
|
711
720
|
var arr = Array(size);
|
|
712
721
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -719,6 +728,7 @@ function createNapiModule(options) {
|
|
|
719
728
|
triggerAsyncId: trigger_async_id
|
|
720
729
|
});
|
|
721
730
|
if (result) {
|
|
731
|
+
result >>>= 0;
|
|
722
732
|
var envObject = emnapiCtx.envStore.get(env);
|
|
723
733
|
v = envObject.ensureHandleId(ret);
|
|
724
734
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -745,6 +755,7 @@ function createNapiModule(options) {
|
|
|
745
755
|
}
|
|
746
756
|
var low = Number(numberValue & BigInt(0xffffffff));
|
|
747
757
|
var high = Number(numberValue >> BigInt(32));
|
|
758
|
+
result >>>= 0;
|
|
748
759
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
749
760
|
HEAP_DATA_VIEW.setInt32(result, low, true);
|
|
750
761
|
HEAP_DATA_VIEW.setInt32(result + 4, high, true);
|
|
@@ -754,6 +765,7 @@ function createNapiModule(options) {
|
|
|
754
765
|
if (!emnapiNodeBinding) {
|
|
755
766
|
return 9;
|
|
756
767
|
}
|
|
768
|
+
async_context >>>= 0;
|
|
757
769
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
758
770
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
759
771
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
@@ -796,10 +808,13 @@ function createNapiModule(options) {
|
|
|
796
808
|
if (typeof v8func !== 'function') {
|
|
797
809
|
return envObject.setLastError(1);
|
|
798
810
|
}
|
|
811
|
+
async_context >>>= 0;
|
|
799
812
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
800
813
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
801
814
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
802
815
|
var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
|
|
816
|
+
argv >>>= 0;
|
|
817
|
+
argc >>>= 0;
|
|
803
818
|
argc = argc >>> 0;
|
|
804
819
|
var arr = Array(argc);
|
|
805
820
|
for (; i < argc; i++) {
|
|
@@ -813,6 +828,7 @@ function createNapiModule(options) {
|
|
|
813
828
|
if (ret.status !== 0)
|
|
814
829
|
return envObject.setLastError(ret.status);
|
|
815
830
|
if (result) {
|
|
831
|
+
result >>>= 0;
|
|
816
832
|
v = envObject.ensureHandleId(ret.value);
|
|
817
833
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
818
834
|
}
|
|
@@ -840,32 +856,61 @@ function createNapiModule(options) {
|
|
|
840
856
|
napi_open_callback_scope: napi_open_callback_scope
|
|
841
857
|
});
|
|
842
858
|
var emnapiTSFN = {
|
|
859
|
+
_liveSet: {},
|
|
843
860
|
offset: {
|
|
861
|
+
__size__: 0,
|
|
844
862
|
resource: 0,
|
|
845
|
-
async_id:
|
|
846
|
-
trigger_async_id:
|
|
847
|
-
queue_size:
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
863
|
+
async_id: 0,
|
|
864
|
+
trigger_async_id: 0,
|
|
865
|
+
queue_size: 0,
|
|
866
|
+
is_some: 0,
|
|
867
|
+
queue: 0,
|
|
868
|
+
async_pending: 0,
|
|
869
|
+
async_u_fd: 0,
|
|
870
|
+
thread_count: 0,
|
|
871
|
+
state: 0,
|
|
872
|
+
dispatch_state: 0,
|
|
873
|
+
context: 0,
|
|
874
|
+
max_queue_size: 0,
|
|
875
|
+
ref: 0,
|
|
876
|
+
env: 0,
|
|
877
|
+
finalize_data: 0,
|
|
878
|
+
finalize_cb: 0,
|
|
879
|
+
call_js_cb: 0,
|
|
880
|
+
handles_closing: 0,
|
|
881
|
+
async_ref: 0,
|
|
882
|
+
mutex: 0,
|
|
883
|
+
cond: 0
|
|
864
884
|
},
|
|
865
885
|
init: function () {
|
|
886
|
+
emnapiTSFN._liveSet = new Set();
|
|
887
|
+
emnapiTSFN.offset.__size__ = 184;
|
|
888
|
+
emnapiTSFN.offset.resource = 0;
|
|
889
|
+
emnapiTSFN.offset.async_id = 8;
|
|
890
|
+
emnapiTSFN.offset.trigger_async_id = 16;
|
|
891
|
+
emnapiTSFN.offset.queue_size = 60;
|
|
892
|
+
emnapiTSFN.offset.is_some = 24;
|
|
893
|
+
emnapiTSFN.offset.queue = 64;
|
|
894
|
+
emnapiTSFN.offset.async_pending = 132;
|
|
895
|
+
emnapiTSFN.offset.async_u_fd = 96;
|
|
896
|
+
emnapiTSFN.offset.thread_count = 136;
|
|
897
|
+
emnapiTSFN.offset.state = 140;
|
|
898
|
+
emnapiTSFN.offset.dispatch_state = 144;
|
|
899
|
+
emnapiTSFN.offset.context = 148;
|
|
900
|
+
emnapiTSFN.offset.max_queue_size = 152;
|
|
901
|
+
emnapiTSFN.offset.ref = 156;
|
|
902
|
+
emnapiTSFN.offset.env = 160;
|
|
903
|
+
emnapiTSFN.offset.finalize_data = 164;
|
|
904
|
+
emnapiTSFN.offset.finalize_cb = 168;
|
|
905
|
+
emnapiTSFN.offset.call_js_cb = 172;
|
|
906
|
+
emnapiTSFN.offset.handles_closing = 176;
|
|
907
|
+
emnapiTSFN.offset.async_ref = 180;
|
|
908
|
+
emnapiTSFN.offset.mutex = 32;
|
|
909
|
+
emnapiTSFN.offset.cond = 56;
|
|
910
|
+
emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
|
|
866
911
|
if (typeof PThread !== 'undefined') {
|
|
867
912
|
PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
|
|
868
|
-
PThread.
|
|
913
|
+
Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
|
|
869
914
|
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
870
915
|
PThread.getNewWorker = function () {
|
|
871
916
|
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
@@ -886,7 +931,10 @@ function createNapiModule(options) {
|
|
|
886
931
|
var type = __emnapi__.type;
|
|
887
932
|
var payload = __emnapi__.payload;
|
|
888
933
|
if (type === 'tsfn-send') {
|
|
889
|
-
emnapiTSFN.
|
|
934
|
+
var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
|
|
935
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
936
|
+
emnapiTSFN.enqueue(payload.tsfn);
|
|
937
|
+
}
|
|
890
938
|
}
|
|
891
939
|
}
|
|
892
940
|
};
|
|
@@ -908,18 +956,33 @@ function createNapiModule(options) {
|
|
|
908
956
|
}
|
|
909
957
|
return true;
|
|
910
958
|
},
|
|
959
|
+
ensureBufferFor: function (end) {
|
|
960
|
+
var buffer = wasmMemory.buffer;
|
|
961
|
+
if (end > buffer.byteLength) {
|
|
962
|
+
wasmMemory.grow(0);
|
|
963
|
+
buffer = wasmMemory.buffer;
|
|
964
|
+
}
|
|
965
|
+
return buffer;
|
|
966
|
+
},
|
|
911
967
|
initQueue: function (func) {
|
|
912
968
|
var size = 2 * 4;
|
|
913
969
|
var queue = _malloc(size);
|
|
914
970
|
if (!queue)
|
|
915
971
|
return false;
|
|
916
|
-
|
|
972
|
+
queue >>>= 0;
|
|
973
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
|
|
917
974
|
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
918
975
|
return true;
|
|
919
976
|
},
|
|
920
977
|
destroyQueue: function (func) {
|
|
921
978
|
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
922
979
|
if (queue) {
|
|
980
|
+
var node = emnapiTSFN.loadSizeTypeValue(queue, false);
|
|
981
|
+
while (node !== 0) {
|
|
982
|
+
var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
|
|
983
|
+
_free(node);
|
|
984
|
+
node = next;
|
|
985
|
+
}
|
|
923
986
|
_free(queue);
|
|
924
987
|
}
|
|
925
988
|
},
|
|
@@ -931,6 +994,7 @@ function createNapiModule(options) {
|
|
|
931
994
|
var node = _malloc(size);
|
|
932
995
|
if (!node)
|
|
933
996
|
throw new Error('OOM');
|
|
997
|
+
node >>>= 0;
|
|
934
998
|
emnapiTSFN.storeSizeTypeValue(node, data, false);
|
|
935
999
|
emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
|
|
936
1000
|
if (head === 0 && tail === 0) {
|
|
@@ -966,11 +1030,11 @@ function createNapiModule(options) {
|
|
|
966
1030
|
var waitCondition = function () {
|
|
967
1031
|
var queueSize = emnapiTSFN.getQueueSize(func);
|
|
968
1032
|
var maxSize = emnapiTSFN.getMaxQueueSize(func);
|
|
969
|
-
|
|
970
|
-
return queueSize >= maxSize && maxSize > 0 && !isClosing;
|
|
1033
|
+
return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
|
|
971
1034
|
};
|
|
972
1035
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
973
|
-
|
|
1036
|
+
var shouldDelete = false;
|
|
1037
|
+
var ret = mutex.execute(function () {
|
|
974
1038
|
while (waitCondition()) {
|
|
975
1039
|
if (mode === 0) {
|
|
976
1040
|
return 15;
|
|
@@ -980,31 +1044,35 @@ function createNapiModule(options) {
|
|
|
980
1044
|
}
|
|
981
1045
|
cond.wait();
|
|
982
1046
|
}
|
|
983
|
-
if (emnapiTSFN.
|
|
984
|
-
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
985
|
-
return 1;
|
|
986
|
-
}
|
|
987
|
-
else {
|
|
988
|
-
emnapiTSFN.subThreadCount(func);
|
|
989
|
-
return 16;
|
|
990
|
-
}
|
|
991
|
-
}
|
|
992
|
-
else {
|
|
1047
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
993
1048
|
emnapiTSFN.pushQueue(func, data);
|
|
994
1049
|
emnapiTSFN.send(func);
|
|
995
1050
|
return 0;
|
|
996
1051
|
}
|
|
1052
|
+
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1053
|
+
return 1;
|
|
1054
|
+
}
|
|
1055
|
+
emnapiTSFN.subThreadCount(func);
|
|
1056
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1057
|
+
return 16;
|
|
1058
|
+
}
|
|
1059
|
+
shouldDelete = true;
|
|
1060
|
+
return 16;
|
|
997
1061
|
});
|
|
1062
|
+
if (shouldDelete) {
|
|
1063
|
+
emnapiTSFN.destroy(func);
|
|
1064
|
+
}
|
|
1065
|
+
return ret;
|
|
998
1066
|
},
|
|
999
1067
|
getMutex: function (func) {
|
|
1000
1068
|
var index = func + emnapiTSFN.offset.mutex;
|
|
1001
1069
|
var mutex = {
|
|
1002
1070
|
lock: function () {
|
|
1003
1071
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1004
|
-
var i32a = new Int32Array(
|
|
1072
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1005
1073
|
if (isBrowserMain) {
|
|
1006
1074
|
while (true) {
|
|
1007
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1075
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1008
1076
|
if (oldValue === 0) {
|
|
1009
1077
|
return;
|
|
1010
1078
|
}
|
|
@@ -1012,18 +1080,18 @@ function createNapiModule(options) {
|
|
|
1012
1080
|
}
|
|
1013
1081
|
else {
|
|
1014
1082
|
while (true) {
|
|
1015
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1083
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1016
1084
|
if (oldValue === 0) {
|
|
1017
1085
|
return;
|
|
1018
1086
|
}
|
|
1019
|
-
Atomics.wait(i32a, 0,
|
|
1087
|
+
Atomics.wait(i32a, 0, 10);
|
|
1020
1088
|
}
|
|
1021
1089
|
}
|
|
1022
1090
|
},
|
|
1023
1091
|
unlock: function () {
|
|
1024
|
-
var i32a = new Int32Array(
|
|
1025
|
-
var oldValue = Atomics.compareExchange(i32a, 0,
|
|
1026
|
-
if (oldValue !==
|
|
1092
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1093
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1094
|
+
if (oldValue !== 10) {
|
|
1027
1095
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
1028
1096
|
}
|
|
1029
1097
|
Atomics.notify(i32a, 0, 1);
|
|
@@ -1045,14 +1113,14 @@ function createNapiModule(options) {
|
|
|
1045
1113
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1046
1114
|
var cond = {
|
|
1047
1115
|
wait: function () {
|
|
1048
|
-
var i32a = new Int32Array(
|
|
1116
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1049
1117
|
var value = Atomics.load(i32a, 0);
|
|
1050
1118
|
mutex.unlock();
|
|
1051
1119
|
Atomics.wait(i32a, 0, value);
|
|
1052
1120
|
mutex.lock();
|
|
1053
1121
|
},
|
|
1054
1122
|
signal: function () {
|
|
1055
|
-
var i32a = new Int32Array(
|
|
1123
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1056
1124
|
Atomics.add(i32a, 0, 1);
|
|
1057
1125
|
Atomics.notify(i32a, 0, 1);
|
|
1058
1126
|
}
|
|
@@ -1065,15 +1133,15 @@ function createNapiModule(options) {
|
|
|
1065
1133
|
addQueueSize: function (func) {
|
|
1066
1134
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1067
1135
|
var arr, index;
|
|
1068
|
-
arr = new Uint32Array(
|
|
1069
|
-
index = (func + offset)
|
|
1136
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1137
|
+
index = (func + offset) >>> 2;
|
|
1070
1138
|
Atomics.add(arr, index, 1);
|
|
1071
1139
|
},
|
|
1072
1140
|
subQueueSize: function (func) {
|
|
1073
1141
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1074
1142
|
var arr, index;
|
|
1075
|
-
arr = new Uint32Array(
|
|
1076
|
-
index = (func + offset)
|
|
1143
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1144
|
+
index = (func + offset) >>> 2;
|
|
1077
1145
|
Atomics.sub(arr, index, 1);
|
|
1078
1146
|
},
|
|
1079
1147
|
getThreadCount: function (func) {
|
|
@@ -1082,31 +1150,31 @@ function createNapiModule(options) {
|
|
|
1082
1150
|
addThreadCount: function (func) {
|
|
1083
1151
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1084
1152
|
var arr, index;
|
|
1085
|
-
arr = new Uint32Array(
|
|
1086
|
-
index = (func + offset)
|
|
1153
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1154
|
+
index = (func + offset) >>> 2;
|
|
1087
1155
|
Atomics.add(arr, index, 1);
|
|
1088
1156
|
},
|
|
1089
1157
|
subThreadCount: function (func) {
|
|
1090
1158
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1091
1159
|
var arr, index;
|
|
1092
|
-
arr = new Uint32Array(
|
|
1093
|
-
index = (func + offset)
|
|
1160
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1161
|
+
index = (func + offset) >>> 2;
|
|
1094
1162
|
Atomics.sub(arr, index, 1);
|
|
1095
1163
|
},
|
|
1096
|
-
|
|
1097
|
-
return Atomics.load(new Int32Array(
|
|
1164
|
+
getState: function (func) {
|
|
1165
|
+
return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
|
|
1098
1166
|
},
|
|
1099
|
-
|
|
1100
|
-
Atomics.store(new Int32Array(
|
|
1167
|
+
setState: function (func, value) {
|
|
1168
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
|
|
1101
1169
|
},
|
|
1102
1170
|
getHandlesClosing: function (func) {
|
|
1103
|
-
return Atomics.load(new
|
|
1171
|
+
return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
|
|
1104
1172
|
},
|
|
1105
1173
|
setHandlesClosing: function (func, value) {
|
|
1106
|
-
Atomics.store(new
|
|
1174
|
+
Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
|
|
1107
1175
|
},
|
|
1108
1176
|
getDispatchState: function (func) {
|
|
1109
|
-
return Atomics.load(new Uint32Array(
|
|
1177
|
+
return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
|
|
1110
1178
|
},
|
|
1111
1179
|
getContext: function (func) {
|
|
1112
1180
|
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
@@ -1136,66 +1204,96 @@ function createNapiModule(options) {
|
|
|
1136
1204
|
var ret;
|
|
1137
1205
|
var arr;
|
|
1138
1206
|
if (unsigned) {
|
|
1139
|
-
arr = new Uint32Array(
|
|
1140
|
-
ret = Atomics.load(arr, offset
|
|
1207
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1208
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1141
1209
|
return ret;
|
|
1142
1210
|
}
|
|
1143
1211
|
else {
|
|
1144
|
-
arr = new Int32Array(
|
|
1145
|
-
ret = Atomics.load(arr, offset
|
|
1212
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1213
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1146
1214
|
return ret;
|
|
1147
1215
|
}
|
|
1148
1216
|
},
|
|
1149
1217
|
storeSizeTypeValue: function (offset, value, unsigned) {
|
|
1150
1218
|
var arr;
|
|
1151
1219
|
if (unsigned) {
|
|
1152
|
-
arr = new Uint32Array(
|
|
1153
|
-
Atomics.store(arr, offset
|
|
1220
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1221
|
+
Atomics.store(arr, offset >>> 2, value);
|
|
1154
1222
|
return undefined;
|
|
1155
1223
|
}
|
|
1156
1224
|
else {
|
|
1157
|
-
arr = new Int32Array(
|
|
1158
|
-
Atomics.store(arr, offset
|
|
1225
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1226
|
+
Atomics.store(arr, offset >>> 2, value >>> 0);
|
|
1159
1227
|
return undefined;
|
|
1160
1228
|
}
|
|
1161
1229
|
},
|
|
1230
|
+
releaseResources: function (func) {
|
|
1231
|
+
if (emnapiTSFN.getState(func) !== 2) {
|
|
1232
|
+
emnapiTSFN.setState(func, 2);
|
|
1233
|
+
var env = emnapiTSFN.getEnv(func);
|
|
1234
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
1235
|
+
var ref = emnapiTSFN.getRef(func);
|
|
1236
|
+
if (ref) {
|
|
1237
|
+
emnapiCtx.refStore.get(ref).dispose();
|
|
1238
|
+
}
|
|
1239
|
+
var resource = emnapiTSFN.getResource(func);
|
|
1240
|
+
emnapiCtx.refStore.get(resource).dispose();
|
|
1241
|
+
emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
|
|
1242
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1243
|
+
HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
|
|
1244
|
+
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1245
|
+
envObject.unref();
|
|
1246
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1247
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1248
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1249
|
+
if (Atomics.load(arr, asyncRefOffset) > 0) {
|
|
1250
|
+
Atomics.store(arr, asyncRefOffset, 0);
|
|
1251
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1252
|
+
}
|
|
1253
|
+
if (emnapiNodeBinding) {
|
|
1254
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1255
|
+
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1256
|
+
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1257
|
+
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
},
|
|
1162
1261
|
destroy: function (func) {
|
|
1262
|
+
emnapiTSFN._liveSet.delete(func);
|
|
1163
1263
|
emnapiTSFN.destroyQueue(func);
|
|
1164
|
-
|
|
1165
|
-
var envObject = emnapiCtx.envStore.get(env);
|
|
1166
|
-
var ref = emnapiTSFN.getRef(func);
|
|
1167
|
-
if (ref) {
|
|
1168
|
-
emnapiCtx.refStore.get(ref).dispose();
|
|
1169
|
-
}
|
|
1170
|
-
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1171
|
-
envObject.unref();
|
|
1172
|
-
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
|
|
1173
|
-
var arr = new Int32Array(wasmMemory.buffer);
|
|
1174
|
-
if (Atomics.load(arr, asyncRefOffset)) {
|
|
1175
|
-
Atomics.store(arr, asyncRefOffset, 0);
|
|
1176
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1177
|
-
}
|
|
1178
|
-
var resource = emnapiTSFN.getResource(func);
|
|
1179
|
-
emnapiCtx.refStore.get(resource).dispose();
|
|
1180
|
-
if (emnapiNodeBinding) {
|
|
1181
|
-
var view = new DataView(wasmMemory.buffer);
|
|
1182
|
-
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1183
|
-
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1184
|
-
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1185
|
-
}
|
|
1264
|
+
emnapiTSFN.releaseResources(func);
|
|
1186
1265
|
_free(func);
|
|
1187
1266
|
},
|
|
1188
|
-
|
|
1267
|
+
emptyQueue: function (func) {
|
|
1268
|
+
var drainQueue = [];
|
|
1269
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1270
|
+
while (emnapiTSFN.getQueueSize(func) > 0) {
|
|
1271
|
+
drainQueue.push(emnapiTSFN.shiftQueue(func));
|
|
1272
|
+
}
|
|
1273
|
+
});
|
|
1189
1274
|
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
1190
1275
|
var context = emnapiTSFN.getContext(func);
|
|
1191
1276
|
var data;
|
|
1192
|
-
|
|
1193
|
-
data =
|
|
1277
|
+
for (var i = 0; i < drainQueue.length; i++) {
|
|
1278
|
+
data = drainQueue[i];
|
|
1194
1279
|
if (callJsCb) {
|
|
1195
1280
|
(wasmTable.get(callJsCb))(0, 0, context, data);
|
|
1196
1281
|
}
|
|
1197
1282
|
}
|
|
1198
|
-
|
|
1283
|
+
},
|
|
1284
|
+
maybeDelete: function (func) {
|
|
1285
|
+
var shouldDelete = false;
|
|
1286
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1287
|
+
if (emnapiTSFN.getThreadCount(func) > 0) {
|
|
1288
|
+
emnapiTSFN.releaseResources(func);
|
|
1289
|
+
}
|
|
1290
|
+
else {
|
|
1291
|
+
shouldDelete = true;
|
|
1292
|
+
}
|
|
1293
|
+
});
|
|
1294
|
+
if (shouldDelete) {
|
|
1295
|
+
emnapiTSFN.destroy(func);
|
|
1296
|
+
}
|
|
1199
1297
|
},
|
|
1200
1298
|
finalize: function (func) {
|
|
1201
1299
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1208,12 +1306,13 @@ function createNapiModule(options) {
|
|
|
1208
1306
|
envObject.callFinalizerInternal(0, finalize, data, context);
|
|
1209
1307
|
};
|
|
1210
1308
|
try {
|
|
1309
|
+
emnapiTSFN.emptyQueue(func);
|
|
1211
1310
|
if (finalize) {
|
|
1212
1311
|
if (emnapiNodeBinding) {
|
|
1213
1312
|
var resource = emnapiTSFN.getResource(func);
|
|
1214
1313
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1215
1314
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1216
|
-
var view = new DataView(
|
|
1315
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1217
1316
|
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1218
1317
|
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1219
1318
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
@@ -1225,7 +1324,7 @@ function createNapiModule(options) {
|
|
|
1225
1324
|
f();
|
|
1226
1325
|
}
|
|
1227
1326
|
}
|
|
1228
|
-
emnapiTSFN.
|
|
1327
|
+
emnapiTSFN.maybeDelete(func);
|
|
1229
1328
|
}
|
|
1230
1329
|
finally {
|
|
1231
1330
|
emnapiCtx.closeScope(envObject);
|
|
@@ -1241,7 +1340,7 @@ function createNapiModule(options) {
|
|
|
1241
1340
|
try {
|
|
1242
1341
|
if (set_closing) {
|
|
1243
1342
|
emnapiTSFN.getMutex(func).execute(function () {
|
|
1244
|
-
emnapiTSFN.
|
|
1343
|
+
emnapiTSFN.setState(func, 1);
|
|
1245
1344
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1246
1345
|
emnapiTSFN.getCond(func).signal();
|
|
1247
1346
|
}
|
|
@@ -1251,6 +1350,7 @@ function createNapiModule(options) {
|
|
|
1251
1350
|
return;
|
|
1252
1351
|
}
|
|
1253
1352
|
emnapiTSFN.setHandlesClosing(func, 1);
|
|
1353
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
|
|
1254
1354
|
emnapiCtx.feature.setImmediate(function () {
|
|
1255
1355
|
emnapiTSFN.finalize(func);
|
|
1256
1356
|
});
|
|
@@ -1266,10 +1366,7 @@ function createNapiModule(options) {
|
|
|
1266
1366
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1267
1367
|
var cond = emnapiTSFN.getCond(func);
|
|
1268
1368
|
mutex.execute(function () {
|
|
1269
|
-
if (emnapiTSFN.
|
|
1270
|
-
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1271
|
-
}
|
|
1272
|
-
else {
|
|
1369
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1273
1370
|
var size = emnapiTSFN.getQueueSize(func);
|
|
1274
1371
|
if (size > 0) {
|
|
1275
1372
|
data = emnapiTSFN.shiftQueue(func);
|
|
@@ -1282,7 +1379,7 @@ function createNapiModule(options) {
|
|
|
1282
1379
|
}
|
|
1283
1380
|
if (size === 0) {
|
|
1284
1381
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1285
|
-
emnapiTSFN.
|
|
1382
|
+
emnapiTSFN.setState(func, 1);
|
|
1286
1383
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1287
1384
|
cond.signal();
|
|
1288
1385
|
}
|
|
@@ -1293,6 +1390,9 @@ function createNapiModule(options) {
|
|
|
1293
1390
|
has_more = true;
|
|
1294
1391
|
}
|
|
1295
1392
|
}
|
|
1393
|
+
else {
|
|
1394
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1395
|
+
}
|
|
1296
1396
|
});
|
|
1297
1397
|
if (popped_value) {
|
|
1298
1398
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1320,7 +1420,7 @@ function createNapiModule(options) {
|
|
|
1320
1420
|
var resource = emnapiTSFN.getResource(func);
|
|
1321
1421
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1322
1422
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1323
|
-
var view = new DataView(
|
|
1423
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1324
1424
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
1325
1425
|
asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
|
|
1326
1426
|
triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
|
|
@@ -1339,8 +1439,9 @@ function createNapiModule(options) {
|
|
|
1339
1439
|
dispatch: function (func) {
|
|
1340
1440
|
var has_more = true;
|
|
1341
1441
|
var iterations_left = 1000;
|
|
1342
|
-
var
|
|
1343
|
-
var
|
|
1442
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1443
|
+
var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
|
|
1444
|
+
var index = dispatchStateAddress >>> 2;
|
|
1344
1445
|
while (has_more && --iterations_left !== 0) {
|
|
1345
1446
|
Atomics.store(ui32a, index, 1);
|
|
1346
1447
|
has_more = emnapiTSFN.dispatchOne(func);
|
|
@@ -1352,25 +1453,66 @@ function createNapiModule(options) {
|
|
|
1352
1453
|
emnapiTSFN.send(func);
|
|
1353
1454
|
}
|
|
1354
1455
|
},
|
|
1355
|
-
|
|
1356
|
-
var
|
|
1357
|
-
|
|
1456
|
+
enqueue: function (func) {
|
|
1457
|
+
var pending = func + emnapiTSFN.offset.async_pending;
|
|
1458
|
+
var scheduled = func + emnapiTSFN.offset.async_u_fd;
|
|
1459
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
|
|
1460
|
+
if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
|
|
1358
1461
|
return;
|
|
1359
1462
|
}
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1463
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1464
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1465
|
+
return;
|
|
1466
|
+
}
|
|
1467
|
+
if (Atomics.load(i32a, pending >>> 2) === 0) {
|
|
1468
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1469
|
+
return;
|
|
1470
|
+
}
|
|
1471
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1472
|
+
try {
|
|
1473
|
+
if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
|
|
1474
|
+
return;
|
|
1475
|
+
}
|
|
1476
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1477
|
+
return;
|
|
1478
|
+
}
|
|
1479
|
+
emnapiTSFN.dispatch(func);
|
|
1480
|
+
}
|
|
1481
|
+
finally {
|
|
1482
|
+
if (emnapiTSFN._liveSet.has(func)) {
|
|
1483
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1484
|
+
if (Atomics.load(i32a, pending >>> 2) !== 0) {
|
|
1485
|
+
emnapiTSFN.enqueue(func);
|
|
1486
|
+
}
|
|
1366
1487
|
}
|
|
1367
1488
|
}
|
|
1368
1489
|
});
|
|
1490
|
+
});
|
|
1491
|
+
},
|
|
1492
|
+
send: function (func) {
|
|
1493
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1494
|
+
var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
|
|
1495
|
+
if ((current_state & 1) === 1) {
|
|
1496
|
+
return;
|
|
1369
1497
|
}
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1498
|
+
var pendng = func + emnapiTSFN.offset.async_pending;
|
|
1499
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
1500
|
+
return;
|
|
1501
|
+
}
|
|
1502
|
+
if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
|
|
1503
|
+
if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
|
|
1504
|
+
postMessage({
|
|
1505
|
+
__emnapi__: {
|
|
1506
|
+
type: 'tsfn-send',
|
|
1507
|
+
payload: {
|
|
1508
|
+
tsfn: func
|
|
1509
|
+
}
|
|
1510
|
+
}
|
|
1511
|
+
});
|
|
1512
|
+
}
|
|
1513
|
+
else {
|
|
1514
|
+
emnapiTSFN.enqueue(func);
|
|
1515
|
+
}
|
|
1374
1516
|
}
|
|
1375
1517
|
}
|
|
1376
1518
|
};
|
|
@@ -1381,6 +1523,13 @@ function createNapiModule(options) {
|
|
|
1381
1523
|
envObject.checkGCAccess();
|
|
1382
1524
|
if (!async_resource_name)
|
|
1383
1525
|
return envObject.setLastError(1);
|
|
1526
|
+
max_queue_size >>>= 0;
|
|
1527
|
+
initial_thread_count >>>= 0;
|
|
1528
|
+
env >>>= 0;
|
|
1529
|
+
thread_finalize_data >>>= 0;
|
|
1530
|
+
thread_finalize_cb >>>= 0;
|
|
1531
|
+
context >>>= 0;
|
|
1532
|
+
call_js_cb >>>= 0;
|
|
1384
1533
|
max_queue_size = max_queue_size >>> 0;
|
|
1385
1534
|
initial_thread_count = initial_thread_count >>> 0;
|
|
1386
1535
|
if (initial_thread_count === 0) {
|
|
@@ -1389,6 +1538,7 @@ function createNapiModule(options) {
|
|
|
1389
1538
|
if (!result)
|
|
1390
1539
|
return envObject.setLastError(1);
|
|
1391
1540
|
var ref = 0;
|
|
1541
|
+
func >>>= 0;
|
|
1392
1542
|
if (!func) {
|
|
1393
1543
|
if (!call_js_cb)
|
|
1394
1544
|
return envObject.setLastError(1);
|
|
@@ -1418,21 +1568,23 @@ function createNapiModule(options) {
|
|
|
1418
1568
|
}
|
|
1419
1569
|
asyncResourceName = String(asyncResourceName);
|
|
1420
1570
|
var resource_name = envObject.ensureHandleId(asyncResourceName);
|
|
1421
|
-
var sizeofTSFN = emnapiTSFN.offset.
|
|
1571
|
+
var sizeofTSFN = emnapiTSFN.offset.__size__;
|
|
1422
1572
|
var tsfn = _malloc(sizeofTSFN);
|
|
1423
1573
|
if (!tsfn)
|
|
1424
1574
|
return envObject.setLastError(9);
|
|
1425
|
-
|
|
1575
|
+
tsfn >>>= 0;
|
|
1576
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
1426
1577
|
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
|
|
1427
1578
|
var resource_ = resourceRef.id;
|
|
1428
1579
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1429
|
-
HEAP_DATA_VIEW.setUint32(tsfn, resource_, true);
|
|
1580
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
|
|
1430
1581
|
if (!emnapiTSFN.initQueue(tsfn)) {
|
|
1431
1582
|
_free(tsfn);
|
|
1432
1583
|
resourceRef.dispose();
|
|
1433
1584
|
return envObject.setLastError(9);
|
|
1434
1585
|
}
|
|
1435
1586
|
_emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
|
|
1587
|
+
HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
|
|
1436
1588
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
|
|
1437
1589
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
|
|
1438
1590
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
|
|
@@ -1442,9 +1594,11 @@ function createNapiModule(options) {
|
|
|
1442
1594
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
|
|
1443
1595
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
|
|
1444
1596
|
emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
|
|
1597
|
+
emnapiTSFN._liveSet.add(tsfn);
|
|
1445
1598
|
envObject.ref();
|
|
1446
1599
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1447
|
-
HEAP_DATA_VIEW.
|
|
1600
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
|
|
1601
|
+
result >>>= 0;
|
|
1448
1602
|
HEAP_DATA_VIEW.setUint32(result, tsfn, true);
|
|
1449
1603
|
return envObject.clearLastError();
|
|
1450
1604
|
}
|
|
@@ -1453,6 +1607,8 @@ function createNapiModule(options) {
|
|
|
1453
1607
|
abort();
|
|
1454
1608
|
return 1;
|
|
1455
1609
|
}
|
|
1610
|
+
func >>>= 0;
|
|
1611
|
+
result >>>= 0;
|
|
1456
1612
|
var context = emnapiTSFN.getContext(func);
|
|
1457
1613
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1458
1614
|
HEAP_DATA_VIEW.setUint32(result, context, true);
|
|
@@ -1463,6 +1619,8 @@ function createNapiModule(options) {
|
|
|
1463
1619
|
abort();
|
|
1464
1620
|
return 1;
|
|
1465
1621
|
}
|
|
1622
|
+
func >>>= 0;
|
|
1623
|
+
data >>>= 0;
|
|
1466
1624
|
return emnapiTSFN.push(func, data, mode);
|
|
1467
1625
|
}
|
|
1468
1626
|
function napi_acquire_threadsafe_function(func) {
|
|
@@ -1470,13 +1628,14 @@ function createNapiModule(options) {
|
|
|
1470
1628
|
abort();
|
|
1471
1629
|
return 1;
|
|
1472
1630
|
}
|
|
1631
|
+
func >>>= 0;
|
|
1473
1632
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1474
1633
|
return mutex.execute(function () {
|
|
1475
|
-
if (emnapiTSFN.
|
|
1476
|
-
|
|
1634
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1635
|
+
emnapiTSFN.addThreadCount(func);
|
|
1636
|
+
return 0;
|
|
1477
1637
|
}
|
|
1478
|
-
|
|
1479
|
-
return 0;
|
|
1638
|
+
return 16;
|
|
1480
1639
|
});
|
|
1481
1640
|
}
|
|
1482
1641
|
function napi_release_threadsafe_function(func, mode) {
|
|
@@ -1484,37 +1643,52 @@ function createNapiModule(options) {
|
|
|
1484
1643
|
abort();
|
|
1485
1644
|
return 1;
|
|
1486
1645
|
}
|
|
1646
|
+
func >>>= 0;
|
|
1487
1647
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1488
1648
|
var cond = emnapiTSFN.getCond(func);
|
|
1489
|
-
|
|
1649
|
+
var shouldDelete = false;
|
|
1650
|
+
var ret = mutex.execute(function () {
|
|
1490
1651
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1491
1652
|
return 1;
|
|
1492
1653
|
}
|
|
1493
1654
|
emnapiTSFN.subThreadCount(func);
|
|
1494
1655
|
if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
if (
|
|
1656
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1657
|
+
if (mode === 1) {
|
|
1658
|
+
emnapiTSFN.setState(func, 1);
|
|
1659
|
+
}
|
|
1660
|
+
if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1500
1661
|
cond.signal();
|
|
1501
1662
|
}
|
|
1502
1663
|
emnapiTSFN.send(func);
|
|
1503
1664
|
}
|
|
1504
1665
|
}
|
|
1666
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1667
|
+
return 0;
|
|
1668
|
+
}
|
|
1669
|
+
shouldDelete = true;
|
|
1505
1670
|
return 0;
|
|
1506
1671
|
});
|
|
1672
|
+
if (shouldDelete) {
|
|
1673
|
+
emnapiTSFN.destroy(func);
|
|
1674
|
+
}
|
|
1675
|
+
return ret;
|
|
1507
1676
|
}
|
|
1508
1677
|
function napi_unref_threadsafe_function(env, func) {
|
|
1509
1678
|
if (!func) {
|
|
1510
1679
|
abort();
|
|
1511
1680
|
return 1;
|
|
1512
1681
|
}
|
|
1513
|
-
|
|
1514
|
-
var
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1682
|
+
func >>>= 0;
|
|
1683
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1684
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1685
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1686
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1687
|
+
if (currentValue > 0) {
|
|
1688
|
+
Atomics.store(arr, asyncRefOffset, currentValue - 1);
|
|
1689
|
+
if (currentValue === 1) {
|
|
1690
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1691
|
+
}
|
|
1518
1692
|
}
|
|
1519
1693
|
return 0;
|
|
1520
1694
|
}
|
|
@@ -1523,34 +1697,66 @@ function createNapiModule(options) {
|
|
|
1523
1697
|
abort();
|
|
1524
1698
|
return 1;
|
|
1525
1699
|
}
|
|
1526
|
-
|
|
1527
|
-
var
|
|
1528
|
-
|
|
1529
|
-
|
|
1700
|
+
func >>>= 0;
|
|
1701
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1702
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1703
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1704
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1705
|
+
if (!currentValue) {
|
|
1530
1706
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1531
1707
|
}
|
|
1708
|
+
Atomics.store(arr, asyncRefOffset, currentValue + 1);
|
|
1532
1709
|
return 0;
|
|
1533
1710
|
}
|
|
1534
1711
|
var emnapiAWMT = {
|
|
1535
|
-
|
|
1536
|
-
runningWorkers: [],
|
|
1537
|
-
workQueue: [],
|
|
1712
|
+
pool: [],
|
|
1538
1713
|
workerReady: null,
|
|
1714
|
+
globalAddress: 0,
|
|
1715
|
+
globalOffset: {
|
|
1716
|
+
idle_threads: 0,
|
|
1717
|
+
q: 1 * 4,
|
|
1718
|
+
next: 1 * 4,
|
|
1719
|
+
prev: 2 * 4,
|
|
1720
|
+
mutex: 3 * 4,
|
|
1721
|
+
cond: 4 * 4,
|
|
1722
|
+
exit_message: 5 * 4,
|
|
1723
|
+
end: 7 * 4
|
|
1724
|
+
},
|
|
1539
1725
|
offset: {
|
|
1540
1726
|
resource: 0,
|
|
1541
1727
|
async_id: 8,
|
|
1542
1728
|
trigger_async_id: 16,
|
|
1543
1729
|
env: 24,
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1730
|
+
status: 1 * 4 + 24,
|
|
1731
|
+
queue: 2 * 4 + 24,
|
|
1732
|
+
queue_next: 2 * 4 + 24,
|
|
1733
|
+
queue_prev: 3 * 4 + 24,
|
|
1734
|
+
data: 4 * 4 + 24,
|
|
1735
|
+
execute: 5 * 4 + 24,
|
|
1736
|
+
complete: 6 * 4 + 24,
|
|
1737
|
+
end: 7 * 4 + 24
|
|
1738
|
+
},
|
|
1739
|
+
ensureBufferFor: function (end) {
|
|
1740
|
+
var buffer = wasmMemory.buffer;
|
|
1741
|
+
if (end > buffer.byteLength) {
|
|
1742
|
+
wasmMemory.grow(0);
|
|
1743
|
+
buffer = wasmMemory.buffer;
|
|
1744
|
+
}
|
|
1745
|
+
return buffer;
|
|
1548
1746
|
},
|
|
1549
1747
|
init: function () {
|
|
1550
|
-
emnapiAWMT.
|
|
1551
|
-
emnapiAWMT.runningWorkers = [];
|
|
1552
|
-
emnapiAWMT.workQueue = [];
|
|
1748
|
+
emnapiAWMT.pool = [];
|
|
1553
1749
|
emnapiAWMT.workerReady = null;
|
|
1750
|
+
if (typeof PThread !== 'undefined') {
|
|
1751
|
+
PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
|
|
1752
|
+
Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
|
|
1753
|
+
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
1754
|
+
PThread.getNewWorker = function () {
|
|
1755
|
+
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
1756
|
+
emnapiAWMT.addListener(r);
|
|
1757
|
+
return r;
|
|
1758
|
+
};
|
|
1759
|
+
}
|
|
1554
1760
|
},
|
|
1555
1761
|
addListener: function (worker) {
|
|
1556
1762
|
if (!worker)
|
|
@@ -1564,18 +1770,8 @@ function createNapiModule(options) {
|
|
|
1564
1770
|
var type = __emnapi__.type;
|
|
1565
1771
|
var payload = __emnapi__.payload;
|
|
1566
1772
|
if (type === 'async-work-complete') {
|
|
1567
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1568
|
-
emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
|
|
1569
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1570
|
-
emnapiAWMT.checkIdleWorker();
|
|
1571
1773
|
emnapiAWMT.callComplete(payload.work, 0);
|
|
1572
1774
|
}
|
|
1573
|
-
else if (type === 'async-work-queue') {
|
|
1574
|
-
emnapiAWMT.scheduleWork(payload.work);
|
|
1575
|
-
}
|
|
1576
|
-
else if (type === 'async-work-cancel') {
|
|
1577
|
-
emnapiAWMT.cancelWork(payload.work);
|
|
1578
|
-
}
|
|
1579
1775
|
}
|
|
1580
1776
|
};
|
|
1581
1777
|
var dispose = function () {
|
|
@@ -1596,142 +1792,233 @@ function createNapiModule(options) {
|
|
|
1596
1792
|
}
|
|
1597
1793
|
return true;
|
|
1598
1794
|
},
|
|
1795
|
+
initGlobal: function () {
|
|
1796
|
+
if (!emnapiAWMT.globalAddress) {
|
|
1797
|
+
emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
|
|
1798
|
+
emnapiAWMT.globalAddress >>>= 0;
|
|
1799
|
+
var size = emnapiAWMT.globalOffset.end;
|
|
1800
|
+
var addr = emnapiAWMT.globalAddress;
|
|
1801
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
|
|
1802
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
|
|
1803
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
|
|
1804
|
+
}
|
|
1805
|
+
},
|
|
1806
|
+
terminateWorkers: function () {
|
|
1807
|
+
emnapiAWMT.pool.forEach(function (w) {
|
|
1808
|
+
var _a, _b;
|
|
1809
|
+
(_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
1810
|
+
(_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
1811
|
+
w.terminate();
|
|
1812
|
+
});
|
|
1813
|
+
emnapiAWMT.pool.length = 0;
|
|
1814
|
+
},
|
|
1599
1815
|
initWorkers: function (n) {
|
|
1600
1816
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
1601
1817
|
return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
|
|
1602
1818
|
}
|
|
1603
1819
|
if (emnapiAWMT.workerReady)
|
|
1604
1820
|
return emnapiAWMT.workerReady;
|
|
1605
|
-
if (typeof onCreateWorker !== 'function') {
|
|
1606
|
-
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
1607
|
-
}
|
|
1608
|
-
var promises = [];
|
|
1609
|
-
var args = [];
|
|
1610
1821
|
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
1611
1822
|
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
1612
1823
|
}
|
|
1824
|
+
var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
|
|
1825
|
+
var args = [];
|
|
1826
|
+
emnapiAWMT.initGlobal();
|
|
1613
1827
|
for (var i = 0; i < n; ++i) {
|
|
1614
|
-
args.push(
|
|
1828
|
+
args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
|
|
1615
1829
|
}
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
var p = PThread.loadWasmModuleToWorker(worker);
|
|
1620
|
-
emnapiAWMT.addListener(worker);
|
|
1621
|
-
promises.push(p.then(function () {
|
|
1622
|
-
if (typeof worker.unref === 'function') {
|
|
1623
|
-
worker.unref();
|
|
1624
|
-
}
|
|
1625
|
-
}));
|
|
1626
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1627
|
-
var arg = args[i];
|
|
1628
|
-
worker.threadBlockBase = arg;
|
|
1629
|
-
worker.postMessage({
|
|
1630
|
-
__emnapi__: {
|
|
1631
|
-
type: 'async-worker-init',
|
|
1632
|
-
payload: { arg: arg }
|
|
1633
|
-
}
|
|
1634
|
-
});
|
|
1635
|
-
};
|
|
1636
|
-
for (var i = 0; i < n; ++i) {
|
|
1637
|
-
_loop_1(i);
|
|
1830
|
+
var promises = args.map(function (index) {
|
|
1831
|
+
if (index === 0) {
|
|
1832
|
+
return Promise.reject(new Error('Failed to create async worker'));
|
|
1638
1833
|
}
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1834
|
+
var worker;
|
|
1835
|
+
if (index < 0) {
|
|
1836
|
+
worker = emnapiAWMT.pool[-index - 1];
|
|
1837
|
+
if (worker)
|
|
1838
|
+
return worker.whenLoaded;
|
|
1644
1839
|
}
|
|
1645
|
-
|
|
1646
|
-
|
|
1840
|
+
index >>>= 0;
|
|
1841
|
+
var tidOffset = 20;
|
|
1842
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
|
|
1843
|
+
var tid = view.getInt32(index + tidOffset, true);
|
|
1844
|
+
worker = PThread.pthreads[tid];
|
|
1845
|
+
return worker.whenLoaded;
|
|
1846
|
+
});
|
|
1647
1847
|
emnapiAWMT.workerReady = Promise.all(promises);
|
|
1648
1848
|
return emnapiAWMT.workerReady;
|
|
1649
1849
|
},
|
|
1650
|
-
checkIdleWorker: function () {
|
|
1651
|
-
if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
|
|
1652
|
-
var worker = emnapiAWMT.unusedWorkers.shift();
|
|
1653
|
-
var work = emnapiAWMT.workQueue.shift();
|
|
1654
|
-
emnapiAWMT.runningWorkers.push(worker);
|
|
1655
|
-
worker.postMessage({
|
|
1656
|
-
__emnapi__: {
|
|
1657
|
-
type: 'async-work-execute',
|
|
1658
|
-
payload: { work: work }
|
|
1659
|
-
}
|
|
1660
|
-
});
|
|
1661
|
-
}
|
|
1662
|
-
},
|
|
1663
1850
|
getResource: function (work) {
|
|
1664
|
-
|
|
1851
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
|
|
1852
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1853
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
|
|
1665
1854
|
},
|
|
1666
1855
|
getExecute: function (work) {
|
|
1667
|
-
|
|
1856
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
|
|
1857
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1858
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
|
|
1668
1859
|
},
|
|
1669
1860
|
getComplete: function (work) {
|
|
1670
|
-
|
|
1861
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
|
|
1862
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1863
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
|
|
1671
1864
|
},
|
|
1672
1865
|
getEnv: function (work) {
|
|
1673
|
-
|
|
1866
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
|
|
1867
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1868
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
|
|
1674
1869
|
},
|
|
1675
1870
|
getData: function (work) {
|
|
1676
|
-
|
|
1871
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
|
|
1872
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1873
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
|
|
1874
|
+
},
|
|
1875
|
+
getMutex: function () {
|
|
1876
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
|
|
1877
|
+
var mutex = {
|
|
1878
|
+
lock: function () {
|
|
1879
|
+
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1880
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1881
|
+
if (isBrowserMain) {
|
|
1882
|
+
while (true) {
|
|
1883
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1884
|
+
if (oldValue === 0) {
|
|
1885
|
+
return;
|
|
1886
|
+
}
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
else {
|
|
1890
|
+
while (true) {
|
|
1891
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1892
|
+
if (oldValue === 0) {
|
|
1893
|
+
return;
|
|
1894
|
+
}
|
|
1895
|
+
Atomics.wait(i32a, 0, 10);
|
|
1896
|
+
}
|
|
1897
|
+
}
|
|
1898
|
+
},
|
|
1899
|
+
unlock: function () {
|
|
1900
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1901
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1902
|
+
if (oldValue !== 10) {
|
|
1903
|
+
throw new Error('Tried to unlock while not holding the mutex');
|
|
1904
|
+
}
|
|
1905
|
+
Atomics.notify(i32a, 0, 1);
|
|
1906
|
+
},
|
|
1907
|
+
execute: function (fn) {
|
|
1908
|
+
mutex.lock();
|
|
1909
|
+
try {
|
|
1910
|
+
return fn();
|
|
1911
|
+
}
|
|
1912
|
+
finally {
|
|
1913
|
+
mutex.unlock();
|
|
1914
|
+
}
|
|
1915
|
+
}
|
|
1916
|
+
};
|
|
1917
|
+
return mutex;
|
|
1918
|
+
},
|
|
1919
|
+
getCond: function () {
|
|
1920
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
|
|
1921
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1922
|
+
var cond = {
|
|
1923
|
+
wait: function () {
|
|
1924
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1925
|
+
var value = Atomics.load(i32a, 0);
|
|
1926
|
+
mutex.unlock();
|
|
1927
|
+
Atomics.wait(i32a, 0, value);
|
|
1928
|
+
mutex.lock();
|
|
1929
|
+
},
|
|
1930
|
+
signal: function () {
|
|
1931
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1932
|
+
Atomics.add(i32a, 0, 1);
|
|
1933
|
+
Atomics.notify(i32a, 0, 1);
|
|
1934
|
+
}
|
|
1935
|
+
};
|
|
1936
|
+
return cond;
|
|
1937
|
+
},
|
|
1938
|
+
queueInit: function (q) {
|
|
1939
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1940
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1941
|
+
HEAP_DATA_VIEW.setUint32(q, q, true);
|
|
1942
|
+
HEAP_DATA_VIEW.setUint32(q + 4, q, true);
|
|
1943
|
+
},
|
|
1944
|
+
queueInsertTail: function (h, q) {
|
|
1945
|
+
emnapiAWMT.ensureBufferFor(h + 4 + 4);
|
|
1946
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1947
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1948
|
+
HEAP_DATA_VIEW.setUint32(q, h, true);
|
|
1949
|
+
var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
|
|
1950
|
+
HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
|
|
1951
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1952
|
+
HEAP_DATA_VIEW.setUint32(qprev, q, true);
|
|
1953
|
+
HEAP_DATA_VIEW.setUint32(h + 4, q, true);
|
|
1954
|
+
},
|
|
1955
|
+
queueRemove: function (q) {
|
|
1956
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1957
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1958
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1959
|
+
var qnext = HEAP_DATA_VIEW.getUint32(q, true);
|
|
1960
|
+
HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
|
|
1961
|
+
HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
|
|
1962
|
+
},
|
|
1963
|
+
queueEmpty: function (q) {
|
|
1964
|
+
emnapiAWMT.ensureBufferFor(q + 4);
|
|
1965
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1966
|
+
return q == HEAP_DATA_VIEW.getUint32(q, true);
|
|
1677
1967
|
},
|
|
1678
1968
|
scheduleWork: function (work) {
|
|
1679
1969
|
var _a;
|
|
1680
|
-
if (
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
}
|
|
1970
|
+
if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
|
|
1971
|
+
emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
|
|
1972
|
+
emnapiAWMT.workerReady.ready = true;
|
|
1973
|
+
}).catch(function (err) {
|
|
1974
|
+
emnapiAWMT.workerReady = null;
|
|
1975
|
+
throw err;
|
|
1687
1976
|
});
|
|
1688
|
-
return;
|
|
1689
1977
|
}
|
|
1690
1978
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1691
|
-
emnapiAWMT.
|
|
1692
|
-
|
|
1693
|
-
|
|
1979
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
1980
|
+
Atomics.store(statusBuffer, 0, 0);
|
|
1981
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1982
|
+
var cond = emnapiAWMT.getCond();
|
|
1983
|
+
mutex.lock();
|
|
1984
|
+
try {
|
|
1985
|
+
emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
|
|
1694
1986
|
}
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
}, fail);
|
|
1705
|
-
}
|
|
1706
|
-
catch (err) {
|
|
1707
|
-
fail(err);
|
|
1708
|
-
}
|
|
1987
|
+
catch (err) {
|
|
1988
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1989
|
+
mutex.unlock();
|
|
1990
|
+
throw err;
|
|
1991
|
+
}
|
|
1992
|
+
emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
|
|
1993
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1994
|
+
if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
|
|
1995
|
+
cond.signal();
|
|
1709
1996
|
}
|
|
1997
|
+
mutex.unlock();
|
|
1710
1998
|
},
|
|
1711
1999
|
cancelWork: function (work) {
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
}
|
|
1720
|
-
|
|
2000
|
+
var cancelled = false;
|
|
2001
|
+
emnapiAWMT.getMutex().execute(function () {
|
|
2002
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
|
|
2003
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2004
|
+
cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
|
|
2005
|
+
if (cancelled) {
|
|
2006
|
+
emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
|
|
2007
|
+
}
|
|
2008
|
+
});
|
|
2009
|
+
if (!cancelled) {
|
|
2010
|
+
return 9;
|
|
1721
2011
|
}
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
emnapiAWMT.workQueue.splice(index, 1);
|
|
1725
|
-
emnapiCtx.feature.setImmediate(function () {
|
|
1726
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1727
|
-
emnapiAWMT.checkIdleWorker();
|
|
1728
|
-
emnapiAWMT.callComplete(work, 11);
|
|
1729
|
-
});
|
|
1730
|
-
return 0;
|
|
2012
|
+
if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
|
|
2013
|
+
return 9;
|
|
1731
2014
|
}
|
|
1732
|
-
|
|
2015
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
2016
|
+
emnapiAWMT.callComplete(work, 11);
|
|
2017
|
+
});
|
|
2018
|
+
return 0;
|
|
1733
2019
|
},
|
|
1734
2020
|
callComplete: function (work, status) {
|
|
2021
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1735
2022
|
var complete = emnapiAWMT.getComplete(work);
|
|
1736
2023
|
var env = emnapiAWMT.getEnv(work);
|
|
1737
2024
|
var data = emnapiAWMT.getData(work);
|
|
@@ -1749,7 +2036,7 @@ function createNapiModule(options) {
|
|
|
1749
2036
|
var resource = emnapiAWMT.getResource(work);
|
|
1750
2037
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1751
2038
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1752
|
-
var view = new DataView(
|
|
2039
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
1753
2040
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
1754
2041
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
1755
2042
|
emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
|
|
@@ -1766,6 +2053,7 @@ function createNapiModule(options) {
|
|
|
1766
2053
|
}
|
|
1767
2054
|
}
|
|
1768
2055
|
};
|
|
2056
|
+
emnapiAWMT.init();
|
|
1769
2057
|
var napi_create_async_work = singleThreadAsyncWork
|
|
1770
2058
|
? function (env, resource, resource_name, execute, complete, data, result) {
|
|
1771
2059
|
if (!env)
|
|
@@ -1787,6 +2075,7 @@ function createNapiModule(options) {
|
|
|
1787
2075
|
return envObject.setLastError(1);
|
|
1788
2076
|
var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
|
|
1789
2077
|
var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
|
|
2078
|
+
result >>>= 0;
|
|
1790
2079
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1791
2080
|
HEAP_DATA_VIEW.setUint32(result, id, true);
|
|
1792
2081
|
return envObject.clearLastError();
|
|
@@ -1813,7 +2102,8 @@ function createNapiModule(options) {
|
|
|
1813
2102
|
var aw = _malloc(sizeofAW);
|
|
1814
2103
|
if (!aw)
|
|
1815
2104
|
return envObject.setLastError(9);
|
|
1816
|
-
|
|
2105
|
+
aw >>>= 0;
|
|
2106
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
|
|
1817
2107
|
var s = envObject.ensureHandleId(resourceObject);
|
|
1818
2108
|
var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
|
|
1819
2109
|
var resource_ = resourceRef.id;
|
|
@@ -1824,6 +2114,8 @@ function createNapiModule(options) {
|
|
|
1824
2114
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
|
|
1825
2115
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
|
|
1826
2116
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
|
|
2117
|
+
emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
|
|
2118
|
+
result >>>= 0;
|
|
1827
2119
|
HEAP_DATA_VIEW.setUint32(result, aw, true);
|
|
1828
2120
|
return envObject.clearLastError();
|
|
1829
2121
|
};
|
|
@@ -1835,6 +2127,7 @@ function createNapiModule(options) {
|
|
|
1835
2127
|
envObject.checkGCAccess();
|
|
1836
2128
|
if (!work)
|
|
1837
2129
|
return envObject.setLastError(1);
|
|
2130
|
+
work >>>= 0;
|
|
1838
2131
|
emnapiAWST.remove(work);
|
|
1839
2132
|
return envObject.clearLastError();
|
|
1840
2133
|
}
|
|
@@ -1845,10 +2138,11 @@ function createNapiModule(options) {
|
|
|
1845
2138
|
envObject.checkGCAccess();
|
|
1846
2139
|
if (!work)
|
|
1847
2140
|
return envObject.setLastError(1);
|
|
2141
|
+
work >>>= 0;
|
|
1848
2142
|
var resource = emnapiAWMT.getResource(work);
|
|
1849
2143
|
emnapiCtx.refStore.get(resource).dispose();
|
|
1850
2144
|
if (emnapiNodeBinding) {
|
|
1851
|
-
var view = new DataView(
|
|
2145
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
1852
2146
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
1853
2147
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
1854
2148
|
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
@@ -1863,6 +2157,7 @@ function createNapiModule(options) {
|
|
|
1863
2157
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1864
2158
|
if (!work)
|
|
1865
2159
|
return envObject.setLastError(1);
|
|
2160
|
+
work >>>= 0;
|
|
1866
2161
|
emnapiAWST.queue(work);
|
|
1867
2162
|
return envObject.clearLastError();
|
|
1868
2163
|
}
|
|
@@ -1872,6 +2167,7 @@ function createNapiModule(options) {
|
|
|
1872
2167
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1873
2168
|
if (!work)
|
|
1874
2169
|
return envObject.setLastError(1);
|
|
2170
|
+
work >>>= 0;
|
|
1875
2171
|
emnapiAWMT.scheduleWork(work);
|
|
1876
2172
|
return envObject.clearLastError();
|
|
1877
2173
|
};
|
|
@@ -1882,6 +2178,7 @@ function createNapiModule(options) {
|
|
|
1882
2178
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1883
2179
|
if (!work)
|
|
1884
2180
|
return envObject.setLastError(1);
|
|
2181
|
+
work >>>= 0;
|
|
1885
2182
|
var status = emnapiAWST.cancel(work);
|
|
1886
2183
|
if (status === 0)
|
|
1887
2184
|
return envObject.clearLastError();
|
|
@@ -1893,41 +2190,125 @@ function createNapiModule(options) {
|
|
|
1893
2190
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1894
2191
|
if (!work)
|
|
1895
2192
|
return envObject.setLastError(1);
|
|
2193
|
+
work >>>= 0;
|
|
1896
2194
|
var status = emnapiAWMT.cancelWork(work);
|
|
1897
2195
|
if (status === 0)
|
|
1898
2196
|
return envObject.clearLastError();
|
|
1899
2197
|
return envObject.setLastError(status);
|
|
1900
2198
|
};
|
|
1901
|
-
function
|
|
2199
|
+
function _emnapi_async_worker(globalAddress) {
|
|
2200
|
+
globalAddress >>>= 0;
|
|
2201
|
+
emnapiAWMT.globalAddress = globalAddress;
|
|
2202
|
+
var mutex = emnapiAWMT.getMutex();
|
|
2203
|
+
var cond = emnapiAWMT.getCond();
|
|
2204
|
+
mutex.lock();
|
|
2205
|
+
var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
|
|
2206
|
+
var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
|
|
2207
|
+
var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
|
|
2208
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2209
|
+
for (;;) {
|
|
2210
|
+
emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
|
|
2211
|
+
while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
|
|
2212
|
+
Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2213
|
+
cond.wait();
|
|
2214
|
+
Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2215
|
+
}
|
|
2216
|
+
var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
|
|
2217
|
+
if (q === exitMessageAddr) {
|
|
2218
|
+
cond.signal();
|
|
2219
|
+
mutex.unlock();
|
|
2220
|
+
break;
|
|
2221
|
+
}
|
|
2222
|
+
var work = q - emnapiAWMT.offset.queue;
|
|
2223
|
+
emnapiAWMT.queueRemove(q);
|
|
2224
|
+
emnapiAWMT.queueInit(q);
|
|
2225
|
+
mutex.unlock();
|
|
2226
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
2227
|
+
if (Atomics.load(statusBuffer, 0) === 1) {
|
|
2228
|
+
abort('unreachable');
|
|
2229
|
+
}
|
|
2230
|
+
var execute = emnapiAWMT.getExecute(work);
|
|
2231
|
+
var env = emnapiAWMT.getEnv(work);
|
|
2232
|
+
var data = emnapiAWMT.getData(work);
|
|
2233
|
+
(wasmTable.get(execute))(env, data);
|
|
2234
|
+
Atomics.store(statusBuffer, 0, 2);
|
|
2235
|
+
var postMessage_1 = napiModule.postMessage;
|
|
2236
|
+
postMessage_1({
|
|
2237
|
+
__emnapi__: {
|
|
2238
|
+
type: 'async-work-complete',
|
|
2239
|
+
payload: { work: work }
|
|
2240
|
+
}
|
|
2241
|
+
});
|
|
2242
|
+
mutex.lock();
|
|
2243
|
+
}
|
|
2244
|
+
return 0;
|
|
2245
|
+
}
|
|
2246
|
+
function _emnapi_spawn_worker(f, globalAddress) {
|
|
2247
|
+
if (typeof onCreateWorker !== 'function') {
|
|
2248
|
+
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
2249
|
+
}
|
|
2250
|
+
var promises = [];
|
|
2251
|
+
var args = [];
|
|
2252
|
+
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
2253
|
+
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
2254
|
+
}
|
|
2255
|
+
args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
|
|
2256
|
+
var handleError = function (e) {
|
|
2257
|
+
if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
|
|
2258
|
+
emnapiAWMT.terminateWorkers();
|
|
2259
|
+
}
|
|
2260
|
+
};
|
|
2261
|
+
var ret;
|
|
2262
|
+
try {
|
|
2263
|
+
var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
|
|
2264
|
+
var p = PThread.loadWasmModuleToWorker(worker_1);
|
|
2265
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
2266
|
+
worker_1.on('error', handleError);
|
|
2267
|
+
}
|
|
2268
|
+
else {
|
|
2269
|
+
worker_1.addEventListener('error', handleError, false);
|
|
2270
|
+
}
|
|
2271
|
+
emnapiAWMT.addListener(worker_1);
|
|
2272
|
+
emnapiTSFN.addListener(worker_1);
|
|
2273
|
+
promises.push(p.then(function () {
|
|
2274
|
+
if (typeof worker_1.unref === 'function') {
|
|
2275
|
+
worker_1.unref();
|
|
2276
|
+
}
|
|
2277
|
+
}));
|
|
2278
|
+
ret = emnapiAWMT.pool.push(worker_1) - 1;
|
|
2279
|
+
var arg = args[0];
|
|
2280
|
+
worker_1.threadBlockBase = arg;
|
|
2281
|
+
worker_1.postMessage({
|
|
2282
|
+
__emnapi__: {
|
|
2283
|
+
type: 'async-worker-init',
|
|
2284
|
+
payload: { arg: arg, func: [f, globalAddress] }
|
|
2285
|
+
}
|
|
2286
|
+
});
|
|
2287
|
+
}
|
|
2288
|
+
catch (err) {
|
|
2289
|
+
var arg = args[0];
|
|
2290
|
+
_free(arg);
|
|
2291
|
+
throw err;
|
|
2292
|
+
}
|
|
2293
|
+
return ret;
|
|
2294
|
+
}
|
|
2295
|
+
function initWorker(startArg, func) {
|
|
1902
2296
|
if (napiModule.childThread) {
|
|
1903
2297
|
if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
|
|
1904
2298
|
throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
|
|
1905
2299
|
}
|
|
1906
2300
|
wasmInstance.exports.emnapi_async_worker_init(startArg);
|
|
2301
|
+
(wasmTable.get(func[0]))(func[1]);
|
|
1907
2302
|
}
|
|
1908
2303
|
else {
|
|
1909
2304
|
throw new Error('startThread is only available in child threads');
|
|
1910
2305
|
}
|
|
1911
2306
|
}
|
|
1912
|
-
function executeAsyncWork(work) {
|
|
1913
|
-
if (!ENVIRONMENT_IS_PTHREAD)
|
|
1914
|
-
return;
|
|
1915
|
-
var execute = emnapiAWMT.getExecute(work);
|
|
1916
|
-
var env = emnapiAWMT.getEnv(work);
|
|
1917
|
-
var data = emnapiAWMT.getData(work);
|
|
1918
|
-
(wasmTable.get(execute))(env, data);
|
|
1919
|
-
var postMessage = napiModule.postMessage;
|
|
1920
|
-
postMessage({
|
|
1921
|
-
__emnapi__: {
|
|
1922
|
-
type: 'async-work-complete',
|
|
1923
|
-
payload: { work: work }
|
|
1924
|
-
}
|
|
1925
|
-
});
|
|
1926
|
-
}
|
|
1927
2307
|
napiModule.initWorker = initWorker;
|
|
1928
|
-
napiModule.executeAsyncWork = executeAsyncWork;
|
|
1929
2308
|
var asyncWorkMod = Object.freeze({
|
|
1930
2309
|
__proto__: null,
|
|
2310
|
+
_emnapi_async_worker: _emnapi_async_worker,
|
|
2311
|
+
_emnapi_spawn_worker: _emnapi_spawn_worker,
|
|
1931
2312
|
napi_cancel_async_work: napi_cancel_async_work,
|
|
1932
2313
|
napi_create_async_work: napi_create_async_work,
|
|
1933
2314
|
napi_delete_async_work: napi_delete_async_work,
|
|
@@ -1942,6 +2323,10 @@ function createNapiModule(options) {
|
|
|
1942
2323
|
emnapiExternalMemory.table = new WeakMap();
|
|
1943
2324
|
emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
|
|
1944
2325
|
},
|
|
2326
|
+
isSharedArrayBuffer: function (value) {
|
|
2327
|
+
return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
|
|
2328
|
+
(Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
|
|
2329
|
+
},
|
|
1945
2330
|
isDetachedArrayBuffer: function (arrayBuffer) {
|
|
1946
2331
|
if (arrayBuffer.byteLength === 0) {
|
|
1947
2332
|
try {
|
|
@@ -1984,6 +2369,7 @@ function createNapiModule(options) {
|
|
|
1984
2369
|
var pointer = _malloc(arrayBuffer.byteLength);
|
|
1985
2370
|
if (!pointer)
|
|
1986
2371
|
throw new Error('Out of memory');
|
|
2372
|
+
pointer >>>= 0;
|
|
1987
2373
|
new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
|
|
1988
2374
|
info.address = pointer;
|
|
1989
2375
|
info.ownership = emnapiExternalMemory.registry ? 0 : 1;
|
|
@@ -2005,8 +2391,7 @@ function createNapiModule(options) {
|
|
|
2005
2391
|
}
|
|
2006
2392
|
return view;
|
|
2007
2393
|
}
|
|
2008
|
-
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
|
|
2009
|
-
((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
|
|
2394
|
+
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
|
|
2010
2395
|
if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
|
|
2011
2396
|
var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
|
|
2012
2397
|
var Ctor = info.Ctor;
|
|
@@ -2036,6 +2421,55 @@ function createNapiModule(options) {
|
|
|
2036
2421
|
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
2037
2422
|
}
|
|
2038
2423
|
};
|
|
2424
|
+
var emnapiExternalSAB = {
|
|
2425
|
+
registry: undefined,
|
|
2426
|
+
handleTable: new WeakMap(),
|
|
2427
|
+
init: function () {
|
|
2428
|
+
emnapiExternalSAB.handleTable = new WeakMap();
|
|
2429
|
+
emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
|
|
2430
|
+
? new FinalizationRegistry(function (metaPtr) {
|
|
2431
|
+
emnapiExternalSAB.release(metaPtr);
|
|
2432
|
+
})
|
|
2433
|
+
: undefined;
|
|
2434
|
+
},
|
|
2435
|
+
allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
|
|
2436
|
+
var size = 4 * 6;
|
|
2437
|
+
var metaPtr = _malloc(size);
|
|
2438
|
+
if (!metaPtr)
|
|
2439
|
+
throw new Error('Out of memory');
|
|
2440
|
+
metaPtr >>>= 0;
|
|
2441
|
+
Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2442
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2443
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
|
|
2444
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
|
|
2445
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
|
|
2446
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
|
|
2447
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
|
|
2448
|
+
return metaPtr;
|
|
2449
|
+
},
|
|
2450
|
+
readMeta: function (metaPtr) {
|
|
2451
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2452
|
+
var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
|
|
2453
|
+
var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
|
|
2454
|
+
var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
|
|
2455
|
+
var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
|
|
2456
|
+
var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
|
|
2457
|
+
return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
|
|
2458
|
+
},
|
|
2459
|
+
release: function (metaPtr) {
|
|
2460
|
+
var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2461
|
+
if (oldRefcount === 1) {
|
|
2462
|
+
var info = emnapiExternalSAB.readMeta(metaPtr);
|
|
2463
|
+
var finalize_cb = info.finalize_cb;
|
|
2464
|
+
if (finalize_cb) {
|
|
2465
|
+
var finalize_data = info.finalize_data;
|
|
2466
|
+
var finalize_hint = info.finalize_hint;
|
|
2467
|
+
(wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
|
|
2468
|
+
}
|
|
2469
|
+
_free(metaPtr);
|
|
2470
|
+
}
|
|
2471
|
+
}
|
|
2472
|
+
};
|
|
2039
2473
|
var emnapiString = {
|
|
2040
2474
|
utf8Decoder: undefined,
|
|
2041
2475
|
utf16Decoder: undefined,
|
|
@@ -2139,7 +2573,7 @@ function createNapiModule(options) {
|
|
|
2139
2573
|
ptr >>>= 0;
|
|
2140
2574
|
var HEAPU8 = new Uint8Array(wasmMemory.buffer);
|
|
2141
2575
|
var end = ptr;
|
|
2142
|
-
if (length === -1) {
|
|
2576
|
+
if (length === -1 || length === 4294967295) {
|
|
2143
2577
|
for (; HEAPU8[end];)
|
|
2144
2578
|
++end;
|
|
2145
2579
|
}
|
|
@@ -2230,12 +2664,12 @@ function createNapiModule(options) {
|
|
|
2230
2664
|
return '';
|
|
2231
2665
|
ptr >>>= 0;
|
|
2232
2666
|
var end = ptr;
|
|
2233
|
-
if (length === -1) {
|
|
2234
|
-
var idx = end
|
|
2667
|
+
if (length === -1 || length === 4294967295) {
|
|
2668
|
+
var idx = end >>> 1;
|
|
2235
2669
|
var HEAPU16 = new Uint16Array(wasmMemory.buffer);
|
|
2236
2670
|
while (HEAPU16[idx])
|
|
2237
2671
|
++idx;
|
|
2238
|
-
end = idx << 1;
|
|
2672
|
+
end = (idx << 1) >>> 0;
|
|
2239
2673
|
}
|
|
2240
2674
|
else {
|
|
2241
2675
|
end = ptr + (length >>> 0) * 2;
|
|
@@ -2266,11 +2700,12 @@ function createNapiModule(options) {
|
|
|
2266
2700
|
return outPtr - startPtr;
|
|
2267
2701
|
},
|
|
2268
2702
|
newString: function (env, str, length, result, stringMaker) {
|
|
2703
|
+
length >>>= 0;
|
|
2269
2704
|
if (!env)
|
|
2270
2705
|
return 1;
|
|
2271
2706
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2272
2707
|
envObject.checkGCAccess();
|
|
2273
|
-
var autoLength = length === -1;
|
|
2708
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2274
2709
|
var sizelength = length >>> 0;
|
|
2275
2710
|
if (length !== 0) {
|
|
2276
2711
|
if (!str)
|
|
@@ -2280,18 +2715,21 @@ function createNapiModule(options) {
|
|
|
2280
2715
|
return envObject.setLastError(1);
|
|
2281
2716
|
if (!(autoLength || (sizelength <= 2147483647)))
|
|
2282
2717
|
return envObject.setLastError(1);
|
|
2718
|
+
str >>>= 0;
|
|
2283
2719
|
var strValue = stringMaker(str, autoLength, sizelength);
|
|
2720
|
+
result >>>= 0;
|
|
2284
2721
|
var value = emnapiCtx.addToCurrentScope(strValue).id;
|
|
2285
2722
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2286
2723
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
2287
2724
|
return envObject.clearLastError();
|
|
2288
2725
|
},
|
|
2289
2726
|
newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
|
|
2727
|
+
length >>>= 0;
|
|
2290
2728
|
if (!env)
|
|
2291
2729
|
return 1;
|
|
2292
2730
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2293
2731
|
envObject.checkGCAccess();
|
|
2294
|
-
var autoLength = length === -1;
|
|
2732
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2295
2733
|
var sizelength = length >>> 0;
|
|
2296
2734
|
if (length !== 0) {
|
|
2297
2735
|
if (!str)
|
|
@@ -2333,6 +2771,7 @@ function createNapiModule(options) {
|
|
|
2333
2771
|
if (!handle.isArray()) {
|
|
2334
2772
|
return envObject.setLastError(8);
|
|
2335
2773
|
}
|
|
2774
|
+
result >>>= 0;
|
|
2336
2775
|
var v = handle.value.length >>> 0;
|
|
2337
2776
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2338
2777
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2351,19 +2790,55 @@ function createNapiModule(options) {
|
|
|
2351
2790
|
if (!arraybuffer)
|
|
2352
2791
|
return envObject.setLastError(1);
|
|
2353
2792
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
2354
|
-
if (!handle.isArrayBuffer()) {
|
|
2793
|
+
if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
2355
2794
|
return envObject.setLastError(1);
|
|
2356
2795
|
}
|
|
2357
2796
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2358
2797
|
if (data) {
|
|
2798
|
+
data >>>= 0;
|
|
2359
2799
|
var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
|
|
2360
2800
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2361
2801
|
}
|
|
2362
2802
|
if (byte_length) {
|
|
2803
|
+
byte_length >>>= 0;
|
|
2363
2804
|
HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
|
|
2364
2805
|
}
|
|
2365
2806
|
return envObject.clearLastError();
|
|
2366
2807
|
}
|
|
2808
|
+
function node_api_set_prototype(env, object, value) {
|
|
2809
|
+
if (!env)
|
|
2810
|
+
return 1;
|
|
2811
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
2812
|
+
envObject.checkGCAccess();
|
|
2813
|
+
if (!envObject.tryCatch.isEmpty())
|
|
2814
|
+
return envObject.setLastError(10);
|
|
2815
|
+
if (!envObject.canCallIntoJs())
|
|
2816
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
2817
|
+
envObject.clearLastError();
|
|
2818
|
+
try {
|
|
2819
|
+
if (!value)
|
|
2820
|
+
return envObject.setLastError(1);
|
|
2821
|
+
var obj = emnapiCtx.handleStore.get(object).value;
|
|
2822
|
+
if (obj == null) {
|
|
2823
|
+
throw new TypeError('Cannot convert undefined or null to object');
|
|
2824
|
+
}
|
|
2825
|
+
var type = typeof obj;
|
|
2826
|
+
var v = void 0;
|
|
2827
|
+
try {
|
|
2828
|
+
v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
|
|
2829
|
+
}
|
|
2830
|
+
catch (_) {
|
|
2831
|
+
return envObject.setLastError(2);
|
|
2832
|
+
}
|
|
2833
|
+
var val = emnapiCtx.handleStore.get(value).value;
|
|
2834
|
+
Object.setPrototypeOf(v, val);
|
|
2835
|
+
return envObject.getReturnStatus();
|
|
2836
|
+
}
|
|
2837
|
+
catch (err) {
|
|
2838
|
+
envObject.tryCatch.setError(err);
|
|
2839
|
+
return envObject.setLastError(10);
|
|
2840
|
+
}
|
|
2841
|
+
}
|
|
2367
2842
|
function napi_get_prototype(env, value, result) {
|
|
2368
2843
|
if (!env)
|
|
2369
2844
|
return 1;
|
|
@@ -2390,6 +2865,7 @@ function createNapiModule(options) {
|
|
|
2390
2865
|
catch (_) {
|
|
2391
2866
|
return envObject.setLastError(2);
|
|
2392
2867
|
}
|
|
2868
|
+
result >>>= 0;
|
|
2393
2869
|
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
2394
2870
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2395
2871
|
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
@@ -2414,6 +2890,7 @@ function createNapiModule(options) {
|
|
|
2414
2890
|
var v = handle.value;
|
|
2415
2891
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2416
2892
|
if (type) {
|
|
2893
|
+
type >>>= 0;
|
|
2417
2894
|
var t = void 0;
|
|
2418
2895
|
if (v instanceof Int8Array) {
|
|
2419
2896
|
t = 0;
|
|
@@ -2436,6 +2913,9 @@ function createNapiModule(options) {
|
|
|
2436
2913
|
else if (v instanceof Uint32Array) {
|
|
2437
2914
|
t = 6;
|
|
2438
2915
|
}
|
|
2916
|
+
else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
|
|
2917
|
+
t = 11;
|
|
2918
|
+
}
|
|
2439
2919
|
else if (v instanceof Float32Array) {
|
|
2440
2920
|
t = 7;
|
|
2441
2921
|
}
|
|
@@ -2453,22 +2933,25 @@ function createNapiModule(options) {
|
|
|
2453
2933
|
}
|
|
2454
2934
|
HEAP_DATA_VIEW.setInt32(type, t, true);
|
|
2455
2935
|
}
|
|
2936
|
+
v = emnapiExternalMemory.getOrUpdateMemoryView(v);
|
|
2456
2937
|
if (length) {
|
|
2938
|
+
length >>>= 0;
|
|
2457
2939
|
HEAP_DATA_VIEW.setUint32(length, v.length, true);
|
|
2458
2940
|
}
|
|
2459
|
-
var buffer;
|
|
2460
2941
|
if (data || arraybuffer) {
|
|
2461
|
-
buffer = v.buffer;
|
|
2462
2942
|
if (data) {
|
|
2943
|
+
data >>>= 0;
|
|
2463
2944
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2464
2945
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2465
2946
|
}
|
|
2466
2947
|
if (arraybuffer) {
|
|
2467
|
-
|
|
2948
|
+
arraybuffer >>>= 0;
|
|
2949
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2468
2950
|
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2469
2951
|
}
|
|
2470
2952
|
}
|
|
2471
2953
|
if (byte_offset) {
|
|
2954
|
+
byte_offset >>>= 0;
|
|
2472
2955
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2473
2956
|
}
|
|
2474
2957
|
return envObject.clearLastError();
|
|
@@ -2499,24 +2982,26 @@ function createNapiModule(options) {
|
|
|
2499
2982
|
if (!handle.isDataView()) {
|
|
2500
2983
|
return envObject.setLastError(1);
|
|
2501
2984
|
}
|
|
2502
|
-
var v = handle.value;
|
|
2985
|
+
var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
|
|
2503
2986
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2504
2987
|
if (byte_length) {
|
|
2988
|
+
byte_length >>>= 0;
|
|
2505
2989
|
HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
|
|
2506
2990
|
}
|
|
2507
|
-
var buffer;
|
|
2508
2991
|
if (data || arraybuffer) {
|
|
2509
|
-
buffer = v.buffer;
|
|
2510
2992
|
if (data) {
|
|
2993
|
+
data >>>= 0;
|
|
2511
2994
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2512
2995
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2513
2996
|
}
|
|
2514
2997
|
if (arraybuffer) {
|
|
2515
|
-
|
|
2998
|
+
arraybuffer >>>= 0;
|
|
2999
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2516
3000
|
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2517
3001
|
}
|
|
2518
3002
|
}
|
|
2519
3003
|
if (byte_offset) {
|
|
3004
|
+
byte_offset >>>= 0;
|
|
2520
3005
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2521
3006
|
}
|
|
2522
3007
|
return envObject.clearLastError();
|
|
@@ -2541,6 +3026,7 @@ function createNapiModule(options) {
|
|
|
2541
3026
|
if (!handle.isDate()) {
|
|
2542
3027
|
return envObject.setLastError(1);
|
|
2543
3028
|
}
|
|
3029
|
+
result >>>= 0;
|
|
2544
3030
|
v = handle.value.valueOf();
|
|
2545
3031
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2546
3032
|
HEAP_DATA_VIEW.setFloat64(result, v, true);
|
|
@@ -2564,6 +3050,7 @@ function createNapiModule(options) {
|
|
|
2564
3050
|
if (typeof handle.value !== 'boolean') {
|
|
2565
3051
|
return envObject.setLastError(7);
|
|
2566
3052
|
}
|
|
3053
|
+
result >>>= 0;
|
|
2567
3054
|
var r = handle.value ? 1 : 0;
|
|
2568
3055
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2569
3056
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -2582,6 +3069,7 @@ function createNapiModule(options) {
|
|
|
2582
3069
|
if (typeof handle.value !== 'number') {
|
|
2583
3070
|
return envObject.setLastError(6);
|
|
2584
3071
|
}
|
|
3072
|
+
result >>>= 0;
|
|
2585
3073
|
var r = handle.value;
|
|
2586
3074
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2587
3075
|
HEAP_DATA_VIEW.setFloat64(result, r, true);
|
|
@@ -2606,6 +3094,8 @@ function createNapiModule(options) {
|
|
|
2606
3094
|
if (typeof numberValue !== 'bigint') {
|
|
2607
3095
|
return envObject.setLastError(6);
|
|
2608
3096
|
}
|
|
3097
|
+
lossless >>>= 0;
|
|
3098
|
+
result >>>= 0;
|
|
2609
3099
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2610
3100
|
if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
|
|
2611
3101
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2642,6 +3132,8 @@ function createNapiModule(options) {
|
|
|
2642
3132
|
if (typeof numberValue !== 'bigint') {
|
|
2643
3133
|
return envObject.setLastError(6);
|
|
2644
3134
|
}
|
|
3135
|
+
lossless >>>= 0;
|
|
3136
|
+
result >>>= 0;
|
|
2645
3137
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2646
3138
|
if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
|
|
2647
3139
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2673,8 +3165,12 @@ function createNapiModule(options) {
|
|
|
2673
3165
|
return envObject.setLastError(17);
|
|
2674
3166
|
}
|
|
2675
3167
|
var isMinus = handle.value < BigInt(0);
|
|
3168
|
+
sign_bit >>>= 0;
|
|
3169
|
+
words >>>= 0;
|
|
3170
|
+
word_count >>>= 0;
|
|
2676
3171
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2677
3172
|
var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
|
|
3173
|
+
word_count_int >>>= 0;
|
|
2678
3174
|
var wordCount = 0;
|
|
2679
3175
|
var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
|
|
2680
3176
|
while (bigintValue !== BigInt(0)) {
|
|
@@ -2722,6 +3218,7 @@ function createNapiModule(options) {
|
|
|
2722
3218
|
if (!handle.isExternal()) {
|
|
2723
3219
|
return envObject.setLastError(1);
|
|
2724
3220
|
}
|
|
3221
|
+
result >>>= 0;
|
|
2725
3222
|
var p = handle.data();
|
|
2726
3223
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2727
3224
|
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
@@ -2740,6 +3237,7 @@ function createNapiModule(options) {
|
|
|
2740
3237
|
if (typeof handle.value !== 'number') {
|
|
2741
3238
|
return envObject.setLastError(6);
|
|
2742
3239
|
}
|
|
3240
|
+
result >>>= 0;
|
|
2743
3241
|
var v = new Int32Array([handle.value])[0];
|
|
2744
3242
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2745
3243
|
HEAP_DATA_VIEW.setInt32(result, v, true);
|
|
@@ -2759,6 +3257,7 @@ function createNapiModule(options) {
|
|
|
2759
3257
|
return envObject.setLastError(6);
|
|
2760
3258
|
}
|
|
2761
3259
|
var numberValue = handle.value;
|
|
3260
|
+
result >>>= 0;
|
|
2762
3261
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2763
3262
|
if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
|
|
2764
3263
|
HEAP_DATA_VIEW.setInt32(result, 0, true);
|
|
@@ -2784,6 +3283,9 @@ function createNapiModule(options) {
|
|
|
2784
3283
|
envObject.checkGCAccess();
|
|
2785
3284
|
if (!value)
|
|
2786
3285
|
return envObject.setLastError(1);
|
|
3286
|
+
result >>>= 0;
|
|
3287
|
+
buf >>>= 0;
|
|
3288
|
+
buf_size >>>= 0;
|
|
2787
3289
|
buf_size = buf_size >>> 0;
|
|
2788
3290
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2789
3291
|
if (typeof handle.value !== 'string') {
|
|
@@ -2820,6 +3322,9 @@ function createNapiModule(options) {
|
|
|
2820
3322
|
envObject.checkGCAccess();
|
|
2821
3323
|
if (!value)
|
|
2822
3324
|
return envObject.setLastError(1);
|
|
3325
|
+
result >>>= 0;
|
|
3326
|
+
buf >>>= 0;
|
|
3327
|
+
buf_size >>>= 0;
|
|
2823
3328
|
buf_size = buf_size >>> 0;
|
|
2824
3329
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2825
3330
|
if (typeof handle.value !== 'string') {
|
|
@@ -2850,6 +3355,9 @@ function createNapiModule(options) {
|
|
|
2850
3355
|
envObject.checkGCAccess();
|
|
2851
3356
|
if (!value)
|
|
2852
3357
|
return envObject.setLastError(1);
|
|
3358
|
+
result >>>= 0;
|
|
3359
|
+
buf >>>= 0;
|
|
3360
|
+
buf_size >>>= 0;
|
|
2853
3361
|
buf_size = buf_size >>> 0;
|
|
2854
3362
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2855
3363
|
if (typeof handle.value !== 'string') {
|
|
@@ -2885,6 +3393,7 @@ function createNapiModule(options) {
|
|
|
2885
3393
|
if (typeof handle.value !== 'number') {
|
|
2886
3394
|
return envObject.setLastError(6);
|
|
2887
3395
|
}
|
|
3396
|
+
result >>>= 0;
|
|
2888
3397
|
var v = new Uint32Array([handle.value])[0];
|
|
2889
3398
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2890
3399
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2910,7 +3419,8 @@ function createNapiModule(options) {
|
|
|
2910
3419
|
napi_get_value_string_latin1: napi_get_value_string_latin1,
|
|
2911
3420
|
napi_get_value_string_utf16: napi_get_value_string_utf16,
|
|
2912
3421
|
napi_get_value_string_utf8: napi_get_value_string_utf8,
|
|
2913
|
-
napi_get_value_uint32: napi_get_value_uint32
|
|
3422
|
+
napi_get_value_uint32: napi_get_value_uint32,
|
|
3423
|
+
node_api_set_prototype: node_api_set_prototype
|
|
2914
3424
|
});
|
|
2915
3425
|
function napi_create_int32(env, value, result) {
|
|
2916
3426
|
if (!env)
|
|
@@ -2919,6 +3429,7 @@ function createNapiModule(options) {
|
|
|
2919
3429
|
envObject.checkGCAccess();
|
|
2920
3430
|
if (!result)
|
|
2921
3431
|
return envObject.setLastError(1);
|
|
3432
|
+
result >>>= 0;
|
|
2922
3433
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2923
3434
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2924
3435
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2931,6 +3442,7 @@ function createNapiModule(options) {
|
|
|
2931
3442
|
envObject.checkGCAccess();
|
|
2932
3443
|
if (!result)
|
|
2933
3444
|
return envObject.setLastError(1);
|
|
3445
|
+
result >>>= 0;
|
|
2934
3446
|
var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
|
|
2935
3447
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2936
3448
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2946,6 +3458,7 @@ function createNapiModule(options) {
|
|
|
2946
3458
|
return envObject.setLastError(1);
|
|
2947
3459
|
value = Number(low);
|
|
2948
3460
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3461
|
+
high >>>= 0;
|
|
2949
3462
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2950
3463
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
2951
3464
|
return envObject.clearLastError();
|
|
@@ -2957,6 +3470,7 @@ function createNapiModule(options) {
|
|
|
2957
3470
|
envObject.checkGCAccess();
|
|
2958
3471
|
if (!result)
|
|
2959
3472
|
return envObject.setLastError(1);
|
|
3473
|
+
result >>>= 0;
|
|
2960
3474
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2961
3475
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2962
3476
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -3027,6 +3541,7 @@ function createNapiModule(options) {
|
|
|
3027
3541
|
return envObject.setLastError(1);
|
|
3028
3542
|
value = low;
|
|
3029
3543
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3544
|
+
high >>>= 0;
|
|
3030
3545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3031
3546
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3032
3547
|
return envObject.clearLastError();
|
|
@@ -3044,6 +3559,7 @@ function createNapiModule(options) {
|
|
|
3044
3559
|
return envObject.setLastError(1);
|
|
3045
3560
|
value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
|
|
3046
3561
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3562
|
+
high >>>= 0;
|
|
3047
3563
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3048
3564
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3049
3565
|
return envObject.clearLastError();
|
|
@@ -3065,6 +3581,8 @@ function createNapiModule(options) {
|
|
|
3065
3581
|
}
|
|
3066
3582
|
if (!result)
|
|
3067
3583
|
return envObject.setLastError(1);
|
|
3584
|
+
words >>>= 0;
|
|
3585
|
+
word_count >>>= 0;
|
|
3068
3586
|
word_count = word_count >>> 0;
|
|
3069
3587
|
if (word_count > 2147483647) {
|
|
3070
3588
|
return envObject.setLastError(1);
|
|
@@ -3081,6 +3599,7 @@ function createNapiModule(options) {
|
|
|
3081
3599
|
value += wordi << BigInt(64 * i);
|
|
3082
3600
|
}
|
|
3083
3601
|
value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
|
|
3602
|
+
result >>>= 0;
|
|
3084
3603
|
v = emnapiCtx.addToCurrentScope(value).id;
|
|
3085
3604
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3086
3605
|
return envObject.getReturnStatus();
|
|
@@ -3109,6 +3628,7 @@ function createNapiModule(options) {
|
|
|
3109
3628
|
node_api_create_property_key_utf8: node_api_create_property_key_utf8
|
|
3110
3629
|
});
|
|
3111
3630
|
function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
|
|
3631
|
+
utf8name >>>= 0;
|
|
3112
3632
|
var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
|
|
3113
3633
|
var f;
|
|
3114
3634
|
var napiCallback = (wasmTable.get(cb));
|
|
@@ -3249,6 +3769,7 @@ function createNapiModule(options) {
|
|
|
3249
3769
|
if (!finalize_cb)
|
|
3250
3770
|
return envObject.setLastError(1);
|
|
3251
3771
|
reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
|
|
3772
|
+
result >>>= 0;
|
|
3252
3773
|
referenceId = reference.id;
|
|
3253
3774
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3254
3775
|
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
@@ -3297,6 +3818,7 @@ function createNapiModule(options) {
|
|
|
3297
3818
|
if (!ref)
|
|
3298
3819
|
return envObject.setLastError(1);
|
|
3299
3820
|
if (result) {
|
|
3821
|
+
result >>>= 0;
|
|
3300
3822
|
data = ref.data();
|
|
3301
3823
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3302
3824
|
HEAP_DATA_VIEW.setUint32(result, data, true);
|
|
@@ -3333,12 +3855,15 @@ function createNapiModule(options) {
|
|
|
3333
3855
|
return envObject.setLastError(1);
|
|
3334
3856
|
if (!constructor)
|
|
3335
3857
|
return envObject.setLastError(1);
|
|
3858
|
+
length >>>= 0;
|
|
3859
|
+
properties >>>= 0;
|
|
3860
|
+
property_count >>>= 0;
|
|
3336
3861
|
property_count = property_count >>> 0;
|
|
3337
3862
|
if (property_count > 0) {
|
|
3338
3863
|
if (!properties)
|
|
3339
3864
|
return envObject.setLastError(1);
|
|
3340
3865
|
}
|
|
3341
|
-
if ((length
|
|
3866
|
+
if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
|
|
3342
3867
|
return envObject.setLastError(1);
|
|
3343
3868
|
}
|
|
3344
3869
|
var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
|
|
@@ -3356,6 +3881,7 @@ function createNapiModule(options) {
|
|
|
3356
3881
|
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
3357
3882
|
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
3358
3883
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
3884
|
+
attributes >>>= 0;
|
|
3359
3885
|
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
3360
3886
|
if (utf8Name) {
|
|
3361
3887
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
@@ -3377,6 +3903,7 @@ function createNapiModule(options) {
|
|
|
3377
3903
|
}
|
|
3378
3904
|
var valueHandle = emnapiCtx.addToCurrentScope(F);
|
|
3379
3905
|
valueHandleId = valueHandle.id;
|
|
3906
|
+
result >>>= 0;
|
|
3380
3907
|
HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
|
|
3381
3908
|
return envObject.getReturnStatus();
|
|
3382
3909
|
}
|
|
@@ -3412,6 +3939,7 @@ function createNapiModule(options) {
|
|
|
3412
3939
|
if (!(value.isObject() || value.isFunction())) {
|
|
3413
3940
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
|
|
3414
3941
|
}
|
|
3942
|
+
type_tag >>>= 0;
|
|
3415
3943
|
if (!type_tag) {
|
|
3416
3944
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
|
|
3417
3945
|
}
|
|
@@ -3456,6 +3984,7 @@ function createNapiModule(options) {
|
|
|
3456
3984
|
}
|
|
3457
3985
|
var binding = envObject.getObjectBinding(value.value);
|
|
3458
3986
|
if (binding.tag !== null) {
|
|
3987
|
+
type_tag >>>= 0;
|
|
3459
3988
|
var tag = binding.tag;
|
|
3460
3989
|
var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
|
|
3461
3990
|
ret = (tag[0] === typeTag[0] &&
|
|
@@ -3466,6 +3995,7 @@ function createNapiModule(options) {
|
|
|
3466
3995
|
else {
|
|
3467
3996
|
ret = false;
|
|
3468
3997
|
}
|
|
3998
|
+
result >>>= 0;
|
|
3469
3999
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3470
4000
|
HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
|
|
3471
4001
|
return envObject.getReturnStatus();
|
|
@@ -3493,8 +4023,12 @@ function createNapiModule(options) {
|
|
|
3493
4023
|
}
|
|
3494
4024
|
var handle = handleResult.handle;
|
|
3495
4025
|
var ownership = !result ? 0 : 1;
|
|
4026
|
+
finalize_data >>>= 0;
|
|
4027
|
+
finalize_cb >>>= 0;
|
|
4028
|
+
finalize_hint >>>= 0;
|
|
3496
4029
|
var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
|
|
3497
4030
|
if (result) {
|
|
4031
|
+
result >>>= 0;
|
|
3498
4032
|
var referenceId = reference.id;
|
|
3499
4033
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3500
4034
|
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
@@ -3533,6 +4067,9 @@ function createNapiModule(options) {
|
|
|
3533
4067
|
try {
|
|
3534
4068
|
if (!result)
|
|
3535
4069
|
return envObject.setLastError(1);
|
|
4070
|
+
byte_length >>>= 0;
|
|
4071
|
+
external_data >>>= 0;
|
|
4072
|
+
result >>>= 0;
|
|
3536
4073
|
byte_length = byte_length >>> 0;
|
|
3537
4074
|
if (!external_data) {
|
|
3538
4075
|
byte_length = 0;
|
|
@@ -3584,6 +4121,12 @@ function createNapiModule(options) {
|
|
|
3584
4121
|
case -1:
|
|
3585
4122
|
viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 };
|
|
3586
4123
|
break;
|
|
4124
|
+
case 11:
|
|
4125
|
+
if (typeof Float16Array !== 'function') {
|
|
4126
|
+
return envObject.setLastError(1);
|
|
4127
|
+
}
|
|
4128
|
+
viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 };
|
|
4129
|
+
break;
|
|
3587
4130
|
case -2: {
|
|
3588
4131
|
if (!emnapiCtx.feature.Buffer) {
|
|
3589
4132
|
throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
|
|
@@ -3633,11 +4176,11 @@ function createNapiModule(options) {
|
|
|
3633
4176
|
offset = offset !== null && offset !== void 0 ? offset : 0;
|
|
3634
4177
|
offset = offset >>> 0;
|
|
3635
4178
|
var view;
|
|
3636
|
-
if (arrayBufferOrView instanceof ArrayBuffer) {
|
|
4179
|
+
if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
3637
4180
|
var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
|
|
3638
4181
|
if (!pointer)
|
|
3639
4182
|
throw new Error('Unknown ArrayBuffer address');
|
|
3640
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4183
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3641
4184
|
len = arrayBufferOrView.byteLength - offset;
|
|
3642
4185
|
}
|
|
3643
4186
|
len = len >>> 0;
|
|
@@ -3659,7 +4202,7 @@ function createNapiModule(options) {
|
|
|
3659
4202
|
var pointer = viewPointerInfo.address;
|
|
3660
4203
|
if (!pointer)
|
|
3661
4204
|
throw new Error('Unknown ArrayBuffer address');
|
|
3662
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4205
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3663
4206
|
len = latestView.byteLength - offset;
|
|
3664
4207
|
}
|
|
3665
4208
|
len = len >>> 0;
|
|
@@ -3691,14 +4234,18 @@ function createNapiModule(options) {
|
|
|
3691
4234
|
try {
|
|
3692
4235
|
if (!arraybuffer_or_view)
|
|
3693
4236
|
return envObject.setLastError(1);
|
|
4237
|
+
arraybuffer_or_view >>>= 0;
|
|
4238
|
+
offset >>>= 0;
|
|
4239
|
+
len >>>= 0;
|
|
3694
4240
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3695
4241
|
var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
|
|
3696
4242
|
var handle = envObject.ctx.handleStore.get(handleId);
|
|
3697
|
-
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView()) {
|
|
4243
|
+
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
3698
4244
|
return envObject.setLastError(1);
|
|
3699
4245
|
}
|
|
3700
4246
|
var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
|
|
3701
4247
|
if (handle.value !== ret) {
|
|
4248
|
+
arraybuffer_or_view >>>= 0;
|
|
3702
4249
|
v = envObject.ensureHandleId(ret);
|
|
3703
4250
|
HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
|
|
3704
4251
|
}
|
|
@@ -3713,7 +4260,7 @@ function createNapiModule(options) {
|
|
|
3713
4260
|
var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer;
|
|
3714
4261
|
var isDataView = arrayBufferOrView instanceof DataView;
|
|
3715
4262
|
var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView;
|
|
3716
|
-
if (!isArrayBuffer && !isTypedArray && !isDataView) {
|
|
4263
|
+
if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
3717
4264
|
throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter');
|
|
3718
4265
|
}
|
|
3719
4266
|
var info;
|
|
@@ -3752,13 +4299,16 @@ function createNapiModule(options) {
|
|
|
3752
4299
|
p = info.address;
|
|
3753
4300
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3754
4301
|
if (address) {
|
|
4302
|
+
address >>>= 0;
|
|
3755
4303
|
HEAP_DATA_VIEW.setUint32(address, p, true);
|
|
3756
4304
|
}
|
|
3757
4305
|
if (ownership) {
|
|
4306
|
+
ownership >>>= 0;
|
|
3758
4307
|
ownershipOut = info.ownership;
|
|
3759
4308
|
HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
|
|
3760
4309
|
}
|
|
3761
4310
|
if (runtime_allocated) {
|
|
4311
|
+
runtime_allocated >>>= 0;
|
|
3762
4312
|
runtimeAllocated = info.runtimeAllocated;
|
|
3763
4313
|
HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
|
|
3764
4314
|
}
|
|
@@ -3784,22 +4334,102 @@ function createNapiModule(options) {
|
|
|
3784
4334
|
}
|
|
3785
4335
|
var versions = runtimeVersion.split('.')
|
|
3786
4336
|
.map(function (n) { return Number(n); });
|
|
4337
|
+
version >>>= 0;
|
|
3787
4338
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3788
4339
|
HEAP_DATA_VIEW.setUint32(version, versions[0], true);
|
|
3789
4340
|
HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
|
|
3790
4341
|
HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
|
|
3791
4342
|
return envObject.clearLastError();
|
|
3792
4343
|
}
|
|
4344
|
+
function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
|
|
4345
|
+
if (!env)
|
|
4346
|
+
return 1;
|
|
4347
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4348
|
+
envObject.checkGCAccess();
|
|
4349
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4350
|
+
return envObject.setLastError(10);
|
|
4351
|
+
if (!envObject.canCallIntoJs())
|
|
4352
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4353
|
+
envObject.clearLastError();
|
|
4354
|
+
try {
|
|
4355
|
+
if (!sharedarraybuffer)
|
|
4356
|
+
return envObject.setLastError(1);
|
|
4357
|
+
if (!handle)
|
|
4358
|
+
return envObject.setLastError(1);
|
|
4359
|
+
handle >>>= 0;
|
|
4360
|
+
var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
|
|
4361
|
+
if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
|
|
4362
|
+
return envObject.setLastError(1);
|
|
4363
|
+
}
|
|
4364
|
+
var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
|
|
4365
|
+
if (metaPtr === undefined) {
|
|
4366
|
+
return envObject.setLastError(1);
|
|
4367
|
+
}
|
|
4368
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4369
|
+
HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
|
|
4370
|
+
return envObject.getReturnStatus();
|
|
4371
|
+
}
|
|
4372
|
+
catch (err) {
|
|
4373
|
+
envObject.tryCatch.setError(err);
|
|
4374
|
+
return envObject.setLastError(10);
|
|
4375
|
+
}
|
|
4376
|
+
}
|
|
4377
|
+
function emnapi_acquire_external_sharedarraybuffer(handle) {
|
|
4378
|
+
handle >>>= 0;
|
|
4379
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4380
|
+
}
|
|
4381
|
+
function emnapi_release_external_sharedarraybuffer(handle) {
|
|
4382
|
+
handle >>>= 0;
|
|
4383
|
+
emnapiExternalSAB.release(handle);
|
|
4384
|
+
}
|
|
4385
|
+
function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
|
|
4386
|
+
if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
|
|
4387
|
+
throw new TypeError('Expected a SharedArrayBuffer');
|
|
4388
|
+
}
|
|
4389
|
+
if (!emnapiExternalSAB.registry) {
|
|
4390
|
+
throw new Error('FinalizationRegistry is not supported in this environment');
|
|
4391
|
+
}
|
|
4392
|
+
handle >>>= 0;
|
|
4393
|
+
var meta = emnapiExternalSAB.readMeta(handle);
|
|
4394
|
+
var external_data = meta.external_data;
|
|
4395
|
+
external_data >>>= 0;
|
|
4396
|
+
if (sab == null) {
|
|
4397
|
+
sab = new SharedArrayBuffer(meta.byte_length);
|
|
4398
|
+
new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
|
|
4399
|
+
}
|
|
4400
|
+
else {
|
|
4401
|
+
if (emnapiExternalSAB.handleTable.has(sab)) {
|
|
4402
|
+
return sab;
|
|
4403
|
+
}
|
|
4404
|
+
}
|
|
4405
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4406
|
+
if (!emnapiExternalMemory.table.has(sab)) {
|
|
4407
|
+
if (external_data) {
|
|
4408
|
+
emnapiExternalMemory.table.set(sab, {
|
|
4409
|
+
address: external_data,
|
|
4410
|
+
ownership: 1,
|
|
4411
|
+
runtimeAllocated: 0
|
|
4412
|
+
});
|
|
4413
|
+
}
|
|
4414
|
+
}
|
|
4415
|
+
emnapiExternalSAB.handleTable.set(sab, handle);
|
|
4416
|
+
emnapiExternalSAB.registry.register(sab, handle);
|
|
4417
|
+
return sab;
|
|
4418
|
+
}
|
|
3793
4419
|
var emnapiMod = Object.freeze({
|
|
3794
4420
|
__proto__: null,
|
|
4421
|
+
$emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
|
|
3795
4422
|
$emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
|
|
3796
4423
|
$emnapiSyncMemory: $emnapiSyncMemory,
|
|
4424
|
+
emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
|
|
3797
4425
|
emnapi_create_memory_view: emnapi_create_memory_view,
|
|
4426
|
+
emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
|
|
3798
4427
|
emnapi_get_memory_address: emnapi_get_memory_address,
|
|
3799
4428
|
emnapi_get_runtime_version: emnapi_get_runtime_version,
|
|
3800
4429
|
emnapi_is_node_binding_available: emnapi_is_node_binding_available,
|
|
3801
4430
|
emnapi_is_support_bigint: emnapi_is_support_bigint,
|
|
3802
4431
|
emnapi_is_support_weakref: emnapi_is_support_weakref,
|
|
4432
|
+
emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
|
|
3803
4433
|
emnapi_sync_memory: emnapi_sync_memory
|
|
3804
4434
|
});
|
|
3805
4435
|
function napi_create_array(env, result) {
|
|
@@ -3809,6 +4439,7 @@ function createNapiModule(options) {
|
|
|
3809
4439
|
envObject.checkGCAccess();
|
|
3810
4440
|
if (!result)
|
|
3811
4441
|
return envObject.setLastError(1);
|
|
4442
|
+
result >>>= 0;
|
|
3812
4443
|
var value = emnapiCtx.addToCurrentScope([]).id;
|
|
3813
4444
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3814
4445
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3821,16 +4452,20 @@ function createNapiModule(options) {
|
|
|
3821
4452
|
envObject.checkGCAccess();
|
|
3822
4453
|
if (!result)
|
|
3823
4454
|
return envObject.setLastError(1);
|
|
4455
|
+
length >>>= 0;
|
|
4456
|
+
result >>>= 0;
|
|
3824
4457
|
length = length >>> 0;
|
|
3825
4458
|
var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
|
|
3826
4459
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3827
4460
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3828
4461
|
return envObject.clearLastError();
|
|
3829
4462
|
}
|
|
3830
|
-
function emnapiCreateArrayBuffer(byte_length, data) {
|
|
4463
|
+
function emnapiCreateArrayBuffer(byte_length, data, shared) {
|
|
4464
|
+
byte_length >>>= 0;
|
|
3831
4465
|
byte_length = byte_length >>> 0;
|
|
3832
|
-
var arrayBuffer = new ArrayBuffer(byte_length);
|
|
4466
|
+
var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
|
|
3833
4467
|
if (data) {
|
|
4468
|
+
data >>>= 0;
|
|
3834
4469
|
var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
|
|
3835
4470
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3836
4471
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
@@ -3851,7 +4486,34 @@ function createNapiModule(options) {
|
|
|
3851
4486
|
try {
|
|
3852
4487
|
if (!result)
|
|
3853
4488
|
return envObject.setLastError(1);
|
|
3854
|
-
|
|
4489
|
+
result >>>= 0;
|
|
4490
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
|
|
4491
|
+
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
4492
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4493
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4494
|
+
return envObject.getReturnStatus();
|
|
4495
|
+
}
|
|
4496
|
+
catch (err) {
|
|
4497
|
+
envObject.tryCatch.setError(err);
|
|
4498
|
+
return envObject.setLastError(10);
|
|
4499
|
+
}
|
|
4500
|
+
}
|
|
4501
|
+
function node_api_create_sharedarraybuffer(env, byte_length, data, result) {
|
|
4502
|
+
var value;
|
|
4503
|
+
if (!env)
|
|
4504
|
+
return 1;
|
|
4505
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4506
|
+
envObject.checkGCAccess();
|
|
4507
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4508
|
+
return envObject.setLastError(10);
|
|
4509
|
+
if (!envObject.canCallIntoJs())
|
|
4510
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4511
|
+
envObject.clearLastError();
|
|
4512
|
+
try {
|
|
4513
|
+
if (!result)
|
|
4514
|
+
return envObject.setLastError(1);
|
|
4515
|
+
result >>>= 0;
|
|
4516
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
|
|
3855
4517
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
3856
4518
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3857
4519
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3876,6 +4538,7 @@ function createNapiModule(options) {
|
|
|
3876
4538
|
try {
|
|
3877
4539
|
if (!result)
|
|
3878
4540
|
return envObject.setLastError(1);
|
|
4541
|
+
result >>>= 0;
|
|
3879
4542
|
value = emnapiCtx.addToCurrentScope(new Date(time)).id;
|
|
3880
4543
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3881
4544
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3907,6 +4570,7 @@ function createNapiModule(options) {
|
|
|
3907
4570
|
if (finalize_cb) {
|
|
3908
4571
|
emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
|
|
3909
4572
|
}
|
|
4573
|
+
result >>>= 0;
|
|
3910
4574
|
value = externalHandle.id;
|
|
3911
4575
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3912
4576
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3931,6 +4595,9 @@ function createNapiModule(options) {
|
|
|
3931
4595
|
try {
|
|
3932
4596
|
if (!result)
|
|
3933
4597
|
return envObject.setLastError(1);
|
|
4598
|
+
byte_length >>>= 0;
|
|
4599
|
+
external_data >>>= 0;
|
|
4600
|
+
result >>>= 0;
|
|
3934
4601
|
byte_length = byte_length >>> 0;
|
|
3935
4602
|
if (!external_data) {
|
|
3936
4603
|
byte_length = 0;
|
|
@@ -3981,6 +4648,60 @@ function createNapiModule(options) {
|
|
|
3981
4648
|
return envObject.setLastError(10);
|
|
3982
4649
|
}
|
|
3983
4650
|
}
|
|
4651
|
+
function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
|
|
4652
|
+
var value;
|
|
4653
|
+
if (!env)
|
|
4654
|
+
return 1;
|
|
4655
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4656
|
+
envObject.checkGCAccess();
|
|
4657
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4658
|
+
return envObject.setLastError(10);
|
|
4659
|
+
if (!envObject.canCallIntoJs())
|
|
4660
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4661
|
+
envObject.clearLastError();
|
|
4662
|
+
try {
|
|
4663
|
+
if (!result)
|
|
4664
|
+
return envObject.setLastError(1);
|
|
4665
|
+
byte_length >>>= 0;
|
|
4666
|
+
external_data >>>= 0;
|
|
4667
|
+
result >>>= 0;
|
|
4668
|
+
byte_length = byte_length >>> 0;
|
|
4669
|
+
if (!external_data) {
|
|
4670
|
+
byte_length = 0;
|
|
4671
|
+
}
|
|
4672
|
+
if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
|
|
4673
|
+
throw new RangeError('Memory out of range');
|
|
4674
|
+
}
|
|
4675
|
+
if (!emnapiExternalSAB.registry && finalize_cb) {
|
|
4676
|
+
throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
|
|
4677
|
+
}
|
|
4678
|
+
var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
|
|
4679
|
+
if (byte_length !== 0) {
|
|
4680
|
+
var u8arr = new Uint8Array(sharedArrayBuffer);
|
|
4681
|
+
u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
|
|
4682
|
+
emnapiExternalMemory.table.set(sharedArrayBuffer, {
|
|
4683
|
+
address: external_data,
|
|
4684
|
+
ownership: 1,
|
|
4685
|
+
runtimeAllocated: 0
|
|
4686
|
+
});
|
|
4687
|
+
}
|
|
4688
|
+
value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
|
|
4689
|
+
if (finalize_cb) {
|
|
4690
|
+
finalize_cb >>>= 0;
|
|
4691
|
+
finalize_hint >>>= 0;
|
|
4692
|
+
var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
|
|
4693
|
+
emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
|
|
4694
|
+
emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
|
|
4695
|
+
}
|
|
4696
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4697
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4698
|
+
return envObject.getReturnStatus();
|
|
4699
|
+
}
|
|
4700
|
+
catch (err) {
|
|
4701
|
+
envObject.tryCatch.setError(err);
|
|
4702
|
+
return envObject.setLastError(10);
|
|
4703
|
+
}
|
|
4704
|
+
}
|
|
3984
4705
|
function napi_create_object(env, result) {
|
|
3985
4706
|
if (!env)
|
|
3986
4707
|
return 1;
|
|
@@ -3988,11 +4709,57 @@ function createNapiModule(options) {
|
|
|
3988
4709
|
envObject.checkGCAccess();
|
|
3989
4710
|
if (!result)
|
|
3990
4711
|
return envObject.setLastError(1);
|
|
4712
|
+
result >>>= 0;
|
|
3991
4713
|
var value = emnapiCtx.addToCurrentScope({}).id;
|
|
3992
4714
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3993
4715
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3994
4716
|
return envObject.clearLastError();
|
|
3995
4717
|
}
|
|
4718
|
+
function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
|
|
4719
|
+
if (!env)
|
|
4720
|
+
return 1;
|
|
4721
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4722
|
+
envObject.checkGCAccess();
|
|
4723
|
+
if (!result)
|
|
4724
|
+
return envObject.setLastError(1);
|
|
4725
|
+
property_count >>>= 0;
|
|
4726
|
+
property_count = property_count >>> 0;
|
|
4727
|
+
if (property_count > 0) {
|
|
4728
|
+
if (!property_names)
|
|
4729
|
+
return envObject.setLastError(1);
|
|
4730
|
+
if (!property_values)
|
|
4731
|
+
return envObject.setLastError(1);
|
|
4732
|
+
}
|
|
4733
|
+
var v8_prototype_or_null = prototype_or_null
|
|
4734
|
+
? emnapiCtx.handleStore.get(prototype_or_null).value
|
|
4735
|
+
: null;
|
|
4736
|
+
var properties = {};
|
|
4737
|
+
property_names >>>= 0;
|
|
4738
|
+
property_values >>>= 0;
|
|
4739
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4740
|
+
for (var i = 0; i < property_count; i++) {
|
|
4741
|
+
var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
|
|
4742
|
+
if (!(typeof name_value === "string" || typeof name_value === "symbol"))
|
|
4743
|
+
return envObject.setLastError(4);
|
|
4744
|
+
properties[name_value] = {
|
|
4745
|
+
value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
|
|
4746
|
+
writable: true,
|
|
4747
|
+
enumerable: true,
|
|
4748
|
+
configurable: true
|
|
4749
|
+
};
|
|
4750
|
+
}
|
|
4751
|
+
var obj;
|
|
4752
|
+
try {
|
|
4753
|
+
obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties);
|
|
4754
|
+
}
|
|
4755
|
+
catch (_) {
|
|
4756
|
+
return envObject.setLastError(9);
|
|
4757
|
+
}
|
|
4758
|
+
var value = emnapiCtx.addToCurrentScope(obj).id;
|
|
4759
|
+
result >>>= 0;
|
|
4760
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4761
|
+
return envObject.clearLastError();
|
|
4762
|
+
}
|
|
3996
4763
|
function napi_create_symbol(env, description, result) {
|
|
3997
4764
|
if (!env)
|
|
3998
4765
|
return 1;
|
|
@@ -4000,6 +4767,7 @@ function createNapiModule(options) {
|
|
|
4000
4767
|
envObject.checkGCAccess();
|
|
4001
4768
|
if (!result)
|
|
4002
4769
|
return envObject.setLastError(1);
|
|
4770
|
+
result >>>= 0;
|
|
4003
4771
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4004
4772
|
if (!description) {
|
|
4005
4773
|
var value = emnapiCtx.addToCurrentScope(Symbol()).id;
|
|
@@ -4033,10 +4801,9 @@ function createNapiModule(options) {
|
|
|
4033
4801
|
if (!result)
|
|
4034
4802
|
return envObject.setLastError(1);
|
|
4035
4803
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
4036
|
-
if (!handle.isArrayBuffer()) {
|
|
4037
|
-
return envObject.setLastError(1);
|
|
4038
|
-
}
|
|
4039
4804
|
var buffer = handle.value;
|
|
4805
|
+
byte_offset >>>= 0;
|
|
4806
|
+
length >>>= 0;
|
|
4040
4807
|
var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
|
|
4041
4808
|
var _a;
|
|
4042
4809
|
byte_offset = byte_offset >>> 0;
|
|
@@ -4067,36 +4834,47 @@ function createNapiModule(options) {
|
|
|
4067
4834
|
});
|
|
4068
4835
|
}
|
|
4069
4836
|
}
|
|
4837
|
+
result >>>= 0;
|
|
4070
4838
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4071
4839
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4072
4840
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4073
4841
|
return envObject.getReturnStatus();
|
|
4074
4842
|
};
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
|
|
4086
|
-
|
|
4087
|
-
|
|
4088
|
-
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4843
|
+
if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
|
|
4844
|
+
switch (type) {
|
|
4845
|
+
case 0:
|
|
4846
|
+
return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
|
|
4847
|
+
case 1:
|
|
4848
|
+
return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
|
|
4849
|
+
case 2:
|
|
4850
|
+
return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
|
|
4851
|
+
case 3:
|
|
4852
|
+
return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
|
|
4853
|
+
case 4:
|
|
4854
|
+
return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
|
|
4855
|
+
case 5:
|
|
4856
|
+
return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
|
|
4857
|
+
case 6:
|
|
4858
|
+
return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
|
|
4859
|
+
case 7:
|
|
4860
|
+
return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
|
|
4861
|
+
case 8:
|
|
4862
|
+
return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
|
|
4863
|
+
case 9:
|
|
4864
|
+
return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
|
|
4865
|
+
case 10:
|
|
4866
|
+
return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
|
|
4867
|
+
case 11:
|
|
4868
|
+
if (typeof Float16Array !== 'function') {
|
|
4869
|
+
return envObject.setLastError(1);
|
|
4870
|
+
}
|
|
4871
|
+
return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
|
|
4872
|
+
default:
|
|
4873
|
+
return envObject.setLastError(1);
|
|
4874
|
+
}
|
|
4875
|
+
}
|
|
4876
|
+
else {
|
|
4877
|
+
return envObject.setLastError(1);
|
|
4100
4878
|
}
|
|
4101
4879
|
}
|
|
4102
4880
|
catch (err) {
|
|
@@ -4123,7 +4901,9 @@ function createNapiModule(options) {
|
|
|
4123
4901
|
if (!Buffer) {
|
|
4124
4902
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
|
|
4125
4903
|
}
|
|
4904
|
+
result >>>= 0;
|
|
4126
4905
|
var buffer = void 0;
|
|
4906
|
+
size >>>= 0;
|
|
4127
4907
|
size = size >>> 0;
|
|
4128
4908
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4129
4909
|
if (!data || (size === 0)) {
|
|
@@ -4135,6 +4915,7 @@ function createNapiModule(options) {
|
|
|
4135
4915
|
pointer = _malloc(size);
|
|
4136
4916
|
if (!pointer)
|
|
4137
4917
|
throw new Error('Out of memory');
|
|
4918
|
+
pointer >>>= 0;
|
|
4138
4919
|
new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
|
|
4139
4920
|
var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
|
|
4140
4921
|
var viewDescriptor = {
|
|
@@ -4148,6 +4929,7 @@ function createNapiModule(options) {
|
|
|
4148
4929
|
(_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
|
|
4149
4930
|
value = emnapiCtx.addToCurrentScope(buffer_1).id;
|
|
4150
4931
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4932
|
+
data >>>= 0;
|
|
4151
4933
|
HEAP_DATA_VIEW.setUint32(data, pointer, true);
|
|
4152
4934
|
}
|
|
4153
4935
|
return envObject.getReturnStatus();
|
|
@@ -4175,10 +4957,13 @@ function createNapiModule(options) {
|
|
|
4175
4957
|
if (!Buffer) {
|
|
4176
4958
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', '');
|
|
4177
4959
|
}
|
|
4178
|
-
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data);
|
|
4960
|
+
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
|
|
4179
4961
|
var buffer = Buffer.from(arrayBuffer);
|
|
4962
|
+
data >>>= 0;
|
|
4963
|
+
length >>>= 0;
|
|
4180
4964
|
buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
|
|
4181
4965
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4966
|
+
result >>>= 0;
|
|
4182
4967
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4183
4968
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4184
4969
|
return envObject.getReturnStatus();
|
|
@@ -4207,6 +4992,8 @@ function createNapiModule(options) {
|
|
|
4207
4992
|
return envObject.setLastError(1);
|
|
4208
4993
|
if (!result)
|
|
4209
4994
|
return envObject.setLastError(1);
|
|
4995
|
+
byte_offset >>>= 0;
|
|
4996
|
+
byte_length >>>= 0;
|
|
4210
4997
|
byte_offset = byte_offset >>> 0;
|
|
4211
4998
|
byte_length = byte_length >>> 0;
|
|
4212
4999
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
@@ -4235,6 +5022,7 @@ function createNapiModule(options) {
|
|
|
4235
5022
|
});
|
|
4236
5023
|
}
|
|
4237
5024
|
}
|
|
5025
|
+
result >>>= 0;
|
|
4238
5026
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4239
5027
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4240
5028
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4246,7 +5034,6 @@ function createNapiModule(options) {
|
|
|
4246
5034
|
}
|
|
4247
5035
|
}
|
|
4248
5036
|
function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
|
|
4249
|
-
var value;
|
|
4250
5037
|
if (!env)
|
|
4251
5038
|
return 1;
|
|
4252
5039
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4261,34 +5048,41 @@ function createNapiModule(options) {
|
|
|
4261
5048
|
return envObject.setLastError(1);
|
|
4262
5049
|
if (!result)
|
|
4263
5050
|
return envObject.setLastError(1);
|
|
5051
|
+
byte_length >>>= 0;
|
|
5052
|
+
byte_offset >>>= 0;
|
|
4264
5053
|
byte_length = byte_length >>> 0;
|
|
4265
5054
|
byte_offset = byte_offset >>> 0;
|
|
4266
|
-
var
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
runtimeAllocated: 0
|
|
4285
|
-
});
|
|
5055
|
+
var value = emnapiCtx.handleStore.get(arraybuffer).value;
|
|
5056
|
+
var createDataview = function (buffer) {
|
|
5057
|
+
if ((byte_length + byte_offset) > buffer.byteLength) {
|
|
5058
|
+
var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
|
|
5059
|
+
err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
|
|
5060
|
+
throw err;
|
|
5061
|
+
}
|
|
5062
|
+
var dataview = new DataView(buffer, byte_offset, byte_length);
|
|
5063
|
+
if (buffer === wasmMemory.buffer) {
|
|
5064
|
+
if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
|
|
5065
|
+
emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
|
|
5066
|
+
Ctor: DataView,
|
|
5067
|
+
address: byte_offset,
|
|
5068
|
+
length: byte_length,
|
|
5069
|
+
ownership: 1,
|
|
5070
|
+
runtimeAllocated: 0
|
|
5071
|
+
});
|
|
5072
|
+
}
|
|
4286
5073
|
}
|
|
5074
|
+
result >>>= 0;
|
|
5075
|
+
var v = emnapiCtx.addToCurrentScope(dataview).id;
|
|
5076
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5077
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
5078
|
+
return envObject.getReturnStatus();
|
|
5079
|
+
};
|
|
5080
|
+
if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
|
|
5081
|
+
return createDataview(value);
|
|
5082
|
+
}
|
|
5083
|
+
else {
|
|
5084
|
+
return envObject.setLastError(1);
|
|
4287
5085
|
}
|
|
4288
|
-
value = emnapiCtx.addToCurrentScope(dataview).id;
|
|
4289
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4290
|
-
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4291
|
-
return envObject.getReturnStatus();
|
|
4292
5086
|
}
|
|
4293
5087
|
catch (err) {
|
|
4294
5088
|
envObject.tryCatch.setError(err);
|
|
@@ -4302,7 +5096,10 @@ function createNapiModule(options) {
|
|
|
4302
5096
|
envObject.checkGCAccess();
|
|
4303
5097
|
if (!result)
|
|
4304
5098
|
return envObject.setLastError(1);
|
|
4305
|
-
|
|
5099
|
+
length >>>= 0;
|
|
5100
|
+
utf8description >>>= 0;
|
|
5101
|
+
result >>>= 0;
|
|
5102
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
4306
5103
|
var sizelength = length >>> 0;
|
|
4307
5104
|
if (length !== 0) {
|
|
4308
5105
|
if (!utf8description)
|
|
@@ -4333,6 +5130,9 @@ function createNapiModule(options) {
|
|
|
4333
5130
|
napi_create_symbol: napi_create_symbol,
|
|
4334
5131
|
napi_create_typedarray: napi_create_typedarray,
|
|
4335
5132
|
node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
|
|
5133
|
+
node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
|
|
5134
|
+
node_api_create_object_with_properties: node_api_create_object_with_properties,
|
|
5135
|
+
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
4336
5136
|
node_api_symbol_for: node_api_symbol_for
|
|
4337
5137
|
});
|
|
4338
5138
|
function napi_get_boolean(env, value, result) {
|
|
@@ -4342,6 +5142,7 @@ function createNapiModule(options) {
|
|
|
4342
5142
|
envObject.checkGCAccess();
|
|
4343
5143
|
if (!result)
|
|
4344
5144
|
return envObject.setLastError(1);
|
|
5145
|
+
result >>>= 0;
|
|
4345
5146
|
var v = value === 0 ? 3 : 4;
|
|
4346
5147
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4347
5148
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -4354,6 +5155,7 @@ function createNapiModule(options) {
|
|
|
4354
5155
|
envObject.checkGCAccess();
|
|
4355
5156
|
if (!result)
|
|
4356
5157
|
return envObject.setLastError(1);
|
|
5158
|
+
result >>>= 0;
|
|
4357
5159
|
var value = 5;
|
|
4358
5160
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4359
5161
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4366,6 +5168,7 @@ function createNapiModule(options) {
|
|
|
4366
5168
|
envObject.checkGCAccess();
|
|
4367
5169
|
if (!result)
|
|
4368
5170
|
return envObject.setLastError(1);
|
|
5171
|
+
result >>>= 0;
|
|
4369
5172
|
var value = 2;
|
|
4370
5173
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4371
5174
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4378,6 +5181,7 @@ function createNapiModule(options) {
|
|
|
4378
5181
|
envObject.checkGCAccess();
|
|
4379
5182
|
if (!result)
|
|
4380
5183
|
return envObject.setLastError(1);
|
|
5184
|
+
result >>>= 0;
|
|
4381
5185
|
var value = 1;
|
|
4382
5186
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4383
5187
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4394,6 +5198,9 @@ function createNapiModule(options) {
|
|
|
4394
5198
|
if (!env)
|
|
4395
5199
|
return 1;
|
|
4396
5200
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5201
|
+
data >>>= 0;
|
|
5202
|
+
finalize_cb >>>= 0;
|
|
5203
|
+
finalize_hint >>>= 0;
|
|
4397
5204
|
envObject.setInstanceData(data, finalize_cb, finalize_hint);
|
|
4398
5205
|
return envObject.clearLastError();
|
|
4399
5206
|
}
|
|
@@ -4403,6 +5210,7 @@ function createNapiModule(options) {
|
|
|
4403
5210
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4404
5211
|
if (!data)
|
|
4405
5212
|
return envObject.setLastError(1);
|
|
5213
|
+
data >>>= 0;
|
|
4406
5214
|
var value = envObject.getInstanceData();
|
|
4407
5215
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4408
5216
|
HEAP_DATA_VIEW.setUint32(data, value, true);
|
|
@@ -4414,11 +5222,15 @@ function createNapiModule(options) {
|
|
|
4414
5222
|
napi_set_instance_data: napi_set_instance_data
|
|
4415
5223
|
});
|
|
4416
5224
|
function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
|
|
5225
|
+
error_code >>>= 0;
|
|
5226
|
+
engine_error_code >>>= 0;
|
|
5227
|
+
engine_reserved >>>= 0;
|
|
4417
5228
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4418
5229
|
var lastError = envObject.lastError;
|
|
4419
5230
|
var errorCode = lastError.errorCode;
|
|
4420
5231
|
var engineErrorCode = lastError.engineErrorCode >>> 0;
|
|
4421
5232
|
var engineReserved = lastError.engineReserved;
|
|
5233
|
+
engineReserved >>>= 0;
|
|
4422
5234
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4423
5235
|
HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
|
|
4424
5236
|
HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
|
|
@@ -4458,6 +5270,8 @@ function createNapiModule(options) {
|
|
|
4458
5270
|
try {
|
|
4459
5271
|
if (!msg)
|
|
4460
5272
|
return envObject.setLastError(1);
|
|
5273
|
+
code >>>= 0;
|
|
5274
|
+
msg >>>= 0;
|
|
4461
5275
|
var error = new Error(emnapiString.UTF8ToString(msg, -1));
|
|
4462
5276
|
if (code)
|
|
4463
5277
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4482,6 +5296,8 @@ function createNapiModule(options) {
|
|
|
4482
5296
|
try {
|
|
4483
5297
|
if (!msg)
|
|
4484
5298
|
return envObject.setLastError(1);
|
|
5299
|
+
code >>>= 0;
|
|
5300
|
+
msg >>>= 0;
|
|
4485
5301
|
var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
|
|
4486
5302
|
if (code)
|
|
4487
5303
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4506,6 +5322,8 @@ function createNapiModule(options) {
|
|
|
4506
5322
|
try {
|
|
4507
5323
|
if (!msg)
|
|
4508
5324
|
return envObject.setLastError(1);
|
|
5325
|
+
code >>>= 0;
|
|
5326
|
+
msg >>>= 0;
|
|
4509
5327
|
var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
|
|
4510
5328
|
if (code)
|
|
4511
5329
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4530,6 +5348,8 @@ function createNapiModule(options) {
|
|
|
4530
5348
|
try {
|
|
4531
5349
|
if (!msg)
|
|
4532
5350
|
return envObject.setLastError(1);
|
|
5351
|
+
code >>>= 0;
|
|
5352
|
+
msg >>>= 0;
|
|
4533
5353
|
var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
|
|
4534
5354
|
if (code)
|
|
4535
5355
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4549,6 +5369,7 @@ function createNapiModule(options) {
|
|
|
4549
5369
|
if (!result)
|
|
4550
5370
|
return envObject.setLastError(1);
|
|
4551
5371
|
var r = envObject.tryCatch.hasCaught();
|
|
5372
|
+
result >>>= 0;
|
|
4552
5373
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4553
5374
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
4554
5375
|
return envObject.clearLastError();
|
|
@@ -4574,6 +5395,7 @@ function createNapiModule(options) {
|
|
|
4574
5395
|
}
|
|
4575
5396
|
error.code = codeValue;
|
|
4576
5397
|
}
|
|
5398
|
+
result >>>= 0;
|
|
4577
5399
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4578
5400
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4579
5401
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4600,6 +5422,7 @@ function createNapiModule(options) {
|
|
|
4600
5422
|
}
|
|
4601
5423
|
error.code = codeValue;
|
|
4602
5424
|
}
|
|
5425
|
+
result >>>= 0;
|
|
4603
5426
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4604
5427
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4605
5428
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4626,6 +5449,7 @@ function createNapiModule(options) {
|
|
|
4626
5449
|
}
|
|
4627
5450
|
error.code = codeValue;
|
|
4628
5451
|
}
|
|
5452
|
+
result >>>= 0;
|
|
4629
5453
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4630
5454
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4631
5455
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4652,6 +5476,7 @@ function createNapiModule(options) {
|
|
|
4652
5476
|
}
|
|
4653
5477
|
error.code = codeValue;
|
|
4654
5478
|
}
|
|
5479
|
+
result >>>= 0;
|
|
4655
5480
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4656
5481
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4657
5482
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4664,6 +5489,7 @@ function createNapiModule(options) {
|
|
|
4664
5489
|
envObject.checkGCAccess();
|
|
4665
5490
|
if (!result)
|
|
4666
5491
|
return envObject.setLastError(1);
|
|
5492
|
+
result >>>= 0;
|
|
4667
5493
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4668
5494
|
if (!envObject.tryCatch.hasCaught()) {
|
|
4669
5495
|
HEAP_DATA_VIEW.setUint32(result, 1, true);
|
|
@@ -4678,6 +5504,10 @@ function createNapiModule(options) {
|
|
|
4678
5504
|
return envObject.clearLastError();
|
|
4679
5505
|
}
|
|
4680
5506
|
function napi_fatal_error(location, location_len, message, message_len) {
|
|
5507
|
+
location >>>= 0;
|
|
5508
|
+
location_len >>>= 0;
|
|
5509
|
+
message >>>= 0;
|
|
5510
|
+
message_len >>>= 0;
|
|
4681
5511
|
var locationStr = emnapiString.UTF8ToString(location, location_len);
|
|
4682
5512
|
var messageStr = emnapiString.UTF8ToString(message, message_len);
|
|
4683
5513
|
if (emnapiNodeBinding) {
|
|
@@ -4731,8 +5561,21 @@ function createNapiModule(options) {
|
|
|
4731
5561
|
node_api_create_syntax_error: node_api_create_syntax_error,
|
|
4732
5562
|
node_api_throw_syntax_error: node_api_throw_syntax_error
|
|
4733
5563
|
});
|
|
5564
|
+
function _emnapi_create_function(env, utf8name, length, cb, data, result) {
|
|
5565
|
+
length >>>= 0;
|
|
5566
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5567
|
+
var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
|
|
5568
|
+
if (fresult.status !== 0)
|
|
5569
|
+
return envObject.setLastError(fresult.status);
|
|
5570
|
+
var f = fresult.f;
|
|
5571
|
+
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
5572
|
+
result >>>= 0;
|
|
5573
|
+
var value = valueHandle.id;
|
|
5574
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5575
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5576
|
+
return envObject.getReturnStatus();
|
|
5577
|
+
}
|
|
4734
5578
|
function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
4735
|
-
var value;
|
|
4736
5579
|
if (!env)
|
|
4737
5580
|
return 1;
|
|
4738
5581
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4747,15 +5590,7 @@ function createNapiModule(options) {
|
|
|
4747
5590
|
return envObject.setLastError(1);
|
|
4748
5591
|
if (!cb)
|
|
4749
5592
|
return envObject.setLastError(1);
|
|
4750
|
-
|
|
4751
|
-
if (fresult.status !== 0)
|
|
4752
|
-
return envObject.setLastError(fresult.status);
|
|
4753
|
-
var f = fresult.f;
|
|
4754
|
-
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
4755
|
-
value = valueHandle.id;
|
|
4756
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4757
|
-
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4758
|
-
return envObject.getReturnStatus();
|
|
5593
|
+
return _emnapi_create_function(env, utf8name, length, cb, data, result);
|
|
4759
5594
|
}
|
|
4760
5595
|
catch (err) {
|
|
4761
5596
|
envObject.tryCatch.setError(err);
|
|
@@ -4769,11 +5604,14 @@ function createNapiModule(options) {
|
|
|
4769
5604
|
if (!cbinfo)
|
|
4770
5605
|
return envObject.setLastError(1);
|
|
4771
5606
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
5607
|
+
argc >>>= 0;
|
|
5608
|
+
argv >>>= 0;
|
|
4772
5609
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4773
5610
|
if (argv) {
|
|
4774
5611
|
if (!argc)
|
|
4775
5612
|
return envObject.setLastError(1);
|
|
4776
5613
|
var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
|
|
5614
|
+
argcValue >>>= 0;
|
|
4777
5615
|
var len = cbinfoValue.args.length;
|
|
4778
5616
|
var arrlen = argcValue < len ? argcValue : len;
|
|
4779
5617
|
var i = 0;
|
|
@@ -4791,10 +5629,12 @@ function createNapiModule(options) {
|
|
|
4791
5629
|
HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
|
|
4792
5630
|
}
|
|
4793
5631
|
if (this_arg) {
|
|
5632
|
+
this_arg >>>= 0;
|
|
4794
5633
|
var v = envObject.ensureHandleId(cbinfoValue.thiz);
|
|
4795
5634
|
HEAP_DATA_VIEW.setUint32(this_arg, v, true);
|
|
4796
5635
|
}
|
|
4797
5636
|
if (data) {
|
|
5637
|
+
data >>>= 0;
|
|
4798
5638
|
HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
|
|
4799
5639
|
}
|
|
4800
5640
|
return envObject.clearLastError();
|
|
@@ -4814,6 +5654,9 @@ function createNapiModule(options) {
|
|
|
4814
5654
|
try {
|
|
4815
5655
|
if (!recv)
|
|
4816
5656
|
return envObject.setLastError(1);
|
|
5657
|
+
argc >>>= 0;
|
|
5658
|
+
argv >>>= 0;
|
|
5659
|
+
result >>>= 0;
|
|
4817
5660
|
argc = argc >>> 0;
|
|
4818
5661
|
if (argc > 0) {
|
|
4819
5662
|
if (!argv)
|
|
@@ -4858,6 +5701,9 @@ function createNapiModule(options) {
|
|
|
4858
5701
|
try {
|
|
4859
5702
|
if (!constructor)
|
|
4860
5703
|
return envObject.setLastError(1);
|
|
5704
|
+
argc >>>= 0;
|
|
5705
|
+
argv >>>= 0;
|
|
5706
|
+
result >>>= 0;
|
|
4861
5707
|
argc = argc >>> 0;
|
|
4862
5708
|
if (argc > 0) {
|
|
4863
5709
|
if (!argv)
|
|
@@ -4908,6 +5754,7 @@ function createNapiModule(options) {
|
|
|
4908
5754
|
return envObject.setLastError(1);
|
|
4909
5755
|
if (!result)
|
|
4910
5756
|
return envObject.setLastError(1);
|
|
5757
|
+
result >>>= 0;
|
|
4911
5758
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
4912
5759
|
var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
|
|
4913
5760
|
var value = thiz == null || thiz.constructor == null
|
|
@@ -4921,6 +5768,7 @@ function createNapiModule(options) {
|
|
|
4921
5768
|
}
|
|
4922
5769
|
var functionMod = Object.freeze({
|
|
4923
5770
|
__proto__: null,
|
|
5771
|
+
_emnapi_create_function: _emnapi_create_function,
|
|
4924
5772
|
napi_call_function: napi_call_function,
|
|
4925
5773
|
napi_create_function: napi_create_function,
|
|
4926
5774
|
napi_get_cb_info: napi_get_cb_info,
|
|
@@ -4935,6 +5783,7 @@ function createNapiModule(options) {
|
|
|
4935
5783
|
if (!result)
|
|
4936
5784
|
return envObject.setLastError(1);
|
|
4937
5785
|
var scope = emnapiCtx.openScope(envObject);
|
|
5786
|
+
result >>>= 0;
|
|
4938
5787
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4939
5788
|
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4940
5789
|
return envObject.clearLastError();
|
|
@@ -4960,6 +5809,7 @@ function createNapiModule(options) {
|
|
|
4960
5809
|
if (!result)
|
|
4961
5810
|
return envObject.setLastError(1);
|
|
4962
5811
|
var scope = emnapiCtx.openScope(envObject);
|
|
5812
|
+
result >>>= 0;
|
|
4963
5813
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4964
5814
|
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4965
5815
|
return envObject.clearLastError();
|
|
@@ -4990,6 +5840,8 @@ function createNapiModule(options) {
|
|
|
4990
5840
|
return envObject.setLastError(1);
|
|
4991
5841
|
var scopeObject = emnapiCtx.scopeStore.get(scope);
|
|
4992
5842
|
if (!scopeObject.escapeCalled()) {
|
|
5843
|
+
escapee >>>= 0;
|
|
5844
|
+
result >>>= 0;
|
|
4993
5845
|
var newHandle = scopeObject.escape(escapee);
|
|
4994
5846
|
var value = newHandle ? newHandle.id : 0;
|
|
4995
5847
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -5014,6 +5866,7 @@ function createNapiModule(options) {
|
|
|
5014
5866
|
}
|
|
5015
5867
|
}
|
|
5016
5868
|
var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
|
|
5869
|
+
result >>>= 0;
|
|
5017
5870
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5018
5871
|
HEAP_DATA_VIEW.setUint32(result, ref.id, true);
|
|
5019
5872
|
return envObject.clearLastError();
|
|
@@ -5036,6 +5889,7 @@ function createNapiModule(options) {
|
|
|
5036
5889
|
return envObject.setLastError(1);
|
|
5037
5890
|
var count = emnapiCtx.refStore.get(ref).ref();
|
|
5038
5891
|
if (result) {
|
|
5892
|
+
result >>>= 0;
|
|
5039
5893
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5040
5894
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5041
5895
|
}
|
|
@@ -5055,6 +5909,7 @@ function createNapiModule(options) {
|
|
|
5055
5909
|
}
|
|
5056
5910
|
var count = reference.unref();
|
|
5057
5911
|
if (result) {
|
|
5912
|
+
result >>>= 0;
|
|
5058
5913
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5059
5914
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5060
5915
|
}
|
|
@@ -5071,6 +5926,7 @@ function createNapiModule(options) {
|
|
|
5071
5926
|
return envObject.setLastError(1);
|
|
5072
5927
|
var reference = emnapiCtx.refStore.get(ref);
|
|
5073
5928
|
var handleId = reference.get(envObject);
|
|
5929
|
+
result >>>= 0;
|
|
5074
5930
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5075
5931
|
HEAP_DATA_VIEW.setUint32(result, handleId, true);
|
|
5076
5932
|
return envObject.clearLastError();
|
|
@@ -5081,6 +5937,8 @@ function createNapiModule(options) {
|
|
|
5081
5937
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5082
5938
|
if (!fun)
|
|
5083
5939
|
return envObject.setLastError(1);
|
|
5940
|
+
fun >>>= 0;
|
|
5941
|
+
arg >>>= 0;
|
|
5084
5942
|
emnapiCtx.addCleanupHook(envObject, fun, arg);
|
|
5085
5943
|
return 0;
|
|
5086
5944
|
}
|
|
@@ -5090,6 +5948,8 @@ function createNapiModule(options) {
|
|
|
5090
5948
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5091
5949
|
if (!fun)
|
|
5092
5950
|
return envObject.setLastError(1);
|
|
5951
|
+
fun >>>= 0;
|
|
5952
|
+
arg >>>= 0;
|
|
5093
5953
|
emnapiCtx.removeCleanupHook(envObject, fun, arg);
|
|
5094
5954
|
return 0;
|
|
5095
5955
|
}
|
|
@@ -5150,8 +6010,10 @@ function createNapiModule(options) {
|
|
|
5150
6010
|
var p = new Promise(function (resolve, reject) {
|
|
5151
6011
|
var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
|
|
5152
6012
|
deferredObjectId = deferredObject.id;
|
|
6013
|
+
deferred >>>= 0;
|
|
5153
6014
|
HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
|
|
5154
6015
|
});
|
|
6016
|
+
promise >>>= 0;
|
|
5155
6017
|
value = emnapiCtx.addToCurrentScope(p).id;
|
|
5156
6018
|
HEAP_DATA_VIEW.setUint32(promise, value, true);
|
|
5157
6019
|
return envObject.getReturnStatus();
|
|
@@ -5219,6 +6081,7 @@ function createNapiModule(options) {
|
|
|
5219
6081
|
if (!is_promise)
|
|
5220
6082
|
return envObject.setLastError(1);
|
|
5221
6083
|
var h = emnapiCtx.handleStore.get(value);
|
|
6084
|
+
is_promise >>>= 0;
|
|
5222
6085
|
var r = h.isPromise() ? 1 : 0;
|
|
5223
6086
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5224
6087
|
HEAP_DATA_VIEW.setInt8(is_promise, r, true);
|
|
@@ -5362,6 +6225,7 @@ function createNapiModule(options) {
|
|
|
5362
6225
|
}
|
|
5363
6226
|
}
|
|
5364
6227
|
}
|
|
6228
|
+
result >>>= 0;
|
|
5365
6229
|
value = emnapiCtx.addToCurrentScope(ret).id;
|
|
5366
6230
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5367
6231
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5433,6 +6297,7 @@ function createNapiModule(options) {
|
|
|
5433
6297
|
catch (_) {
|
|
5434
6298
|
return envObject.setLastError(2);
|
|
5435
6299
|
}
|
|
6300
|
+
result >>>= 0;
|
|
5436
6301
|
r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
|
|
5437
6302
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5438
6303
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5472,6 +6337,7 @@ function createNapiModule(options) {
|
|
|
5472
6337
|
catch (_) {
|
|
5473
6338
|
return envObject.setLastError(2);
|
|
5474
6339
|
}
|
|
6340
|
+
result >>>= 0;
|
|
5475
6341
|
value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
|
|
5476
6342
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5477
6343
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5515,6 +6381,7 @@ function createNapiModule(options) {
|
|
|
5515
6381
|
}
|
|
5516
6382
|
}
|
|
5517
6383
|
if (result) {
|
|
6384
|
+
result >>>= 0;
|
|
5518
6385
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5519
6386
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5520
6387
|
}
|
|
@@ -5559,6 +6426,7 @@ function createNapiModule(options) {
|
|
|
5559
6426
|
return envObject.setLastError(4);
|
|
5560
6427
|
}
|
|
5561
6428
|
r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
|
|
6429
|
+
result >>>= 0;
|
|
5562
6430
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5563
6431
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5564
6432
|
return envObject.getReturnStatus();
|
|
@@ -5590,6 +6458,7 @@ function createNapiModule(options) {
|
|
|
5590
6458
|
if (!cname) {
|
|
5591
6459
|
return envObject.setLastError(1);
|
|
5592
6460
|
}
|
|
6461
|
+
cname >>>= 0;
|
|
5593
6462
|
emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
|
|
5594
6463
|
return envObject.getReturnStatus();
|
|
5595
6464
|
}
|
|
@@ -5628,6 +6497,8 @@ function createNapiModule(options) {
|
|
|
5628
6497
|
catch (_) {
|
|
5629
6498
|
return envObject.setLastError(2);
|
|
5630
6499
|
}
|
|
6500
|
+
utf8name >>>= 0;
|
|
6501
|
+
result >>>= 0;
|
|
5631
6502
|
r = emnapiString.UTF8ToString(utf8name, -1) in v;
|
|
5632
6503
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5633
6504
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
@@ -5668,6 +6539,8 @@ function createNapiModule(options) {
|
|
|
5668
6539
|
catch (_) {
|
|
5669
6540
|
return envObject.setLastError(2);
|
|
5670
6541
|
}
|
|
6542
|
+
utf8name >>>= 0;
|
|
6543
|
+
result >>>= 0;
|
|
5671
6544
|
value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
|
|
5672
6545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5673
6546
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5732,6 +6605,7 @@ function createNapiModule(options) {
|
|
|
5732
6605
|
catch (_) {
|
|
5733
6606
|
return envObject.setLastError(2);
|
|
5734
6607
|
}
|
|
6608
|
+
result >>>= 0;
|
|
5735
6609
|
r = ((index >>> 0) in v) ? 1 : 0;
|
|
5736
6610
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5737
6611
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5769,6 +6643,7 @@ function createNapiModule(options) {
|
|
|
5769
6643
|
catch (_) {
|
|
5770
6644
|
return envObject.setLastError(2);
|
|
5771
6645
|
}
|
|
6646
|
+
result >>>= 0;
|
|
5772
6647
|
value = envObject.ensureHandleId(v[index >>> 0]);
|
|
5773
6648
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5774
6649
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5809,6 +6684,7 @@ function createNapiModule(options) {
|
|
|
5809
6684
|
}
|
|
5810
6685
|
}
|
|
5811
6686
|
if (result) {
|
|
6687
|
+
result >>>= 0;
|
|
5812
6688
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5813
6689
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5814
6690
|
}
|
|
@@ -5831,6 +6707,8 @@ function createNapiModule(options) {
|
|
|
5831
6707
|
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
5832
6708
|
envObject.clearLastError();
|
|
5833
6709
|
try {
|
|
6710
|
+
properties >>>= 0;
|
|
6711
|
+
property_count >>>= 0;
|
|
5834
6712
|
property_count = property_count >>> 0;
|
|
5835
6713
|
if (property_count > 0) {
|
|
5836
6714
|
if (!properties)
|
|
@@ -5854,6 +6732,7 @@ function createNapiModule(options) {
|
|
|
5854
6732
|
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
5855
6733
|
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
5856
6734
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
6735
|
+
attributes >>>= 0;
|
|
5857
6736
|
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
5858
6737
|
if (utf8Name) {
|
|
5859
6738
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
@@ -5971,6 +6850,7 @@ function createNapiModule(options) {
|
|
|
5971
6850
|
}
|
|
5972
6851
|
var g = emnapiCtx.handleStore.get(5).value;
|
|
5973
6852
|
var ret = g.eval(v8Script.value);
|
|
6853
|
+
result >>>= 0;
|
|
5974
6854
|
value = envObject.ensureHandleId(ret);
|
|
5975
6855
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5976
6856
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5996,6 +6876,7 @@ function createNapiModule(options) {
|
|
|
5996
6876
|
if (!result)
|
|
5997
6877
|
return envObject.setLastError(1);
|
|
5998
6878
|
var v = emnapiCtx.handleStore.get(value);
|
|
6879
|
+
result >>>= 0;
|
|
5999
6880
|
var r;
|
|
6000
6881
|
if (v.isNumber()) {
|
|
6001
6882
|
r = 3;
|
|
@@ -6051,6 +6932,7 @@ function createNapiModule(options) {
|
|
|
6051
6932
|
if (!result)
|
|
6052
6933
|
return envObject.setLastError(1);
|
|
6053
6934
|
var handle = emnapiCtx.handleStore.get(value);
|
|
6935
|
+
result >>>= 0;
|
|
6054
6936
|
v = handle.value ? 4 : 3;
|
|
6055
6937
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6056
6938
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6081,6 +6963,7 @@ function createNapiModule(options) {
|
|
|
6081
6963
|
if (handle.isBigInt()) {
|
|
6082
6964
|
throw new TypeError('Cannot convert a BigInt value to a number');
|
|
6083
6965
|
}
|
|
6966
|
+
result >>>= 0;
|
|
6084
6967
|
v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
|
|
6085
6968
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6086
6969
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6111,6 +6994,7 @@ function createNapiModule(options) {
|
|
|
6111
6994
|
if (handle.value == null) {
|
|
6112
6995
|
throw new TypeError('Cannot convert undefined or null to object');
|
|
6113
6996
|
}
|
|
6997
|
+
result >>>= 0;
|
|
6114
6998
|
v = envObject.ensureHandleId(Object(handle.value));
|
|
6115
6999
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6116
7000
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6141,6 +7025,7 @@ function createNapiModule(options) {
|
|
|
6141
7025
|
if (handle.isSymbol()) {
|
|
6142
7026
|
throw new TypeError('Cannot convert a Symbol value to a string');
|
|
6143
7027
|
}
|
|
7028
|
+
result >>>= 0;
|
|
6144
7029
|
v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
|
|
6145
7030
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6146
7031
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6169,6 +7054,7 @@ function createNapiModule(options) {
|
|
|
6169
7054
|
return envObject.setLastError(1);
|
|
6170
7055
|
if (!constructor)
|
|
6171
7056
|
return envObject.setLastError(1);
|
|
7057
|
+
result >>>= 0;
|
|
6172
7058
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6173
7059
|
HEAP_DATA_VIEW.setInt8(result, 0, true);
|
|
6174
7060
|
var ctor = emnapiCtx.handleStore.get(constructor);
|
|
@@ -6196,6 +7082,7 @@ function createNapiModule(options) {
|
|
|
6196
7082
|
if (!result)
|
|
6197
7083
|
return envObject.setLastError(1);
|
|
6198
7084
|
var h = emnapiCtx.handleStore.get(value);
|
|
7085
|
+
result >>>= 0;
|
|
6199
7086
|
var r = h.isArray() ? 1 : 0;
|
|
6200
7087
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6201
7088
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6211,11 +7098,31 @@ function createNapiModule(options) {
|
|
|
6211
7098
|
if (!result)
|
|
6212
7099
|
return envObject.setLastError(1);
|
|
6213
7100
|
var h = emnapiCtx.handleStore.get(value);
|
|
7101
|
+
result >>>= 0;
|
|
6214
7102
|
var r = h.isArrayBuffer() ? 1 : 0;
|
|
6215
7103
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6216
7104
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
6217
7105
|
return envObject.clearLastError();
|
|
6218
7106
|
}
|
|
7107
|
+
function node_api_is_sharedarraybuffer(env, value, result) {
|
|
7108
|
+
if (!env)
|
|
7109
|
+
return 1;
|
|
7110
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
7111
|
+
envObject.checkGCAccess();
|
|
7112
|
+
if (!value)
|
|
7113
|
+
return envObject.setLastError(1);
|
|
7114
|
+
if (!result)
|
|
7115
|
+
return envObject.setLastError(1);
|
|
7116
|
+
var h = emnapiCtx.handleStore.get(value);
|
|
7117
|
+
result >>>= 0;
|
|
7118
|
+
var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
|
|
7119
|
+
(Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
|
|
7120
|
+
? 1
|
|
7121
|
+
: 0;
|
|
7122
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7123
|
+
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
7124
|
+
return envObject.clearLastError();
|
|
7125
|
+
}
|
|
6219
7126
|
function napi_is_date(env, value, result) {
|
|
6220
7127
|
if (!env)
|
|
6221
7128
|
return 1;
|
|
@@ -6226,6 +7133,7 @@ function createNapiModule(options) {
|
|
|
6226
7133
|
if (!result)
|
|
6227
7134
|
return envObject.setLastError(1);
|
|
6228
7135
|
var h = emnapiCtx.handleStore.get(value);
|
|
7136
|
+
result >>>= 0;
|
|
6229
7137
|
var r = h.isDate() ? 1 : 0;
|
|
6230
7138
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6231
7139
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6241,6 +7149,7 @@ function createNapiModule(options) {
|
|
|
6241
7149
|
if (!result)
|
|
6242
7150
|
return envObject.setLastError(1);
|
|
6243
7151
|
var val = emnapiCtx.handleStore.get(value).value;
|
|
7152
|
+
result >>>= 0;
|
|
6244
7153
|
var r = (val instanceof Error) ? 1 : 0;
|
|
6245
7154
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6246
7155
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6256,6 +7165,7 @@ function createNapiModule(options) {
|
|
|
6256
7165
|
if (!result)
|
|
6257
7166
|
return envObject.setLastError(1);
|
|
6258
7167
|
var h = emnapiCtx.handleStore.get(value);
|
|
7168
|
+
result >>>= 0;
|
|
6259
7169
|
var r = h.isTypedArray() ? 1 : 0;
|
|
6260
7170
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6261
7171
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6271,6 +7181,7 @@ function createNapiModule(options) {
|
|
|
6271
7181
|
if (!result)
|
|
6272
7182
|
return envObject.setLastError(1);
|
|
6273
7183
|
var h = emnapiCtx.handleStore.get(value);
|
|
7184
|
+
result >>>= 0;
|
|
6274
7185
|
var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
|
|
6275
7186
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6276
7187
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6286,6 +7197,7 @@ function createNapiModule(options) {
|
|
|
6286
7197
|
if (!result)
|
|
6287
7198
|
return envObject.setLastError(1);
|
|
6288
7199
|
var h = emnapiCtx.handleStore.get(value);
|
|
7200
|
+
result >>>= 0;
|
|
6289
7201
|
var r = h.isDataView() ? 1 : 0;
|
|
6290
7202
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6291
7203
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6311,6 +7223,7 @@ function createNapiModule(options) {
|
|
|
6311
7223
|
return envObject.setLastError(1);
|
|
6312
7224
|
var lv = emnapiCtx.handleStore.get(lhs).value;
|
|
6313
7225
|
var rv = emnapiCtx.handleStore.get(rhs).value;
|
|
7226
|
+
result >>>= 0;
|
|
6314
7227
|
r = (lv === rv) ? 1 : 0;
|
|
6315
7228
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6316
7229
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6361,6 +7274,7 @@ function createNapiModule(options) {
|
|
|
6361
7274
|
if (!result)
|
|
6362
7275
|
return envObject.setLastError(1);
|
|
6363
7276
|
var h = emnapiCtx.handleStore.get(arraybuffer);
|
|
7277
|
+
result >>>= 0;
|
|
6364
7278
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6365
7279
|
if (h.isArrayBuffer() && h.value.byteLength === 0) {
|
|
6366
7280
|
try {
|
|
@@ -6396,7 +7310,8 @@ function createNapiModule(options) {
|
|
|
6396
7310
|
napi_is_error: napi_is_error,
|
|
6397
7311
|
napi_is_typedarray: napi_is_typedarray,
|
|
6398
7312
|
napi_strict_equals: napi_strict_equals,
|
|
6399
|
-
napi_typeof: napi_typeof
|
|
7313
|
+
napi_typeof: napi_typeof,
|
|
7314
|
+
node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer
|
|
6400
7315
|
});
|
|
6401
7316
|
function napi_get_version(env, result) {
|
|
6402
7317
|
if (!env)
|
|
@@ -6415,11 +7330,13 @@ function createNapiModule(options) {
|
|
|
6415
7330
|
});
|
|
6416
7331
|
emnapiAWST.init();
|
|
6417
7332
|
emnapiExternalMemory.init();
|
|
7333
|
+
emnapiExternalSAB.init();
|
|
6418
7334
|
emnapiString.init();
|
|
6419
7335
|
emnapiTSFN.init();
|
|
6420
7336
|
PThread.init();
|
|
6421
7337
|
napiModule.emnapi.syncMemory = $emnapiSyncMemory;
|
|
6422
7338
|
napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
|
|
7339
|
+
napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
|
|
6423
7340
|
function addImports(mod) {
|
|
6424
7341
|
var keys = Object.keys(mod);
|
|
6425
7342
|
for (var i = 0; i < keys.length; ++i) {
|
|
@@ -6674,12 +7591,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6674
7591
|
try {
|
|
6675
7592
|
if (type === 'async-worker-init') {
|
|
6676
7593
|
this.handleAfterLoad(e, () => {
|
|
6677
|
-
this.napiModule.initWorker(payload.arg);
|
|
6678
|
-
});
|
|
6679
|
-
}
|
|
6680
|
-
else if (type === 'async-work-execute') {
|
|
6681
|
-
this.handleAfterLoad(e, () => {
|
|
6682
|
-
this.napiModule.executeAsyncWork(payload.work);
|
|
7594
|
+
this.napiModule.initWorker(payload.arg, payload.func);
|
|
6683
7595
|
});
|
|
6684
7596
|
}
|
|
6685
7597
|
}
|
|
@@ -6690,7 +7602,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6690
7602
|
}
|
|
6691
7603
|
}
|
|
6692
7604
|
|
|
6693
|
-
const version = "1.
|
|
7605
|
+
const version = "1.11.1";
|
|
6694
7606
|
|
|
6695
7607
|
exports.MessageHandler = MessageHandler;
|
|
6696
7608
|
exports.createNapiModule = createNapiModule;
|