@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.babe825 → 0.0.0-insiders.bb6a109
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 +1243 -380
- 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 +1359 -390
- package/node_modules/@emnapi/core/dist/emnapi-core.js +1380 -423
- 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 +1243 -380
- 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 +9665 -5416
- package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +47 -12
- package/node_modules/@napi-rs/wasm-runtime/package.json +18 -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,
|
|
@@ -1988,6 +2369,7 @@ function createNapiModule(options) {
|
|
|
1988
2369
|
var pointer = _malloc(arrayBuffer.byteLength);
|
|
1989
2370
|
if (!pointer)
|
|
1990
2371
|
throw new Error('Out of memory');
|
|
2372
|
+
pointer >>>= 0;
|
|
1991
2373
|
new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
|
|
1992
2374
|
info.address = pointer;
|
|
1993
2375
|
info.ownership = emnapiExternalMemory.registry ? 0 : 1;
|
|
@@ -2009,8 +2391,7 @@ function createNapiModule(options) {
|
|
|
2009
2391
|
}
|
|
2010
2392
|
return view;
|
|
2011
2393
|
}
|
|
2012
|
-
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
|
|
2013
|
-
((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
|
|
2394
|
+
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
|
|
2014
2395
|
if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
|
|
2015
2396
|
var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
|
|
2016
2397
|
var Ctor = info.Ctor;
|
|
@@ -2040,6 +2421,55 @@ function createNapiModule(options) {
|
|
|
2040
2421
|
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
2041
2422
|
}
|
|
2042
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
|
+
};
|
|
2043
2473
|
var emnapiString = {
|
|
2044
2474
|
utf8Decoder: undefined,
|
|
2045
2475
|
utf16Decoder: undefined,
|
|
@@ -2143,7 +2573,7 @@ function createNapiModule(options) {
|
|
|
2143
2573
|
ptr >>>= 0;
|
|
2144
2574
|
var HEAPU8 = new Uint8Array(wasmMemory.buffer);
|
|
2145
2575
|
var end = ptr;
|
|
2146
|
-
if (length === -1) {
|
|
2576
|
+
if (length === -1 || length === 4294967295) {
|
|
2147
2577
|
for (; HEAPU8[end];)
|
|
2148
2578
|
++end;
|
|
2149
2579
|
}
|
|
@@ -2234,12 +2664,12 @@ function createNapiModule(options) {
|
|
|
2234
2664
|
return '';
|
|
2235
2665
|
ptr >>>= 0;
|
|
2236
2666
|
var end = ptr;
|
|
2237
|
-
if (length === -1) {
|
|
2238
|
-
var idx = end
|
|
2667
|
+
if (length === -1 || length === 4294967295) {
|
|
2668
|
+
var idx = end >>> 1;
|
|
2239
2669
|
var HEAPU16 = new Uint16Array(wasmMemory.buffer);
|
|
2240
2670
|
while (HEAPU16[idx])
|
|
2241
2671
|
++idx;
|
|
2242
|
-
end = idx << 1;
|
|
2672
|
+
end = (idx << 1) >>> 0;
|
|
2243
2673
|
}
|
|
2244
2674
|
else {
|
|
2245
2675
|
end = ptr + (length >>> 0) * 2;
|
|
@@ -2270,11 +2700,12 @@ function createNapiModule(options) {
|
|
|
2270
2700
|
return outPtr - startPtr;
|
|
2271
2701
|
},
|
|
2272
2702
|
newString: function (env, str, length, result, stringMaker) {
|
|
2703
|
+
length >>>= 0;
|
|
2273
2704
|
if (!env)
|
|
2274
2705
|
return 1;
|
|
2275
2706
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2276
2707
|
envObject.checkGCAccess();
|
|
2277
|
-
var autoLength = length === -1;
|
|
2708
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2278
2709
|
var sizelength = length >>> 0;
|
|
2279
2710
|
if (length !== 0) {
|
|
2280
2711
|
if (!str)
|
|
@@ -2284,18 +2715,21 @@ function createNapiModule(options) {
|
|
|
2284
2715
|
return envObject.setLastError(1);
|
|
2285
2716
|
if (!(autoLength || (sizelength <= 2147483647)))
|
|
2286
2717
|
return envObject.setLastError(1);
|
|
2718
|
+
str >>>= 0;
|
|
2287
2719
|
var strValue = stringMaker(str, autoLength, sizelength);
|
|
2720
|
+
result >>>= 0;
|
|
2288
2721
|
var value = emnapiCtx.addToCurrentScope(strValue).id;
|
|
2289
2722
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2290
2723
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
2291
2724
|
return envObject.clearLastError();
|
|
2292
2725
|
},
|
|
2293
2726
|
newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
|
|
2727
|
+
length >>>= 0;
|
|
2294
2728
|
if (!env)
|
|
2295
2729
|
return 1;
|
|
2296
2730
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2297
2731
|
envObject.checkGCAccess();
|
|
2298
|
-
var autoLength = length === -1;
|
|
2732
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2299
2733
|
var sizelength = length >>> 0;
|
|
2300
2734
|
if (length !== 0) {
|
|
2301
2735
|
if (!str)
|
|
@@ -2337,6 +2771,7 @@ function createNapiModule(options) {
|
|
|
2337
2771
|
if (!handle.isArray()) {
|
|
2338
2772
|
return envObject.setLastError(8);
|
|
2339
2773
|
}
|
|
2774
|
+
result >>>= 0;
|
|
2340
2775
|
var v = handle.value.length >>> 0;
|
|
2341
2776
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2342
2777
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2360,14 +2795,50 @@ function createNapiModule(options) {
|
|
|
2360
2795
|
}
|
|
2361
2796
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2362
2797
|
if (data) {
|
|
2798
|
+
data >>>= 0;
|
|
2363
2799
|
var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
|
|
2364
2800
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2365
2801
|
}
|
|
2366
2802
|
if (byte_length) {
|
|
2803
|
+
byte_length >>>= 0;
|
|
2367
2804
|
HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
|
|
2368
2805
|
}
|
|
2369
2806
|
return envObject.clearLastError();
|
|
2370
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
|
+
}
|
|
2371
2842
|
function napi_get_prototype(env, value, result) {
|
|
2372
2843
|
if (!env)
|
|
2373
2844
|
return 1;
|
|
@@ -2394,6 +2865,7 @@ function createNapiModule(options) {
|
|
|
2394
2865
|
catch (_) {
|
|
2395
2866
|
return envObject.setLastError(2);
|
|
2396
2867
|
}
|
|
2868
|
+
result >>>= 0;
|
|
2397
2869
|
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
2398
2870
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2399
2871
|
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
@@ -2418,6 +2890,7 @@ function createNapiModule(options) {
|
|
|
2418
2890
|
var v = handle.value;
|
|
2419
2891
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2420
2892
|
if (type) {
|
|
2893
|
+
type >>>= 0;
|
|
2421
2894
|
var t = void 0;
|
|
2422
2895
|
if (v instanceof Int8Array) {
|
|
2423
2896
|
t = 0;
|
|
@@ -2440,6 +2913,9 @@ function createNapiModule(options) {
|
|
|
2440
2913
|
else if (v instanceof Uint32Array) {
|
|
2441
2914
|
t = 6;
|
|
2442
2915
|
}
|
|
2916
|
+
else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
|
|
2917
|
+
t = 11;
|
|
2918
|
+
}
|
|
2443
2919
|
else if (v instanceof Float32Array) {
|
|
2444
2920
|
t = 7;
|
|
2445
2921
|
}
|
|
@@ -2457,22 +2933,25 @@ function createNapiModule(options) {
|
|
|
2457
2933
|
}
|
|
2458
2934
|
HEAP_DATA_VIEW.setInt32(type, t, true);
|
|
2459
2935
|
}
|
|
2936
|
+
v = emnapiExternalMemory.getOrUpdateMemoryView(v);
|
|
2460
2937
|
if (length) {
|
|
2938
|
+
length >>>= 0;
|
|
2461
2939
|
HEAP_DATA_VIEW.setUint32(length, v.length, true);
|
|
2462
2940
|
}
|
|
2463
|
-
var buffer;
|
|
2464
2941
|
if (data || arraybuffer) {
|
|
2465
|
-
buffer = v.buffer;
|
|
2466
2942
|
if (data) {
|
|
2943
|
+
data >>>= 0;
|
|
2467
2944
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2468
2945
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2469
2946
|
}
|
|
2470
2947
|
if (arraybuffer) {
|
|
2471
|
-
|
|
2948
|
+
arraybuffer >>>= 0;
|
|
2949
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2472
2950
|
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2473
2951
|
}
|
|
2474
2952
|
}
|
|
2475
2953
|
if (byte_offset) {
|
|
2954
|
+
byte_offset >>>= 0;
|
|
2476
2955
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2477
2956
|
}
|
|
2478
2957
|
return envObject.clearLastError();
|
|
@@ -2503,24 +2982,26 @@ function createNapiModule(options) {
|
|
|
2503
2982
|
if (!handle.isDataView()) {
|
|
2504
2983
|
return envObject.setLastError(1);
|
|
2505
2984
|
}
|
|
2506
|
-
var v = handle.value;
|
|
2985
|
+
var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
|
|
2507
2986
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2508
2987
|
if (byte_length) {
|
|
2988
|
+
byte_length >>>= 0;
|
|
2509
2989
|
HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
|
|
2510
2990
|
}
|
|
2511
|
-
var buffer;
|
|
2512
2991
|
if (data || arraybuffer) {
|
|
2513
|
-
buffer = v.buffer;
|
|
2514
2992
|
if (data) {
|
|
2993
|
+
data >>>= 0;
|
|
2515
2994
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2516
2995
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2517
2996
|
}
|
|
2518
2997
|
if (arraybuffer) {
|
|
2519
|
-
|
|
2998
|
+
arraybuffer >>>= 0;
|
|
2999
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2520
3000
|
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2521
3001
|
}
|
|
2522
3002
|
}
|
|
2523
3003
|
if (byte_offset) {
|
|
3004
|
+
byte_offset >>>= 0;
|
|
2524
3005
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2525
3006
|
}
|
|
2526
3007
|
return envObject.clearLastError();
|
|
@@ -2545,6 +3026,7 @@ function createNapiModule(options) {
|
|
|
2545
3026
|
if (!handle.isDate()) {
|
|
2546
3027
|
return envObject.setLastError(1);
|
|
2547
3028
|
}
|
|
3029
|
+
result >>>= 0;
|
|
2548
3030
|
v = handle.value.valueOf();
|
|
2549
3031
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2550
3032
|
HEAP_DATA_VIEW.setFloat64(result, v, true);
|
|
@@ -2568,6 +3050,7 @@ function createNapiModule(options) {
|
|
|
2568
3050
|
if (typeof handle.value !== 'boolean') {
|
|
2569
3051
|
return envObject.setLastError(7);
|
|
2570
3052
|
}
|
|
3053
|
+
result >>>= 0;
|
|
2571
3054
|
var r = handle.value ? 1 : 0;
|
|
2572
3055
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2573
3056
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -2586,6 +3069,7 @@ function createNapiModule(options) {
|
|
|
2586
3069
|
if (typeof handle.value !== 'number') {
|
|
2587
3070
|
return envObject.setLastError(6);
|
|
2588
3071
|
}
|
|
3072
|
+
result >>>= 0;
|
|
2589
3073
|
var r = handle.value;
|
|
2590
3074
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2591
3075
|
HEAP_DATA_VIEW.setFloat64(result, r, true);
|
|
@@ -2610,6 +3094,8 @@ function createNapiModule(options) {
|
|
|
2610
3094
|
if (typeof numberValue !== 'bigint') {
|
|
2611
3095
|
return envObject.setLastError(6);
|
|
2612
3096
|
}
|
|
3097
|
+
lossless >>>= 0;
|
|
3098
|
+
result >>>= 0;
|
|
2613
3099
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2614
3100
|
if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
|
|
2615
3101
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2646,6 +3132,8 @@ function createNapiModule(options) {
|
|
|
2646
3132
|
if (typeof numberValue !== 'bigint') {
|
|
2647
3133
|
return envObject.setLastError(6);
|
|
2648
3134
|
}
|
|
3135
|
+
lossless >>>= 0;
|
|
3136
|
+
result >>>= 0;
|
|
2649
3137
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2650
3138
|
if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
|
|
2651
3139
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2677,8 +3165,12 @@ function createNapiModule(options) {
|
|
|
2677
3165
|
return envObject.setLastError(17);
|
|
2678
3166
|
}
|
|
2679
3167
|
var isMinus = handle.value < BigInt(0);
|
|
3168
|
+
sign_bit >>>= 0;
|
|
3169
|
+
words >>>= 0;
|
|
3170
|
+
word_count >>>= 0;
|
|
2680
3171
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2681
3172
|
var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
|
|
3173
|
+
word_count_int >>>= 0;
|
|
2682
3174
|
var wordCount = 0;
|
|
2683
3175
|
var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
|
|
2684
3176
|
while (bigintValue !== BigInt(0)) {
|
|
@@ -2726,6 +3218,7 @@ function createNapiModule(options) {
|
|
|
2726
3218
|
if (!handle.isExternal()) {
|
|
2727
3219
|
return envObject.setLastError(1);
|
|
2728
3220
|
}
|
|
3221
|
+
result >>>= 0;
|
|
2729
3222
|
var p = handle.data();
|
|
2730
3223
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2731
3224
|
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
@@ -2744,6 +3237,7 @@ function createNapiModule(options) {
|
|
|
2744
3237
|
if (typeof handle.value !== 'number') {
|
|
2745
3238
|
return envObject.setLastError(6);
|
|
2746
3239
|
}
|
|
3240
|
+
result >>>= 0;
|
|
2747
3241
|
var v = new Int32Array([handle.value])[0];
|
|
2748
3242
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2749
3243
|
HEAP_DATA_VIEW.setInt32(result, v, true);
|
|
@@ -2763,6 +3257,7 @@ function createNapiModule(options) {
|
|
|
2763
3257
|
return envObject.setLastError(6);
|
|
2764
3258
|
}
|
|
2765
3259
|
var numberValue = handle.value;
|
|
3260
|
+
result >>>= 0;
|
|
2766
3261
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2767
3262
|
if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
|
|
2768
3263
|
HEAP_DATA_VIEW.setInt32(result, 0, true);
|
|
@@ -2788,6 +3283,9 @@ function createNapiModule(options) {
|
|
|
2788
3283
|
envObject.checkGCAccess();
|
|
2789
3284
|
if (!value)
|
|
2790
3285
|
return envObject.setLastError(1);
|
|
3286
|
+
result >>>= 0;
|
|
3287
|
+
buf >>>= 0;
|
|
3288
|
+
buf_size >>>= 0;
|
|
2791
3289
|
buf_size = buf_size >>> 0;
|
|
2792
3290
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2793
3291
|
if (typeof handle.value !== 'string') {
|
|
@@ -2824,6 +3322,9 @@ function createNapiModule(options) {
|
|
|
2824
3322
|
envObject.checkGCAccess();
|
|
2825
3323
|
if (!value)
|
|
2826
3324
|
return envObject.setLastError(1);
|
|
3325
|
+
result >>>= 0;
|
|
3326
|
+
buf >>>= 0;
|
|
3327
|
+
buf_size >>>= 0;
|
|
2827
3328
|
buf_size = buf_size >>> 0;
|
|
2828
3329
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2829
3330
|
if (typeof handle.value !== 'string') {
|
|
@@ -2854,6 +3355,9 @@ function createNapiModule(options) {
|
|
|
2854
3355
|
envObject.checkGCAccess();
|
|
2855
3356
|
if (!value)
|
|
2856
3357
|
return envObject.setLastError(1);
|
|
3358
|
+
result >>>= 0;
|
|
3359
|
+
buf >>>= 0;
|
|
3360
|
+
buf_size >>>= 0;
|
|
2857
3361
|
buf_size = buf_size >>> 0;
|
|
2858
3362
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2859
3363
|
if (typeof handle.value !== 'string') {
|
|
@@ -2889,6 +3393,7 @@ function createNapiModule(options) {
|
|
|
2889
3393
|
if (typeof handle.value !== 'number') {
|
|
2890
3394
|
return envObject.setLastError(6);
|
|
2891
3395
|
}
|
|
3396
|
+
result >>>= 0;
|
|
2892
3397
|
var v = new Uint32Array([handle.value])[0];
|
|
2893
3398
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2894
3399
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2914,7 +3419,8 @@ function createNapiModule(options) {
|
|
|
2914
3419
|
napi_get_value_string_latin1: napi_get_value_string_latin1,
|
|
2915
3420
|
napi_get_value_string_utf16: napi_get_value_string_utf16,
|
|
2916
3421
|
napi_get_value_string_utf8: napi_get_value_string_utf8,
|
|
2917
|
-
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
|
|
2918
3424
|
});
|
|
2919
3425
|
function napi_create_int32(env, value, result) {
|
|
2920
3426
|
if (!env)
|
|
@@ -2923,6 +3429,7 @@ function createNapiModule(options) {
|
|
|
2923
3429
|
envObject.checkGCAccess();
|
|
2924
3430
|
if (!result)
|
|
2925
3431
|
return envObject.setLastError(1);
|
|
3432
|
+
result >>>= 0;
|
|
2926
3433
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2927
3434
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2928
3435
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2935,6 +3442,7 @@ function createNapiModule(options) {
|
|
|
2935
3442
|
envObject.checkGCAccess();
|
|
2936
3443
|
if (!result)
|
|
2937
3444
|
return envObject.setLastError(1);
|
|
3445
|
+
result >>>= 0;
|
|
2938
3446
|
var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
|
|
2939
3447
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2940
3448
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2950,6 +3458,7 @@ function createNapiModule(options) {
|
|
|
2950
3458
|
return envObject.setLastError(1);
|
|
2951
3459
|
value = Number(low);
|
|
2952
3460
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3461
|
+
high >>>= 0;
|
|
2953
3462
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2954
3463
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
2955
3464
|
return envObject.clearLastError();
|
|
@@ -2961,6 +3470,7 @@ function createNapiModule(options) {
|
|
|
2961
3470
|
envObject.checkGCAccess();
|
|
2962
3471
|
if (!result)
|
|
2963
3472
|
return envObject.setLastError(1);
|
|
3473
|
+
result >>>= 0;
|
|
2964
3474
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2965
3475
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2966
3476
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -3031,6 +3541,7 @@ function createNapiModule(options) {
|
|
|
3031
3541
|
return envObject.setLastError(1);
|
|
3032
3542
|
value = low;
|
|
3033
3543
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3544
|
+
high >>>= 0;
|
|
3034
3545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3035
3546
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3036
3547
|
return envObject.clearLastError();
|
|
@@ -3048,6 +3559,7 @@ function createNapiModule(options) {
|
|
|
3048
3559
|
return envObject.setLastError(1);
|
|
3049
3560
|
value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
|
|
3050
3561
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3562
|
+
high >>>= 0;
|
|
3051
3563
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3052
3564
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3053
3565
|
return envObject.clearLastError();
|
|
@@ -3069,6 +3581,8 @@ function createNapiModule(options) {
|
|
|
3069
3581
|
}
|
|
3070
3582
|
if (!result)
|
|
3071
3583
|
return envObject.setLastError(1);
|
|
3584
|
+
words >>>= 0;
|
|
3585
|
+
word_count >>>= 0;
|
|
3072
3586
|
word_count = word_count >>> 0;
|
|
3073
3587
|
if (word_count > 2147483647) {
|
|
3074
3588
|
return envObject.setLastError(1);
|
|
@@ -3085,6 +3599,7 @@ function createNapiModule(options) {
|
|
|
3085
3599
|
value += wordi << BigInt(64 * i);
|
|
3086
3600
|
}
|
|
3087
3601
|
value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
|
|
3602
|
+
result >>>= 0;
|
|
3088
3603
|
v = emnapiCtx.addToCurrentScope(value).id;
|
|
3089
3604
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3090
3605
|
return envObject.getReturnStatus();
|
|
@@ -3113,6 +3628,7 @@ function createNapiModule(options) {
|
|
|
3113
3628
|
node_api_create_property_key_utf8: node_api_create_property_key_utf8
|
|
3114
3629
|
});
|
|
3115
3630
|
function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
|
|
3631
|
+
utf8name >>>= 0;
|
|
3116
3632
|
var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
|
|
3117
3633
|
var f;
|
|
3118
3634
|
var napiCallback = (wasmTable.get(cb));
|
|
@@ -3253,6 +3769,7 @@ function createNapiModule(options) {
|
|
|
3253
3769
|
if (!finalize_cb)
|
|
3254
3770
|
return envObject.setLastError(1);
|
|
3255
3771
|
reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
|
|
3772
|
+
result >>>= 0;
|
|
3256
3773
|
referenceId = reference.id;
|
|
3257
3774
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3258
3775
|
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
@@ -3301,6 +3818,7 @@ function createNapiModule(options) {
|
|
|
3301
3818
|
if (!ref)
|
|
3302
3819
|
return envObject.setLastError(1);
|
|
3303
3820
|
if (result) {
|
|
3821
|
+
result >>>= 0;
|
|
3304
3822
|
data = ref.data();
|
|
3305
3823
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3306
3824
|
HEAP_DATA_VIEW.setUint32(result, data, true);
|
|
@@ -3337,12 +3855,15 @@ function createNapiModule(options) {
|
|
|
3337
3855
|
return envObject.setLastError(1);
|
|
3338
3856
|
if (!constructor)
|
|
3339
3857
|
return envObject.setLastError(1);
|
|
3858
|
+
length >>>= 0;
|
|
3859
|
+
properties >>>= 0;
|
|
3860
|
+
property_count >>>= 0;
|
|
3340
3861
|
property_count = property_count >>> 0;
|
|
3341
3862
|
if (property_count > 0) {
|
|
3342
3863
|
if (!properties)
|
|
3343
3864
|
return envObject.setLastError(1);
|
|
3344
3865
|
}
|
|
3345
|
-
if ((length
|
|
3866
|
+
if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
|
|
3346
3867
|
return envObject.setLastError(1);
|
|
3347
3868
|
}
|
|
3348
3869
|
var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
|
|
@@ -3360,6 +3881,7 @@ function createNapiModule(options) {
|
|
|
3360
3881
|
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
3361
3882
|
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
3362
3883
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
3884
|
+
attributes >>>= 0;
|
|
3363
3885
|
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
3364
3886
|
if (utf8Name) {
|
|
3365
3887
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
@@ -3381,6 +3903,7 @@ function createNapiModule(options) {
|
|
|
3381
3903
|
}
|
|
3382
3904
|
var valueHandle = emnapiCtx.addToCurrentScope(F);
|
|
3383
3905
|
valueHandleId = valueHandle.id;
|
|
3906
|
+
result >>>= 0;
|
|
3384
3907
|
HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
|
|
3385
3908
|
return envObject.getReturnStatus();
|
|
3386
3909
|
}
|
|
@@ -3416,6 +3939,7 @@ function createNapiModule(options) {
|
|
|
3416
3939
|
if (!(value.isObject() || value.isFunction())) {
|
|
3417
3940
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
|
|
3418
3941
|
}
|
|
3942
|
+
type_tag >>>= 0;
|
|
3419
3943
|
if (!type_tag) {
|
|
3420
3944
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
|
|
3421
3945
|
}
|
|
@@ -3460,6 +3984,7 @@ function createNapiModule(options) {
|
|
|
3460
3984
|
}
|
|
3461
3985
|
var binding = envObject.getObjectBinding(value.value);
|
|
3462
3986
|
if (binding.tag !== null) {
|
|
3987
|
+
type_tag >>>= 0;
|
|
3463
3988
|
var tag = binding.tag;
|
|
3464
3989
|
var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
|
|
3465
3990
|
ret = (tag[0] === typeTag[0] &&
|
|
@@ -3470,6 +3995,7 @@ function createNapiModule(options) {
|
|
|
3470
3995
|
else {
|
|
3471
3996
|
ret = false;
|
|
3472
3997
|
}
|
|
3998
|
+
result >>>= 0;
|
|
3473
3999
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3474
4000
|
HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
|
|
3475
4001
|
return envObject.getReturnStatus();
|
|
@@ -3497,8 +4023,12 @@ function createNapiModule(options) {
|
|
|
3497
4023
|
}
|
|
3498
4024
|
var handle = handleResult.handle;
|
|
3499
4025
|
var ownership = !result ? 0 : 1;
|
|
4026
|
+
finalize_data >>>= 0;
|
|
4027
|
+
finalize_cb >>>= 0;
|
|
4028
|
+
finalize_hint >>>= 0;
|
|
3500
4029
|
var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
|
|
3501
4030
|
if (result) {
|
|
4031
|
+
result >>>= 0;
|
|
3502
4032
|
var referenceId = reference.id;
|
|
3503
4033
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3504
4034
|
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
@@ -3537,6 +4067,9 @@ function createNapiModule(options) {
|
|
|
3537
4067
|
try {
|
|
3538
4068
|
if (!result)
|
|
3539
4069
|
return envObject.setLastError(1);
|
|
4070
|
+
byte_length >>>= 0;
|
|
4071
|
+
external_data >>>= 0;
|
|
4072
|
+
result >>>= 0;
|
|
3540
4073
|
byte_length = byte_length >>> 0;
|
|
3541
4074
|
if (!external_data) {
|
|
3542
4075
|
byte_length = 0;
|
|
@@ -3588,6 +4121,12 @@ function createNapiModule(options) {
|
|
|
3588
4121
|
case -1:
|
|
3589
4122
|
viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 };
|
|
3590
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;
|
|
3591
4130
|
case -2: {
|
|
3592
4131
|
if (!emnapiCtx.feature.Buffer) {
|
|
3593
4132
|
throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
|
|
@@ -3641,7 +4180,7 @@ function createNapiModule(options) {
|
|
|
3641
4180
|
var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
|
|
3642
4181
|
if (!pointer)
|
|
3643
4182
|
throw new Error('Unknown ArrayBuffer address');
|
|
3644
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4183
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3645
4184
|
len = arrayBufferOrView.byteLength - offset;
|
|
3646
4185
|
}
|
|
3647
4186
|
len = len >>> 0;
|
|
@@ -3663,7 +4202,7 @@ function createNapiModule(options) {
|
|
|
3663
4202
|
var pointer = viewPointerInfo.address;
|
|
3664
4203
|
if (!pointer)
|
|
3665
4204
|
throw new Error('Unknown ArrayBuffer address');
|
|
3666
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4205
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3667
4206
|
len = latestView.byteLength - offset;
|
|
3668
4207
|
}
|
|
3669
4208
|
len = len >>> 0;
|
|
@@ -3695,6 +4234,9 @@ function createNapiModule(options) {
|
|
|
3695
4234
|
try {
|
|
3696
4235
|
if (!arraybuffer_or_view)
|
|
3697
4236
|
return envObject.setLastError(1);
|
|
4237
|
+
arraybuffer_or_view >>>= 0;
|
|
4238
|
+
offset >>>= 0;
|
|
4239
|
+
len >>>= 0;
|
|
3698
4240
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3699
4241
|
var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
|
|
3700
4242
|
var handle = envObject.ctx.handleStore.get(handleId);
|
|
@@ -3703,6 +4245,7 @@ function createNapiModule(options) {
|
|
|
3703
4245
|
}
|
|
3704
4246
|
var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
|
|
3705
4247
|
if (handle.value !== ret) {
|
|
4248
|
+
arraybuffer_or_view >>>= 0;
|
|
3706
4249
|
v = envObject.ensureHandleId(ret);
|
|
3707
4250
|
HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
|
|
3708
4251
|
}
|
|
@@ -3756,13 +4299,16 @@ function createNapiModule(options) {
|
|
|
3756
4299
|
p = info.address;
|
|
3757
4300
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3758
4301
|
if (address) {
|
|
4302
|
+
address >>>= 0;
|
|
3759
4303
|
HEAP_DATA_VIEW.setUint32(address, p, true);
|
|
3760
4304
|
}
|
|
3761
4305
|
if (ownership) {
|
|
4306
|
+
ownership >>>= 0;
|
|
3762
4307
|
ownershipOut = info.ownership;
|
|
3763
4308
|
HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
|
|
3764
4309
|
}
|
|
3765
4310
|
if (runtime_allocated) {
|
|
4311
|
+
runtime_allocated >>>= 0;
|
|
3766
4312
|
runtimeAllocated = info.runtimeAllocated;
|
|
3767
4313
|
HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
|
|
3768
4314
|
}
|
|
@@ -3788,22 +4334,102 @@ function createNapiModule(options) {
|
|
|
3788
4334
|
}
|
|
3789
4335
|
var versions = runtimeVersion.split('.')
|
|
3790
4336
|
.map(function (n) { return Number(n); });
|
|
4337
|
+
version >>>= 0;
|
|
3791
4338
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3792
4339
|
HEAP_DATA_VIEW.setUint32(version, versions[0], true);
|
|
3793
4340
|
HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
|
|
3794
4341
|
HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
|
|
3795
4342
|
return envObject.clearLastError();
|
|
3796
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
|
+
}
|
|
3797
4419
|
var emnapiMod = Object.freeze({
|
|
3798
4420
|
__proto__: null,
|
|
4421
|
+
$emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
|
|
3799
4422
|
$emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
|
|
3800
4423
|
$emnapiSyncMemory: $emnapiSyncMemory,
|
|
4424
|
+
emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
|
|
3801
4425
|
emnapi_create_memory_view: emnapi_create_memory_view,
|
|
4426
|
+
emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
|
|
3802
4427
|
emnapi_get_memory_address: emnapi_get_memory_address,
|
|
3803
4428
|
emnapi_get_runtime_version: emnapi_get_runtime_version,
|
|
3804
4429
|
emnapi_is_node_binding_available: emnapi_is_node_binding_available,
|
|
3805
4430
|
emnapi_is_support_bigint: emnapi_is_support_bigint,
|
|
3806
4431
|
emnapi_is_support_weakref: emnapi_is_support_weakref,
|
|
4432
|
+
emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
|
|
3807
4433
|
emnapi_sync_memory: emnapi_sync_memory
|
|
3808
4434
|
});
|
|
3809
4435
|
function napi_create_array(env, result) {
|
|
@@ -3813,6 +4439,7 @@ function createNapiModule(options) {
|
|
|
3813
4439
|
envObject.checkGCAccess();
|
|
3814
4440
|
if (!result)
|
|
3815
4441
|
return envObject.setLastError(1);
|
|
4442
|
+
result >>>= 0;
|
|
3816
4443
|
var value = emnapiCtx.addToCurrentScope([]).id;
|
|
3817
4444
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3818
4445
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3825,6 +4452,8 @@ function createNapiModule(options) {
|
|
|
3825
4452
|
envObject.checkGCAccess();
|
|
3826
4453
|
if (!result)
|
|
3827
4454
|
return envObject.setLastError(1);
|
|
4455
|
+
length >>>= 0;
|
|
4456
|
+
result >>>= 0;
|
|
3828
4457
|
length = length >>> 0;
|
|
3829
4458
|
var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
|
|
3830
4459
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3832,9 +4461,11 @@ function createNapiModule(options) {
|
|
|
3832
4461
|
return envObject.clearLastError();
|
|
3833
4462
|
}
|
|
3834
4463
|
function emnapiCreateArrayBuffer(byte_length, data, shared) {
|
|
4464
|
+
byte_length >>>= 0;
|
|
3835
4465
|
byte_length = byte_length >>> 0;
|
|
3836
4466
|
var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
|
|
3837
4467
|
if (data) {
|
|
4468
|
+
data >>>= 0;
|
|
3838
4469
|
var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
|
|
3839
4470
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3840
4471
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
@@ -3855,6 +4486,7 @@ function createNapiModule(options) {
|
|
|
3855
4486
|
try {
|
|
3856
4487
|
if (!result)
|
|
3857
4488
|
return envObject.setLastError(1);
|
|
4489
|
+
result >>>= 0;
|
|
3858
4490
|
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
|
|
3859
4491
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
3860
4492
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3880,6 +4512,7 @@ function createNapiModule(options) {
|
|
|
3880
4512
|
try {
|
|
3881
4513
|
if (!result)
|
|
3882
4514
|
return envObject.setLastError(1);
|
|
4515
|
+
result >>>= 0;
|
|
3883
4516
|
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
|
|
3884
4517
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
3885
4518
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3905,6 +4538,7 @@ function createNapiModule(options) {
|
|
|
3905
4538
|
try {
|
|
3906
4539
|
if (!result)
|
|
3907
4540
|
return envObject.setLastError(1);
|
|
4541
|
+
result >>>= 0;
|
|
3908
4542
|
value = emnapiCtx.addToCurrentScope(new Date(time)).id;
|
|
3909
4543
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3910
4544
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3936,6 +4570,7 @@ function createNapiModule(options) {
|
|
|
3936
4570
|
if (finalize_cb) {
|
|
3937
4571
|
emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
|
|
3938
4572
|
}
|
|
4573
|
+
result >>>= 0;
|
|
3939
4574
|
value = externalHandle.id;
|
|
3940
4575
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3941
4576
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3960,6 +4595,9 @@ function createNapiModule(options) {
|
|
|
3960
4595
|
try {
|
|
3961
4596
|
if (!result)
|
|
3962
4597
|
return envObject.setLastError(1);
|
|
4598
|
+
byte_length >>>= 0;
|
|
4599
|
+
external_data >>>= 0;
|
|
4600
|
+
result >>>= 0;
|
|
3963
4601
|
byte_length = byte_length >>> 0;
|
|
3964
4602
|
if (!external_data) {
|
|
3965
4603
|
byte_length = 0;
|
|
@@ -4010,6 +4648,60 @@ function createNapiModule(options) {
|
|
|
4010
4648
|
return envObject.setLastError(10);
|
|
4011
4649
|
}
|
|
4012
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
|
+
}
|
|
4013
4705
|
function napi_create_object(env, result) {
|
|
4014
4706
|
if (!env)
|
|
4015
4707
|
return 1;
|
|
@@ -4017,11 +4709,57 @@ function createNapiModule(options) {
|
|
|
4017
4709
|
envObject.checkGCAccess();
|
|
4018
4710
|
if (!result)
|
|
4019
4711
|
return envObject.setLastError(1);
|
|
4712
|
+
result >>>= 0;
|
|
4020
4713
|
var value = emnapiCtx.addToCurrentScope({}).id;
|
|
4021
4714
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4022
4715
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4023
4716
|
return envObject.clearLastError();
|
|
4024
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
|
+
}
|
|
4025
4763
|
function napi_create_symbol(env, description, result) {
|
|
4026
4764
|
if (!env)
|
|
4027
4765
|
return 1;
|
|
@@ -4029,6 +4767,7 @@ function createNapiModule(options) {
|
|
|
4029
4767
|
envObject.checkGCAccess();
|
|
4030
4768
|
if (!result)
|
|
4031
4769
|
return envObject.setLastError(1);
|
|
4770
|
+
result >>>= 0;
|
|
4032
4771
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4033
4772
|
if (!description) {
|
|
4034
4773
|
var value = emnapiCtx.addToCurrentScope(Symbol()).id;
|
|
@@ -4062,10 +4801,9 @@ function createNapiModule(options) {
|
|
|
4062
4801
|
if (!result)
|
|
4063
4802
|
return envObject.setLastError(1);
|
|
4064
4803
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
4065
|
-
if (!handle.isArrayBuffer()) {
|
|
4066
|
-
return envObject.setLastError(1);
|
|
4067
|
-
}
|
|
4068
4804
|
var buffer = handle.value;
|
|
4805
|
+
byte_offset >>>= 0;
|
|
4806
|
+
length >>>= 0;
|
|
4069
4807
|
var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
|
|
4070
4808
|
var _a;
|
|
4071
4809
|
byte_offset = byte_offset >>> 0;
|
|
@@ -4096,36 +4834,47 @@ function createNapiModule(options) {
|
|
|
4096
4834
|
});
|
|
4097
4835
|
}
|
|
4098
4836
|
}
|
|
4837
|
+
result >>>= 0;
|
|
4099
4838
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4100
4839
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4101
4840
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4102
4841
|
return envObject.getReturnStatus();
|
|
4103
4842
|
};
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4107
|
-
|
|
4108
|
-
|
|
4109
|
-
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
|
|
4113
|
-
|
|
4114
|
-
|
|
4115
|
-
|
|
4116
|
-
|
|
4117
|
-
|
|
4118
|
-
|
|
4119
|
-
|
|
4120
|
-
|
|
4121
|
-
|
|
4122
|
-
|
|
4123
|
-
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
|
|
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);
|
|
4129
4878
|
}
|
|
4130
4879
|
}
|
|
4131
4880
|
catch (err) {
|
|
@@ -4152,7 +4901,9 @@ function createNapiModule(options) {
|
|
|
4152
4901
|
if (!Buffer) {
|
|
4153
4902
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
|
|
4154
4903
|
}
|
|
4904
|
+
result >>>= 0;
|
|
4155
4905
|
var buffer = void 0;
|
|
4906
|
+
size >>>= 0;
|
|
4156
4907
|
size = size >>> 0;
|
|
4157
4908
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4158
4909
|
if (!data || (size === 0)) {
|
|
@@ -4164,6 +4915,7 @@ function createNapiModule(options) {
|
|
|
4164
4915
|
pointer = _malloc(size);
|
|
4165
4916
|
if (!pointer)
|
|
4166
4917
|
throw new Error('Out of memory');
|
|
4918
|
+
pointer >>>= 0;
|
|
4167
4919
|
new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
|
|
4168
4920
|
var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
|
|
4169
4921
|
var viewDescriptor = {
|
|
@@ -4177,6 +4929,7 @@ function createNapiModule(options) {
|
|
|
4177
4929
|
(_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
|
|
4178
4930
|
value = emnapiCtx.addToCurrentScope(buffer_1).id;
|
|
4179
4931
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4932
|
+
data >>>= 0;
|
|
4180
4933
|
HEAP_DATA_VIEW.setUint32(data, pointer, true);
|
|
4181
4934
|
}
|
|
4182
4935
|
return envObject.getReturnStatus();
|
|
@@ -4206,8 +4959,11 @@ function createNapiModule(options) {
|
|
|
4206
4959
|
}
|
|
4207
4960
|
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
|
|
4208
4961
|
var buffer = Buffer.from(arrayBuffer);
|
|
4962
|
+
data >>>= 0;
|
|
4963
|
+
length >>>= 0;
|
|
4209
4964
|
buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
|
|
4210
4965
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4966
|
+
result >>>= 0;
|
|
4211
4967
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4212
4968
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4213
4969
|
return envObject.getReturnStatus();
|
|
@@ -4236,6 +4992,8 @@ function createNapiModule(options) {
|
|
|
4236
4992
|
return envObject.setLastError(1);
|
|
4237
4993
|
if (!result)
|
|
4238
4994
|
return envObject.setLastError(1);
|
|
4995
|
+
byte_offset >>>= 0;
|
|
4996
|
+
byte_length >>>= 0;
|
|
4239
4997
|
byte_offset = byte_offset >>> 0;
|
|
4240
4998
|
byte_length = byte_length >>> 0;
|
|
4241
4999
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
@@ -4264,6 +5022,7 @@ function createNapiModule(options) {
|
|
|
4264
5022
|
});
|
|
4265
5023
|
}
|
|
4266
5024
|
}
|
|
5025
|
+
result >>>= 0;
|
|
4267
5026
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4268
5027
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4269
5028
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4275,7 +5034,6 @@ function createNapiModule(options) {
|
|
|
4275
5034
|
}
|
|
4276
5035
|
}
|
|
4277
5036
|
function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
|
|
4278
|
-
var value;
|
|
4279
5037
|
if (!env)
|
|
4280
5038
|
return 1;
|
|
4281
5039
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4290,34 +5048,41 @@ function createNapiModule(options) {
|
|
|
4290
5048
|
return envObject.setLastError(1);
|
|
4291
5049
|
if (!result)
|
|
4292
5050
|
return envObject.setLastError(1);
|
|
5051
|
+
byte_length >>>= 0;
|
|
5052
|
+
byte_offset >>>= 0;
|
|
4293
5053
|
byte_length = byte_length >>> 0;
|
|
4294
5054
|
byte_offset = byte_offset >>> 0;
|
|
4295
|
-
var
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
|
|
4301
|
-
var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
|
|
4302
|
-
err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
|
|
4303
|
-
throw err;
|
|
4304
|
-
}
|
|
4305
|
-
var dataview = new DataView(buffer, byte_offset, byte_length);
|
|
4306
|
-
if (buffer === wasmMemory.buffer) {
|
|
4307
|
-
if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
|
|
4308
|
-
emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
|
|
4309
|
-
Ctor: DataView,
|
|
4310
|
-
address: byte_offset,
|
|
4311
|
-
length: byte_length,
|
|
4312
|
-
ownership: 1,
|
|
4313
|
-
runtimeAllocated: 0
|
|
4314
|
-
});
|
|
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;
|
|
4315
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
|
+
}
|
|
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);
|
|
4316
5085
|
}
|
|
4317
|
-
value = emnapiCtx.addToCurrentScope(dataview).id;
|
|
4318
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4319
|
-
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4320
|
-
return envObject.getReturnStatus();
|
|
4321
5086
|
}
|
|
4322
5087
|
catch (err) {
|
|
4323
5088
|
envObject.tryCatch.setError(err);
|
|
@@ -4331,7 +5096,10 @@ function createNapiModule(options) {
|
|
|
4331
5096
|
envObject.checkGCAccess();
|
|
4332
5097
|
if (!result)
|
|
4333
5098
|
return envObject.setLastError(1);
|
|
4334
|
-
|
|
5099
|
+
length >>>= 0;
|
|
5100
|
+
utf8description >>>= 0;
|
|
5101
|
+
result >>>= 0;
|
|
5102
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
4335
5103
|
var sizelength = length >>> 0;
|
|
4336
5104
|
if (length !== 0) {
|
|
4337
5105
|
if (!utf8description)
|
|
@@ -4362,6 +5130,8 @@ function createNapiModule(options) {
|
|
|
4362
5130
|
napi_create_symbol: napi_create_symbol,
|
|
4363
5131
|
napi_create_typedarray: napi_create_typedarray,
|
|
4364
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,
|
|
4365
5135
|
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
4366
5136
|
node_api_symbol_for: node_api_symbol_for
|
|
4367
5137
|
});
|
|
@@ -4372,6 +5142,7 @@ function createNapiModule(options) {
|
|
|
4372
5142
|
envObject.checkGCAccess();
|
|
4373
5143
|
if (!result)
|
|
4374
5144
|
return envObject.setLastError(1);
|
|
5145
|
+
result >>>= 0;
|
|
4375
5146
|
var v = value === 0 ? 3 : 4;
|
|
4376
5147
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4377
5148
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -4384,6 +5155,7 @@ function createNapiModule(options) {
|
|
|
4384
5155
|
envObject.checkGCAccess();
|
|
4385
5156
|
if (!result)
|
|
4386
5157
|
return envObject.setLastError(1);
|
|
5158
|
+
result >>>= 0;
|
|
4387
5159
|
var value = 5;
|
|
4388
5160
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4389
5161
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4396,6 +5168,7 @@ function createNapiModule(options) {
|
|
|
4396
5168
|
envObject.checkGCAccess();
|
|
4397
5169
|
if (!result)
|
|
4398
5170
|
return envObject.setLastError(1);
|
|
5171
|
+
result >>>= 0;
|
|
4399
5172
|
var value = 2;
|
|
4400
5173
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4401
5174
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4408,6 +5181,7 @@ function createNapiModule(options) {
|
|
|
4408
5181
|
envObject.checkGCAccess();
|
|
4409
5182
|
if (!result)
|
|
4410
5183
|
return envObject.setLastError(1);
|
|
5184
|
+
result >>>= 0;
|
|
4411
5185
|
var value = 1;
|
|
4412
5186
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4413
5187
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4424,6 +5198,9 @@ function createNapiModule(options) {
|
|
|
4424
5198
|
if (!env)
|
|
4425
5199
|
return 1;
|
|
4426
5200
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5201
|
+
data >>>= 0;
|
|
5202
|
+
finalize_cb >>>= 0;
|
|
5203
|
+
finalize_hint >>>= 0;
|
|
4427
5204
|
envObject.setInstanceData(data, finalize_cb, finalize_hint);
|
|
4428
5205
|
return envObject.clearLastError();
|
|
4429
5206
|
}
|
|
@@ -4433,6 +5210,7 @@ function createNapiModule(options) {
|
|
|
4433
5210
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4434
5211
|
if (!data)
|
|
4435
5212
|
return envObject.setLastError(1);
|
|
5213
|
+
data >>>= 0;
|
|
4436
5214
|
var value = envObject.getInstanceData();
|
|
4437
5215
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4438
5216
|
HEAP_DATA_VIEW.setUint32(data, value, true);
|
|
@@ -4444,11 +5222,15 @@ function createNapiModule(options) {
|
|
|
4444
5222
|
napi_set_instance_data: napi_set_instance_data
|
|
4445
5223
|
});
|
|
4446
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;
|
|
4447
5228
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4448
5229
|
var lastError = envObject.lastError;
|
|
4449
5230
|
var errorCode = lastError.errorCode;
|
|
4450
5231
|
var engineErrorCode = lastError.engineErrorCode >>> 0;
|
|
4451
5232
|
var engineReserved = lastError.engineReserved;
|
|
5233
|
+
engineReserved >>>= 0;
|
|
4452
5234
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4453
5235
|
HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
|
|
4454
5236
|
HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
|
|
@@ -4488,6 +5270,8 @@ function createNapiModule(options) {
|
|
|
4488
5270
|
try {
|
|
4489
5271
|
if (!msg)
|
|
4490
5272
|
return envObject.setLastError(1);
|
|
5273
|
+
code >>>= 0;
|
|
5274
|
+
msg >>>= 0;
|
|
4491
5275
|
var error = new Error(emnapiString.UTF8ToString(msg, -1));
|
|
4492
5276
|
if (code)
|
|
4493
5277
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4512,6 +5296,8 @@ function createNapiModule(options) {
|
|
|
4512
5296
|
try {
|
|
4513
5297
|
if (!msg)
|
|
4514
5298
|
return envObject.setLastError(1);
|
|
5299
|
+
code >>>= 0;
|
|
5300
|
+
msg >>>= 0;
|
|
4515
5301
|
var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
|
|
4516
5302
|
if (code)
|
|
4517
5303
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4536,6 +5322,8 @@ function createNapiModule(options) {
|
|
|
4536
5322
|
try {
|
|
4537
5323
|
if (!msg)
|
|
4538
5324
|
return envObject.setLastError(1);
|
|
5325
|
+
code >>>= 0;
|
|
5326
|
+
msg >>>= 0;
|
|
4539
5327
|
var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
|
|
4540
5328
|
if (code)
|
|
4541
5329
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4560,6 +5348,8 @@ function createNapiModule(options) {
|
|
|
4560
5348
|
try {
|
|
4561
5349
|
if (!msg)
|
|
4562
5350
|
return envObject.setLastError(1);
|
|
5351
|
+
code >>>= 0;
|
|
5352
|
+
msg >>>= 0;
|
|
4563
5353
|
var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
|
|
4564
5354
|
if (code)
|
|
4565
5355
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4579,6 +5369,7 @@ function createNapiModule(options) {
|
|
|
4579
5369
|
if (!result)
|
|
4580
5370
|
return envObject.setLastError(1);
|
|
4581
5371
|
var r = envObject.tryCatch.hasCaught();
|
|
5372
|
+
result >>>= 0;
|
|
4582
5373
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4583
5374
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
4584
5375
|
return envObject.clearLastError();
|
|
@@ -4604,6 +5395,7 @@ function createNapiModule(options) {
|
|
|
4604
5395
|
}
|
|
4605
5396
|
error.code = codeValue;
|
|
4606
5397
|
}
|
|
5398
|
+
result >>>= 0;
|
|
4607
5399
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4608
5400
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4609
5401
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4630,6 +5422,7 @@ function createNapiModule(options) {
|
|
|
4630
5422
|
}
|
|
4631
5423
|
error.code = codeValue;
|
|
4632
5424
|
}
|
|
5425
|
+
result >>>= 0;
|
|
4633
5426
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4634
5427
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4635
5428
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4656,6 +5449,7 @@ function createNapiModule(options) {
|
|
|
4656
5449
|
}
|
|
4657
5450
|
error.code = codeValue;
|
|
4658
5451
|
}
|
|
5452
|
+
result >>>= 0;
|
|
4659
5453
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4660
5454
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4661
5455
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4682,6 +5476,7 @@ function createNapiModule(options) {
|
|
|
4682
5476
|
}
|
|
4683
5477
|
error.code = codeValue;
|
|
4684
5478
|
}
|
|
5479
|
+
result >>>= 0;
|
|
4685
5480
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4686
5481
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4687
5482
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4694,6 +5489,7 @@ function createNapiModule(options) {
|
|
|
4694
5489
|
envObject.checkGCAccess();
|
|
4695
5490
|
if (!result)
|
|
4696
5491
|
return envObject.setLastError(1);
|
|
5492
|
+
result >>>= 0;
|
|
4697
5493
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4698
5494
|
if (!envObject.tryCatch.hasCaught()) {
|
|
4699
5495
|
HEAP_DATA_VIEW.setUint32(result, 1, true);
|
|
@@ -4708,6 +5504,10 @@ function createNapiModule(options) {
|
|
|
4708
5504
|
return envObject.clearLastError();
|
|
4709
5505
|
}
|
|
4710
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;
|
|
4711
5511
|
var locationStr = emnapiString.UTF8ToString(location, location_len);
|
|
4712
5512
|
var messageStr = emnapiString.UTF8ToString(message, message_len);
|
|
4713
5513
|
if (emnapiNodeBinding) {
|
|
@@ -4761,8 +5561,21 @@ function createNapiModule(options) {
|
|
|
4761
5561
|
node_api_create_syntax_error: node_api_create_syntax_error,
|
|
4762
5562
|
node_api_throw_syntax_error: node_api_throw_syntax_error
|
|
4763
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
|
+
}
|
|
4764
5578
|
function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
4765
|
-
var value;
|
|
4766
5579
|
if (!env)
|
|
4767
5580
|
return 1;
|
|
4768
5581
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4777,15 +5590,7 @@ function createNapiModule(options) {
|
|
|
4777
5590
|
return envObject.setLastError(1);
|
|
4778
5591
|
if (!cb)
|
|
4779
5592
|
return envObject.setLastError(1);
|
|
4780
|
-
|
|
4781
|
-
if (fresult.status !== 0)
|
|
4782
|
-
return envObject.setLastError(fresult.status);
|
|
4783
|
-
var f = fresult.f;
|
|
4784
|
-
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
4785
|
-
value = valueHandle.id;
|
|
4786
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4787
|
-
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4788
|
-
return envObject.getReturnStatus();
|
|
5593
|
+
return _emnapi_create_function(env, utf8name, length, cb, data, result);
|
|
4789
5594
|
}
|
|
4790
5595
|
catch (err) {
|
|
4791
5596
|
envObject.tryCatch.setError(err);
|
|
@@ -4799,11 +5604,14 @@ function createNapiModule(options) {
|
|
|
4799
5604
|
if (!cbinfo)
|
|
4800
5605
|
return envObject.setLastError(1);
|
|
4801
5606
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
5607
|
+
argc >>>= 0;
|
|
5608
|
+
argv >>>= 0;
|
|
4802
5609
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4803
5610
|
if (argv) {
|
|
4804
5611
|
if (!argc)
|
|
4805
5612
|
return envObject.setLastError(1);
|
|
4806
5613
|
var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
|
|
5614
|
+
argcValue >>>= 0;
|
|
4807
5615
|
var len = cbinfoValue.args.length;
|
|
4808
5616
|
var arrlen = argcValue < len ? argcValue : len;
|
|
4809
5617
|
var i = 0;
|
|
@@ -4821,10 +5629,12 @@ function createNapiModule(options) {
|
|
|
4821
5629
|
HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
|
|
4822
5630
|
}
|
|
4823
5631
|
if (this_arg) {
|
|
5632
|
+
this_arg >>>= 0;
|
|
4824
5633
|
var v = envObject.ensureHandleId(cbinfoValue.thiz);
|
|
4825
5634
|
HEAP_DATA_VIEW.setUint32(this_arg, v, true);
|
|
4826
5635
|
}
|
|
4827
5636
|
if (data) {
|
|
5637
|
+
data >>>= 0;
|
|
4828
5638
|
HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
|
|
4829
5639
|
}
|
|
4830
5640
|
return envObject.clearLastError();
|
|
@@ -4844,6 +5654,9 @@ function createNapiModule(options) {
|
|
|
4844
5654
|
try {
|
|
4845
5655
|
if (!recv)
|
|
4846
5656
|
return envObject.setLastError(1);
|
|
5657
|
+
argc >>>= 0;
|
|
5658
|
+
argv >>>= 0;
|
|
5659
|
+
result >>>= 0;
|
|
4847
5660
|
argc = argc >>> 0;
|
|
4848
5661
|
if (argc > 0) {
|
|
4849
5662
|
if (!argv)
|
|
@@ -4888,6 +5701,9 @@ function createNapiModule(options) {
|
|
|
4888
5701
|
try {
|
|
4889
5702
|
if (!constructor)
|
|
4890
5703
|
return envObject.setLastError(1);
|
|
5704
|
+
argc >>>= 0;
|
|
5705
|
+
argv >>>= 0;
|
|
5706
|
+
result >>>= 0;
|
|
4891
5707
|
argc = argc >>> 0;
|
|
4892
5708
|
if (argc > 0) {
|
|
4893
5709
|
if (!argv)
|
|
@@ -4938,6 +5754,7 @@ function createNapiModule(options) {
|
|
|
4938
5754
|
return envObject.setLastError(1);
|
|
4939
5755
|
if (!result)
|
|
4940
5756
|
return envObject.setLastError(1);
|
|
5757
|
+
result >>>= 0;
|
|
4941
5758
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
4942
5759
|
var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
|
|
4943
5760
|
var value = thiz == null || thiz.constructor == null
|
|
@@ -4951,6 +5768,7 @@ function createNapiModule(options) {
|
|
|
4951
5768
|
}
|
|
4952
5769
|
var functionMod = Object.freeze({
|
|
4953
5770
|
__proto__: null,
|
|
5771
|
+
_emnapi_create_function: _emnapi_create_function,
|
|
4954
5772
|
napi_call_function: napi_call_function,
|
|
4955
5773
|
napi_create_function: napi_create_function,
|
|
4956
5774
|
napi_get_cb_info: napi_get_cb_info,
|
|
@@ -4965,6 +5783,7 @@ function createNapiModule(options) {
|
|
|
4965
5783
|
if (!result)
|
|
4966
5784
|
return envObject.setLastError(1);
|
|
4967
5785
|
var scope = emnapiCtx.openScope(envObject);
|
|
5786
|
+
result >>>= 0;
|
|
4968
5787
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4969
5788
|
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4970
5789
|
return envObject.clearLastError();
|
|
@@ -4990,6 +5809,7 @@ function createNapiModule(options) {
|
|
|
4990
5809
|
if (!result)
|
|
4991
5810
|
return envObject.setLastError(1);
|
|
4992
5811
|
var scope = emnapiCtx.openScope(envObject);
|
|
5812
|
+
result >>>= 0;
|
|
4993
5813
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4994
5814
|
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4995
5815
|
return envObject.clearLastError();
|
|
@@ -5020,6 +5840,8 @@ function createNapiModule(options) {
|
|
|
5020
5840
|
return envObject.setLastError(1);
|
|
5021
5841
|
var scopeObject = emnapiCtx.scopeStore.get(scope);
|
|
5022
5842
|
if (!scopeObject.escapeCalled()) {
|
|
5843
|
+
escapee >>>= 0;
|
|
5844
|
+
result >>>= 0;
|
|
5023
5845
|
var newHandle = scopeObject.escape(escapee);
|
|
5024
5846
|
var value = newHandle ? newHandle.id : 0;
|
|
5025
5847
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -5044,6 +5866,7 @@ function createNapiModule(options) {
|
|
|
5044
5866
|
}
|
|
5045
5867
|
}
|
|
5046
5868
|
var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
|
|
5869
|
+
result >>>= 0;
|
|
5047
5870
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5048
5871
|
HEAP_DATA_VIEW.setUint32(result, ref.id, true);
|
|
5049
5872
|
return envObject.clearLastError();
|
|
@@ -5066,6 +5889,7 @@ function createNapiModule(options) {
|
|
|
5066
5889
|
return envObject.setLastError(1);
|
|
5067
5890
|
var count = emnapiCtx.refStore.get(ref).ref();
|
|
5068
5891
|
if (result) {
|
|
5892
|
+
result >>>= 0;
|
|
5069
5893
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5070
5894
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5071
5895
|
}
|
|
@@ -5085,6 +5909,7 @@ function createNapiModule(options) {
|
|
|
5085
5909
|
}
|
|
5086
5910
|
var count = reference.unref();
|
|
5087
5911
|
if (result) {
|
|
5912
|
+
result >>>= 0;
|
|
5088
5913
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5089
5914
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5090
5915
|
}
|
|
@@ -5101,6 +5926,7 @@ function createNapiModule(options) {
|
|
|
5101
5926
|
return envObject.setLastError(1);
|
|
5102
5927
|
var reference = emnapiCtx.refStore.get(ref);
|
|
5103
5928
|
var handleId = reference.get(envObject);
|
|
5929
|
+
result >>>= 0;
|
|
5104
5930
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5105
5931
|
HEAP_DATA_VIEW.setUint32(result, handleId, true);
|
|
5106
5932
|
return envObject.clearLastError();
|
|
@@ -5111,6 +5937,8 @@ function createNapiModule(options) {
|
|
|
5111
5937
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5112
5938
|
if (!fun)
|
|
5113
5939
|
return envObject.setLastError(1);
|
|
5940
|
+
fun >>>= 0;
|
|
5941
|
+
arg >>>= 0;
|
|
5114
5942
|
emnapiCtx.addCleanupHook(envObject, fun, arg);
|
|
5115
5943
|
return 0;
|
|
5116
5944
|
}
|
|
@@ -5120,6 +5948,8 @@ function createNapiModule(options) {
|
|
|
5120
5948
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5121
5949
|
if (!fun)
|
|
5122
5950
|
return envObject.setLastError(1);
|
|
5951
|
+
fun >>>= 0;
|
|
5952
|
+
arg >>>= 0;
|
|
5123
5953
|
emnapiCtx.removeCleanupHook(envObject, fun, arg);
|
|
5124
5954
|
return 0;
|
|
5125
5955
|
}
|
|
@@ -5180,8 +6010,10 @@ function createNapiModule(options) {
|
|
|
5180
6010
|
var p = new Promise(function (resolve, reject) {
|
|
5181
6011
|
var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
|
|
5182
6012
|
deferredObjectId = deferredObject.id;
|
|
6013
|
+
deferred >>>= 0;
|
|
5183
6014
|
HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
|
|
5184
6015
|
});
|
|
6016
|
+
promise >>>= 0;
|
|
5185
6017
|
value = emnapiCtx.addToCurrentScope(p).id;
|
|
5186
6018
|
HEAP_DATA_VIEW.setUint32(promise, value, true);
|
|
5187
6019
|
return envObject.getReturnStatus();
|
|
@@ -5249,6 +6081,7 @@ function createNapiModule(options) {
|
|
|
5249
6081
|
if (!is_promise)
|
|
5250
6082
|
return envObject.setLastError(1);
|
|
5251
6083
|
var h = emnapiCtx.handleStore.get(value);
|
|
6084
|
+
is_promise >>>= 0;
|
|
5252
6085
|
var r = h.isPromise() ? 1 : 0;
|
|
5253
6086
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5254
6087
|
HEAP_DATA_VIEW.setInt8(is_promise, r, true);
|
|
@@ -5392,6 +6225,7 @@ function createNapiModule(options) {
|
|
|
5392
6225
|
}
|
|
5393
6226
|
}
|
|
5394
6227
|
}
|
|
6228
|
+
result >>>= 0;
|
|
5395
6229
|
value = emnapiCtx.addToCurrentScope(ret).id;
|
|
5396
6230
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5397
6231
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5463,6 +6297,7 @@ function createNapiModule(options) {
|
|
|
5463
6297
|
catch (_) {
|
|
5464
6298
|
return envObject.setLastError(2);
|
|
5465
6299
|
}
|
|
6300
|
+
result >>>= 0;
|
|
5466
6301
|
r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
|
|
5467
6302
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5468
6303
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5502,6 +6337,7 @@ function createNapiModule(options) {
|
|
|
5502
6337
|
catch (_) {
|
|
5503
6338
|
return envObject.setLastError(2);
|
|
5504
6339
|
}
|
|
6340
|
+
result >>>= 0;
|
|
5505
6341
|
value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
|
|
5506
6342
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5507
6343
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5545,6 +6381,7 @@ function createNapiModule(options) {
|
|
|
5545
6381
|
}
|
|
5546
6382
|
}
|
|
5547
6383
|
if (result) {
|
|
6384
|
+
result >>>= 0;
|
|
5548
6385
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5549
6386
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5550
6387
|
}
|
|
@@ -5589,6 +6426,7 @@ function createNapiModule(options) {
|
|
|
5589
6426
|
return envObject.setLastError(4);
|
|
5590
6427
|
}
|
|
5591
6428
|
r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
|
|
6429
|
+
result >>>= 0;
|
|
5592
6430
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5593
6431
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5594
6432
|
return envObject.getReturnStatus();
|
|
@@ -5620,6 +6458,7 @@ function createNapiModule(options) {
|
|
|
5620
6458
|
if (!cname) {
|
|
5621
6459
|
return envObject.setLastError(1);
|
|
5622
6460
|
}
|
|
6461
|
+
cname >>>= 0;
|
|
5623
6462
|
emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
|
|
5624
6463
|
return envObject.getReturnStatus();
|
|
5625
6464
|
}
|
|
@@ -5658,6 +6497,8 @@ function createNapiModule(options) {
|
|
|
5658
6497
|
catch (_) {
|
|
5659
6498
|
return envObject.setLastError(2);
|
|
5660
6499
|
}
|
|
6500
|
+
utf8name >>>= 0;
|
|
6501
|
+
result >>>= 0;
|
|
5661
6502
|
r = emnapiString.UTF8ToString(utf8name, -1) in v;
|
|
5662
6503
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5663
6504
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
@@ -5698,6 +6539,8 @@ function createNapiModule(options) {
|
|
|
5698
6539
|
catch (_) {
|
|
5699
6540
|
return envObject.setLastError(2);
|
|
5700
6541
|
}
|
|
6542
|
+
utf8name >>>= 0;
|
|
6543
|
+
result >>>= 0;
|
|
5701
6544
|
value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
|
|
5702
6545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5703
6546
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5762,6 +6605,7 @@ function createNapiModule(options) {
|
|
|
5762
6605
|
catch (_) {
|
|
5763
6606
|
return envObject.setLastError(2);
|
|
5764
6607
|
}
|
|
6608
|
+
result >>>= 0;
|
|
5765
6609
|
r = ((index >>> 0) in v) ? 1 : 0;
|
|
5766
6610
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5767
6611
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5799,6 +6643,7 @@ function createNapiModule(options) {
|
|
|
5799
6643
|
catch (_) {
|
|
5800
6644
|
return envObject.setLastError(2);
|
|
5801
6645
|
}
|
|
6646
|
+
result >>>= 0;
|
|
5802
6647
|
value = envObject.ensureHandleId(v[index >>> 0]);
|
|
5803
6648
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5804
6649
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5839,6 +6684,7 @@ function createNapiModule(options) {
|
|
|
5839
6684
|
}
|
|
5840
6685
|
}
|
|
5841
6686
|
if (result) {
|
|
6687
|
+
result >>>= 0;
|
|
5842
6688
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5843
6689
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5844
6690
|
}
|
|
@@ -5861,6 +6707,8 @@ function createNapiModule(options) {
|
|
|
5861
6707
|
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
5862
6708
|
envObject.clearLastError();
|
|
5863
6709
|
try {
|
|
6710
|
+
properties >>>= 0;
|
|
6711
|
+
property_count >>>= 0;
|
|
5864
6712
|
property_count = property_count >>> 0;
|
|
5865
6713
|
if (property_count > 0) {
|
|
5866
6714
|
if (!properties)
|
|
@@ -5884,6 +6732,7 @@ function createNapiModule(options) {
|
|
|
5884
6732
|
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
5885
6733
|
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
5886
6734
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
6735
|
+
attributes >>>= 0;
|
|
5887
6736
|
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
5888
6737
|
if (utf8Name) {
|
|
5889
6738
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
@@ -6001,6 +6850,7 @@ function createNapiModule(options) {
|
|
|
6001
6850
|
}
|
|
6002
6851
|
var g = emnapiCtx.handleStore.get(5).value;
|
|
6003
6852
|
var ret = g.eval(v8Script.value);
|
|
6853
|
+
result >>>= 0;
|
|
6004
6854
|
value = envObject.ensureHandleId(ret);
|
|
6005
6855
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6006
6856
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -6026,6 +6876,7 @@ function createNapiModule(options) {
|
|
|
6026
6876
|
if (!result)
|
|
6027
6877
|
return envObject.setLastError(1);
|
|
6028
6878
|
var v = emnapiCtx.handleStore.get(value);
|
|
6879
|
+
result >>>= 0;
|
|
6029
6880
|
var r;
|
|
6030
6881
|
if (v.isNumber()) {
|
|
6031
6882
|
r = 3;
|
|
@@ -6081,6 +6932,7 @@ function createNapiModule(options) {
|
|
|
6081
6932
|
if (!result)
|
|
6082
6933
|
return envObject.setLastError(1);
|
|
6083
6934
|
var handle = emnapiCtx.handleStore.get(value);
|
|
6935
|
+
result >>>= 0;
|
|
6084
6936
|
v = handle.value ? 4 : 3;
|
|
6085
6937
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6086
6938
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6111,6 +6963,7 @@ function createNapiModule(options) {
|
|
|
6111
6963
|
if (handle.isBigInt()) {
|
|
6112
6964
|
throw new TypeError('Cannot convert a BigInt value to a number');
|
|
6113
6965
|
}
|
|
6966
|
+
result >>>= 0;
|
|
6114
6967
|
v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
|
|
6115
6968
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6116
6969
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6141,6 +6994,7 @@ function createNapiModule(options) {
|
|
|
6141
6994
|
if (handle.value == null) {
|
|
6142
6995
|
throw new TypeError('Cannot convert undefined or null to object');
|
|
6143
6996
|
}
|
|
6997
|
+
result >>>= 0;
|
|
6144
6998
|
v = envObject.ensureHandleId(Object(handle.value));
|
|
6145
6999
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6146
7000
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6171,6 +7025,7 @@ function createNapiModule(options) {
|
|
|
6171
7025
|
if (handle.isSymbol()) {
|
|
6172
7026
|
throw new TypeError('Cannot convert a Symbol value to a string');
|
|
6173
7027
|
}
|
|
7028
|
+
result >>>= 0;
|
|
6174
7029
|
v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
|
|
6175
7030
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6176
7031
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6199,6 +7054,7 @@ function createNapiModule(options) {
|
|
|
6199
7054
|
return envObject.setLastError(1);
|
|
6200
7055
|
if (!constructor)
|
|
6201
7056
|
return envObject.setLastError(1);
|
|
7057
|
+
result >>>= 0;
|
|
6202
7058
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6203
7059
|
HEAP_DATA_VIEW.setInt8(result, 0, true);
|
|
6204
7060
|
var ctor = emnapiCtx.handleStore.get(constructor);
|
|
@@ -6226,6 +7082,7 @@ function createNapiModule(options) {
|
|
|
6226
7082
|
if (!result)
|
|
6227
7083
|
return envObject.setLastError(1);
|
|
6228
7084
|
var h = emnapiCtx.handleStore.get(value);
|
|
7085
|
+
result >>>= 0;
|
|
6229
7086
|
var r = h.isArray() ? 1 : 0;
|
|
6230
7087
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6231
7088
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6241,6 +7098,7 @@ function createNapiModule(options) {
|
|
|
6241
7098
|
if (!result)
|
|
6242
7099
|
return envObject.setLastError(1);
|
|
6243
7100
|
var h = emnapiCtx.handleStore.get(value);
|
|
7101
|
+
result >>>= 0;
|
|
6244
7102
|
var r = h.isArrayBuffer() ? 1 : 0;
|
|
6245
7103
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6246
7104
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6256,6 +7114,7 @@ function createNapiModule(options) {
|
|
|
6256
7114
|
if (!result)
|
|
6257
7115
|
return envObject.setLastError(1);
|
|
6258
7116
|
var h = emnapiCtx.handleStore.get(value);
|
|
7117
|
+
result >>>= 0;
|
|
6259
7118
|
var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
|
|
6260
7119
|
(Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
|
|
6261
7120
|
? 1
|
|
@@ -6274,6 +7133,7 @@ function createNapiModule(options) {
|
|
|
6274
7133
|
if (!result)
|
|
6275
7134
|
return envObject.setLastError(1);
|
|
6276
7135
|
var h = emnapiCtx.handleStore.get(value);
|
|
7136
|
+
result >>>= 0;
|
|
6277
7137
|
var r = h.isDate() ? 1 : 0;
|
|
6278
7138
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6279
7139
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6289,6 +7149,7 @@ function createNapiModule(options) {
|
|
|
6289
7149
|
if (!result)
|
|
6290
7150
|
return envObject.setLastError(1);
|
|
6291
7151
|
var val = emnapiCtx.handleStore.get(value).value;
|
|
7152
|
+
result >>>= 0;
|
|
6292
7153
|
var r = (val instanceof Error) ? 1 : 0;
|
|
6293
7154
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6294
7155
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6304,6 +7165,7 @@ function createNapiModule(options) {
|
|
|
6304
7165
|
if (!result)
|
|
6305
7166
|
return envObject.setLastError(1);
|
|
6306
7167
|
var h = emnapiCtx.handleStore.get(value);
|
|
7168
|
+
result >>>= 0;
|
|
6307
7169
|
var r = h.isTypedArray() ? 1 : 0;
|
|
6308
7170
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6309
7171
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6319,6 +7181,7 @@ function createNapiModule(options) {
|
|
|
6319
7181
|
if (!result)
|
|
6320
7182
|
return envObject.setLastError(1);
|
|
6321
7183
|
var h = emnapiCtx.handleStore.get(value);
|
|
7184
|
+
result >>>= 0;
|
|
6322
7185
|
var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
|
|
6323
7186
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6324
7187
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6334,6 +7197,7 @@ function createNapiModule(options) {
|
|
|
6334
7197
|
if (!result)
|
|
6335
7198
|
return envObject.setLastError(1);
|
|
6336
7199
|
var h = emnapiCtx.handleStore.get(value);
|
|
7200
|
+
result >>>= 0;
|
|
6337
7201
|
var r = h.isDataView() ? 1 : 0;
|
|
6338
7202
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6339
7203
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6359,6 +7223,7 @@ function createNapiModule(options) {
|
|
|
6359
7223
|
return envObject.setLastError(1);
|
|
6360
7224
|
var lv = emnapiCtx.handleStore.get(lhs).value;
|
|
6361
7225
|
var rv = emnapiCtx.handleStore.get(rhs).value;
|
|
7226
|
+
result >>>= 0;
|
|
6362
7227
|
r = (lv === rv) ? 1 : 0;
|
|
6363
7228
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6364
7229
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6409,6 +7274,7 @@ function createNapiModule(options) {
|
|
|
6409
7274
|
if (!result)
|
|
6410
7275
|
return envObject.setLastError(1);
|
|
6411
7276
|
var h = emnapiCtx.handleStore.get(arraybuffer);
|
|
7277
|
+
result >>>= 0;
|
|
6412
7278
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6413
7279
|
if (h.isArrayBuffer() && h.value.byteLength === 0) {
|
|
6414
7280
|
try {
|
|
@@ -6464,11 +7330,13 @@ function createNapiModule(options) {
|
|
|
6464
7330
|
});
|
|
6465
7331
|
emnapiAWST.init();
|
|
6466
7332
|
emnapiExternalMemory.init();
|
|
7333
|
+
emnapiExternalSAB.init();
|
|
6467
7334
|
emnapiString.init();
|
|
6468
7335
|
emnapiTSFN.init();
|
|
6469
7336
|
PThread.init();
|
|
6470
7337
|
napiModule.emnapi.syncMemory = $emnapiSyncMemory;
|
|
6471
7338
|
napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
|
|
7339
|
+
napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
|
|
6472
7340
|
function addImports(mod) {
|
|
6473
7341
|
var keys = Object.keys(mod);
|
|
6474
7342
|
for (var i = 0; i < keys.length; ++i) {
|
|
@@ -6723,12 +7591,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6723
7591
|
try {
|
|
6724
7592
|
if (type === 'async-worker-init') {
|
|
6725
7593
|
this.handleAfterLoad(e, () => {
|
|
6726
|
-
this.napiModule.initWorker(payload.arg);
|
|
6727
|
-
});
|
|
6728
|
-
}
|
|
6729
|
-
else if (type === 'async-work-execute') {
|
|
6730
|
-
this.handleAfterLoad(e, () => {
|
|
6731
|
-
this.napiModule.executeAsyncWork(payload.work);
|
|
7594
|
+
this.napiModule.initWorker(payload.arg, payload.func);
|
|
6732
7595
|
});
|
|
6733
7596
|
}
|
|
6734
7597
|
}
|
|
@@ -6739,7 +7602,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6739
7602
|
}
|
|
6740
7603
|
}
|
|
6741
7604
|
|
|
6742
|
-
const version = "1.
|
|
7605
|
+
const version = "1.11.1";
|
|
6743
7606
|
|
|
6744
7607
|
exports.MessageHandler = MessageHandler;
|
|
6745
7608
|
exports.createNapiModule = createNapiModule;
|