@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.f6bb72c → 0.0.0-insiders.f9216b2
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 +1043 -353
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +3 -2
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +3 -2
- package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +3 -2
- package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1096 -358
- package/node_modules/@emnapi/core/dist/emnapi-core.js +1113 -378
- package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +3 -2
- 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 +1043 -353
- 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 +17 -20
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +2 -0
- 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 -0
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +2 -0
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +17 -20
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +17 -20
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +2 -0
- 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 +17 -20
- package/node_modules/@emnapi/wasi-threads/package.json +1 -1
- package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +47 -12
- package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +20687 -20248
- package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +47 -12
- package/node_modules/@napi-rs/wasm-runtime/package.json +19 -11
- package/package.json +6 -6
- 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 +4 -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) {
|
|
@@ -120,10 +119,10 @@ function createNapiModule(options) {
|
|
|
120
119
|
if (!(instance === null || instance === void 0 ? void 0 : instance.exports))
|
|
121
120
|
throw new TypeError('Invalid wasm instance');
|
|
122
121
|
wasmInstance = instance;
|
|
123
|
-
var exports = instance.exports;
|
|
122
|
+
var exports$1 = instance.exports;
|
|
124
123
|
var module = options.module;
|
|
125
|
-
var memory = options.memory || exports.memory;
|
|
126
|
-
var table = options.table || exports.__indirect_function_table;
|
|
124
|
+
var memory = options.memory || exports$1.memory;
|
|
125
|
+
var table = options.table || exports$1.__indirect_function_table;
|
|
127
126
|
if (!(module instanceof _WebAssembly.Module))
|
|
128
127
|
throw new TypeError('Invalid wasm module');
|
|
129
128
|
if (!(memory instanceof _WebAssembly.Memory))
|
|
@@ -132,12 +131,12 @@ function createNapiModule(options) {
|
|
|
132
131
|
throw new TypeError('Invalid wasm table');
|
|
133
132
|
wasmMemory = memory;
|
|
134
133
|
wasmTable = table;
|
|
135
|
-
if (typeof exports.malloc !== 'function')
|
|
134
|
+
if (typeof exports$1.malloc !== 'function')
|
|
136
135
|
throw new TypeError('malloc is not exported');
|
|
137
|
-
if (typeof exports.free !== 'function')
|
|
136
|
+
if (typeof exports$1.free !== 'function')
|
|
138
137
|
throw new TypeError('free is not exported');
|
|
139
|
-
_malloc = exports.malloc;
|
|
140
|
-
_free = exports.free;
|
|
138
|
+
_malloc = exports$1.malloc;
|
|
139
|
+
_free = exports$1.free;
|
|
141
140
|
if (!napiModule.childThread) {
|
|
142
141
|
var moduleApiVersion = 8;
|
|
143
142
|
var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1;
|
|
@@ -148,11 +147,11 @@ function createNapiModule(options) {
|
|
|
148
147
|
var scope_1 = emnapiCtx.openScope(envObject);
|
|
149
148
|
try {
|
|
150
149
|
envObject.callIntoModule(function (_envObject) {
|
|
151
|
-
var exports = napiModule.exports;
|
|
152
|
-
var exportsHandle = scope_1.add(exports);
|
|
150
|
+
var exports$1 = napiModule.exports;
|
|
151
|
+
var exportsHandle = scope_1.add(exports$1);
|
|
153
152
|
var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1;
|
|
154
153
|
var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id);
|
|
155
|
-
napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
|
|
154
|
+
napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value;
|
|
156
155
|
});
|
|
157
156
|
}
|
|
158
157
|
catch (e) {
|
|
@@ -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,29 +856,58 @@ 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
913
|
PThread.runningWorkers.forEach(emnapiTSFN.addListener);
|
|
@@ -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(wasmMemory.buffer), pendng >>> 2) !== 0) {
|
|
936
|
+
emnapiTSFN.enqueue(payload.tsfn);
|
|
937
|
+
}
|
|
890
938
|
}
|
|
891
939
|
}
|
|
892
940
|
};
|
|
@@ -913,6 +961,7 @@ function createNapiModule(options) {
|
|
|
913
961
|
var queue = _malloc(size);
|
|
914
962
|
if (!queue)
|
|
915
963
|
return false;
|
|
964
|
+
queue >>>= 0;
|
|
916
965
|
new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
|
|
917
966
|
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
918
967
|
return true;
|
|
@@ -920,6 +969,12 @@ function createNapiModule(options) {
|
|
|
920
969
|
destroyQueue: function (func) {
|
|
921
970
|
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
922
971
|
if (queue) {
|
|
972
|
+
var node = emnapiTSFN.loadSizeTypeValue(queue, false);
|
|
973
|
+
while (node !== 0) {
|
|
974
|
+
var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
|
|
975
|
+
_free(node);
|
|
976
|
+
node = next;
|
|
977
|
+
}
|
|
923
978
|
_free(queue);
|
|
924
979
|
}
|
|
925
980
|
},
|
|
@@ -931,6 +986,7 @@ function createNapiModule(options) {
|
|
|
931
986
|
var node = _malloc(size);
|
|
932
987
|
if (!node)
|
|
933
988
|
throw new Error('OOM');
|
|
989
|
+
node >>>= 0;
|
|
934
990
|
emnapiTSFN.storeSizeTypeValue(node, data, false);
|
|
935
991
|
emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
|
|
936
992
|
if (head === 0 && tail === 0) {
|
|
@@ -966,11 +1022,11 @@ function createNapiModule(options) {
|
|
|
966
1022
|
var waitCondition = function () {
|
|
967
1023
|
var queueSize = emnapiTSFN.getQueueSize(func);
|
|
968
1024
|
var maxSize = emnapiTSFN.getMaxQueueSize(func);
|
|
969
|
-
|
|
970
|
-
return queueSize >= maxSize && maxSize > 0 && !isClosing;
|
|
1025
|
+
return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
|
|
971
1026
|
};
|
|
972
1027
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
973
|
-
|
|
1028
|
+
var shouldDelete = false;
|
|
1029
|
+
var ret = mutex.execute(function () {
|
|
974
1030
|
while (waitCondition()) {
|
|
975
1031
|
if (mode === 0) {
|
|
976
1032
|
return 15;
|
|
@@ -980,21 +1036,25 @@ function createNapiModule(options) {
|
|
|
980
1036
|
}
|
|
981
1037
|
cond.wait();
|
|
982
1038
|
}
|
|
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 {
|
|
1039
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
993
1040
|
emnapiTSFN.pushQueue(func, data);
|
|
994
1041
|
emnapiTSFN.send(func);
|
|
995
1042
|
return 0;
|
|
996
1043
|
}
|
|
1044
|
+
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1045
|
+
return 1;
|
|
1046
|
+
}
|
|
1047
|
+
emnapiTSFN.subThreadCount(func);
|
|
1048
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1049
|
+
return 16;
|
|
1050
|
+
}
|
|
1051
|
+
shouldDelete = true;
|
|
1052
|
+
return 16;
|
|
997
1053
|
});
|
|
1054
|
+
if (shouldDelete) {
|
|
1055
|
+
emnapiTSFN.destroy(func);
|
|
1056
|
+
}
|
|
1057
|
+
return ret;
|
|
998
1058
|
},
|
|
999
1059
|
getMutex: function (func) {
|
|
1000
1060
|
var index = func + emnapiTSFN.offset.mutex;
|
|
@@ -1004,7 +1064,7 @@ function createNapiModule(options) {
|
|
|
1004
1064
|
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
1005
1065
|
if (isBrowserMain) {
|
|
1006
1066
|
while (true) {
|
|
1007
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1067
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1008
1068
|
if (oldValue === 0) {
|
|
1009
1069
|
return;
|
|
1010
1070
|
}
|
|
@@ -1012,18 +1072,18 @@ function createNapiModule(options) {
|
|
|
1012
1072
|
}
|
|
1013
1073
|
else {
|
|
1014
1074
|
while (true) {
|
|
1015
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1075
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1016
1076
|
if (oldValue === 0) {
|
|
1017
1077
|
return;
|
|
1018
1078
|
}
|
|
1019
|
-
Atomics.wait(i32a, 0,
|
|
1079
|
+
Atomics.wait(i32a, 0, 10);
|
|
1020
1080
|
}
|
|
1021
1081
|
}
|
|
1022
1082
|
},
|
|
1023
1083
|
unlock: function () {
|
|
1024
1084
|
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
1025
|
-
var oldValue = Atomics.compareExchange(i32a, 0,
|
|
1026
|
-
if (oldValue !==
|
|
1085
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1086
|
+
if (oldValue !== 10) {
|
|
1027
1087
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
1028
1088
|
}
|
|
1029
1089
|
Atomics.notify(i32a, 0, 1);
|
|
@@ -1066,14 +1126,14 @@ function createNapiModule(options) {
|
|
|
1066
1126
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1067
1127
|
var arr, index;
|
|
1068
1128
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1069
|
-
index = (func + offset)
|
|
1129
|
+
index = (func + offset) >>> 2;
|
|
1070
1130
|
Atomics.add(arr, index, 1);
|
|
1071
1131
|
},
|
|
1072
1132
|
subQueueSize: function (func) {
|
|
1073
1133
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1074
1134
|
var arr, index;
|
|
1075
1135
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1076
|
-
index = (func + offset)
|
|
1136
|
+
index = (func + offset) >>> 2;
|
|
1077
1137
|
Atomics.sub(arr, index, 1);
|
|
1078
1138
|
},
|
|
1079
1139
|
getThreadCount: function (func) {
|
|
@@ -1083,30 +1143,30 @@ function createNapiModule(options) {
|
|
|
1083
1143
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1084
1144
|
var arr, index;
|
|
1085
1145
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1086
|
-
index = (func + offset)
|
|
1146
|
+
index = (func + offset) >>> 2;
|
|
1087
1147
|
Atomics.add(arr, index, 1);
|
|
1088
1148
|
},
|
|
1089
1149
|
subThreadCount: function (func) {
|
|
1090
1150
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1091
1151
|
var arr, index;
|
|
1092
1152
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1093
|
-
index = (func + offset)
|
|
1153
|
+
index = (func + offset) >>> 2;
|
|
1094
1154
|
Atomics.sub(arr, index, 1);
|
|
1095
1155
|
},
|
|
1096
|
-
|
|
1097
|
-
return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.
|
|
1156
|
+
getState: function (func) {
|
|
1157
|
+
return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2);
|
|
1098
1158
|
},
|
|
1099
|
-
|
|
1100
|
-
Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.
|
|
1159
|
+
setState: function (func, value) {
|
|
1160
|
+
Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2, value);
|
|
1101
1161
|
},
|
|
1102
1162
|
getHandlesClosing: function (func) {
|
|
1103
|
-
return Atomics.load(new
|
|
1163
|
+
return Atomics.load(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing));
|
|
1104
1164
|
},
|
|
1105
1165
|
setHandlesClosing: function (func, value) {
|
|
1106
|
-
Atomics.store(new
|
|
1166
|
+
Atomics.store(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing), value);
|
|
1107
1167
|
},
|
|
1108
1168
|
getDispatchState: function (func) {
|
|
1109
|
-
return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state)
|
|
1169
|
+
return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
|
|
1110
1170
|
},
|
|
1111
1171
|
getContext: function (func) {
|
|
1112
1172
|
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
@@ -1137,12 +1197,12 @@ function createNapiModule(options) {
|
|
|
1137
1197
|
var arr;
|
|
1138
1198
|
if (unsigned) {
|
|
1139
1199
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1140
|
-
ret = Atomics.load(arr, offset
|
|
1200
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1141
1201
|
return ret;
|
|
1142
1202
|
}
|
|
1143
1203
|
else {
|
|
1144
1204
|
arr = new Int32Array(wasmMemory.buffer);
|
|
1145
|
-
ret = Atomics.load(arr, offset
|
|
1205
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1146
1206
|
return ret;
|
|
1147
1207
|
}
|
|
1148
1208
|
},
|
|
@@ -1150,52 +1210,80 @@ function createNapiModule(options) {
|
|
|
1150
1210
|
var arr;
|
|
1151
1211
|
if (unsigned) {
|
|
1152
1212
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1153
|
-
Atomics.store(arr, offset
|
|
1213
|
+
Atomics.store(arr, offset >>> 2, value);
|
|
1154
1214
|
return undefined;
|
|
1155
1215
|
}
|
|
1156
1216
|
else {
|
|
1157
1217
|
arr = new Int32Array(wasmMemory.buffer);
|
|
1158
|
-
Atomics.store(arr, offset
|
|
1218
|
+
Atomics.store(arr, offset >>> 2, value >>> 0);
|
|
1159
1219
|
return undefined;
|
|
1160
1220
|
}
|
|
1161
1221
|
},
|
|
1222
|
+
releaseResources: function (func) {
|
|
1223
|
+
if (emnapiTSFN.getState(func) !== 2) {
|
|
1224
|
+
emnapiTSFN.setState(func, 2);
|
|
1225
|
+
var env = emnapiTSFN.getEnv(func);
|
|
1226
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
1227
|
+
var ref = emnapiTSFN.getRef(func);
|
|
1228
|
+
if (ref) {
|
|
1229
|
+
emnapiCtx.refStore.get(ref).dispose();
|
|
1230
|
+
}
|
|
1231
|
+
var resource = emnapiTSFN.getResource(func);
|
|
1232
|
+
emnapiCtx.refStore.get(resource).dispose();
|
|
1233
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1234
|
+
HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
|
|
1235
|
+
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1236
|
+
envObject.unref();
|
|
1237
|
+
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
|
|
1238
|
+
var arr = new Uint32Array(wasmMemory.buffer);
|
|
1239
|
+
if (Atomics.load(arr, asyncRefOffset) > 0) {
|
|
1240
|
+
Atomics.store(arr, asyncRefOffset, 0);
|
|
1241
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1242
|
+
}
|
|
1243
|
+
if (emnapiNodeBinding) {
|
|
1244
|
+
var view = new DataView(wasmMemory.buffer);
|
|
1245
|
+
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1246
|
+
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1247
|
+
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
},
|
|
1162
1251
|
destroy: function (func) {
|
|
1252
|
+
emnapiTSFN._liveSet.delete(func);
|
|
1163
1253
|
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
|
-
}
|
|
1254
|
+
emnapiTSFN.releaseResources(func);
|
|
1186
1255
|
_free(func);
|
|
1187
1256
|
},
|
|
1188
|
-
|
|
1257
|
+
emptyQueue: function (func) {
|
|
1258
|
+
var drainQueue = [];
|
|
1259
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1260
|
+
while (emnapiTSFN.getQueueSize(func) > 0) {
|
|
1261
|
+
drainQueue.push(emnapiTSFN.shiftQueue(func));
|
|
1262
|
+
}
|
|
1263
|
+
});
|
|
1189
1264
|
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
1190
1265
|
var context = emnapiTSFN.getContext(func);
|
|
1191
1266
|
var data;
|
|
1192
|
-
|
|
1193
|
-
data =
|
|
1267
|
+
for (var i = 0; i < drainQueue.length; i++) {
|
|
1268
|
+
data = drainQueue[i];
|
|
1194
1269
|
if (callJsCb) {
|
|
1195
1270
|
(wasmTable.get(callJsCb))(0, 0, context, data);
|
|
1196
1271
|
}
|
|
1197
1272
|
}
|
|
1198
|
-
|
|
1273
|
+
},
|
|
1274
|
+
maybeDelete: function (func) {
|
|
1275
|
+
var shouldDelete = false;
|
|
1276
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1277
|
+
if (emnapiTSFN.getThreadCount(func) > 0) {
|
|
1278
|
+
emnapiTSFN.releaseResources(func);
|
|
1279
|
+
}
|
|
1280
|
+
else {
|
|
1281
|
+
shouldDelete = true;
|
|
1282
|
+
}
|
|
1283
|
+
});
|
|
1284
|
+
if (shouldDelete) {
|
|
1285
|
+
emnapiTSFN.destroy(func);
|
|
1286
|
+
}
|
|
1199
1287
|
},
|
|
1200
1288
|
finalize: function (func) {
|
|
1201
1289
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1208,6 +1296,7 @@ function createNapiModule(options) {
|
|
|
1208
1296
|
envObject.callFinalizerInternal(0, finalize, data, context);
|
|
1209
1297
|
};
|
|
1210
1298
|
try {
|
|
1299
|
+
emnapiTSFN.emptyQueue(func);
|
|
1211
1300
|
if (finalize) {
|
|
1212
1301
|
if (emnapiNodeBinding) {
|
|
1213
1302
|
var resource = emnapiTSFN.getResource(func);
|
|
@@ -1225,7 +1314,7 @@ function createNapiModule(options) {
|
|
|
1225
1314
|
f();
|
|
1226
1315
|
}
|
|
1227
1316
|
}
|
|
1228
|
-
emnapiTSFN.
|
|
1317
|
+
emnapiTSFN.maybeDelete(func);
|
|
1229
1318
|
}
|
|
1230
1319
|
finally {
|
|
1231
1320
|
emnapiCtx.closeScope(envObject);
|
|
@@ -1241,7 +1330,7 @@ function createNapiModule(options) {
|
|
|
1241
1330
|
try {
|
|
1242
1331
|
if (set_closing) {
|
|
1243
1332
|
emnapiTSFN.getMutex(func).execute(function () {
|
|
1244
|
-
emnapiTSFN.
|
|
1333
|
+
emnapiTSFN.setState(func, 1);
|
|
1245
1334
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1246
1335
|
emnapiTSFN.getCond(func).signal();
|
|
1247
1336
|
}
|
|
@@ -1251,6 +1340,7 @@ function createNapiModule(options) {
|
|
|
1251
1340
|
return;
|
|
1252
1341
|
}
|
|
1253
1342
|
emnapiTSFN.setHandlesClosing(func, 1);
|
|
1343
|
+
Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
|
|
1254
1344
|
emnapiCtx.feature.setImmediate(function () {
|
|
1255
1345
|
emnapiTSFN.finalize(func);
|
|
1256
1346
|
});
|
|
@@ -1266,10 +1356,7 @@ function createNapiModule(options) {
|
|
|
1266
1356
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1267
1357
|
var cond = emnapiTSFN.getCond(func);
|
|
1268
1358
|
mutex.execute(function () {
|
|
1269
|
-
if (emnapiTSFN.
|
|
1270
|
-
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1271
|
-
}
|
|
1272
|
-
else {
|
|
1359
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1273
1360
|
var size = emnapiTSFN.getQueueSize(func);
|
|
1274
1361
|
if (size > 0) {
|
|
1275
1362
|
data = emnapiTSFN.shiftQueue(func);
|
|
@@ -1282,7 +1369,7 @@ function createNapiModule(options) {
|
|
|
1282
1369
|
}
|
|
1283
1370
|
if (size === 0) {
|
|
1284
1371
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1285
|
-
emnapiTSFN.
|
|
1372
|
+
emnapiTSFN.setState(func, 1);
|
|
1286
1373
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1287
1374
|
cond.signal();
|
|
1288
1375
|
}
|
|
@@ -1293,6 +1380,9 @@ function createNapiModule(options) {
|
|
|
1293
1380
|
has_more = true;
|
|
1294
1381
|
}
|
|
1295
1382
|
}
|
|
1383
|
+
else {
|
|
1384
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1385
|
+
}
|
|
1296
1386
|
});
|
|
1297
1387
|
if (popped_value) {
|
|
1298
1388
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1340,7 +1430,7 @@ function createNapiModule(options) {
|
|
|
1340
1430
|
var has_more = true;
|
|
1341
1431
|
var iterations_left = 1000;
|
|
1342
1432
|
var ui32a = new Uint32Array(wasmMemory.buffer);
|
|
1343
|
-
var index = (func + emnapiTSFN.offset.dispatch_state)
|
|
1433
|
+
var index = (func + emnapiTSFN.offset.dispatch_state) >>> 2;
|
|
1344
1434
|
while (has_more && --iterations_left !== 0) {
|
|
1345
1435
|
Atomics.store(ui32a, index, 1);
|
|
1346
1436
|
has_more = emnapiTSFN.dispatchOne(func);
|
|
@@ -1352,25 +1442,65 @@ function createNapiModule(options) {
|
|
|
1352
1442
|
emnapiTSFN.send(func);
|
|
1353
1443
|
}
|
|
1354
1444
|
},
|
|
1355
|
-
|
|
1356
|
-
var
|
|
1357
|
-
|
|
1445
|
+
enqueue: function (func) {
|
|
1446
|
+
var pending = func + emnapiTSFN.offset.async_pending;
|
|
1447
|
+
var scheduled = func + emnapiTSFN.offset.async_u_fd;
|
|
1448
|
+
var i32a = new Int32Array(wasmMemory.buffer);
|
|
1449
|
+
if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
|
|
1358
1450
|
return;
|
|
1359
1451
|
}
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1452
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1453
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1454
|
+
return;
|
|
1455
|
+
}
|
|
1456
|
+
if (Atomics.load(i32a, pending >>> 2) === 0) {
|
|
1457
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1458
|
+
return;
|
|
1459
|
+
}
|
|
1460
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1461
|
+
try {
|
|
1462
|
+
if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
|
|
1463
|
+
return;
|
|
1464
|
+
}
|
|
1465
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1466
|
+
return;
|
|
1467
|
+
}
|
|
1468
|
+
emnapiTSFN.dispatch(func);
|
|
1469
|
+
}
|
|
1470
|
+
finally {
|
|
1471
|
+
if (emnapiTSFN._liveSet.has(func)) {
|
|
1472
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1473
|
+
if (Atomics.load(i32a, pending >>> 2) !== 0) {
|
|
1474
|
+
emnapiTSFN.enqueue(func);
|
|
1475
|
+
}
|
|
1366
1476
|
}
|
|
1367
1477
|
}
|
|
1368
1478
|
});
|
|
1479
|
+
});
|
|
1480
|
+
},
|
|
1481
|
+
send: function (func) {
|
|
1482
|
+
var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2, 1 << 1);
|
|
1483
|
+
if ((current_state & 1) === 1) {
|
|
1484
|
+
return;
|
|
1369
1485
|
}
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1486
|
+
var pendng = func + emnapiTSFN.offset.async_pending;
|
|
1487
|
+
if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) {
|
|
1488
|
+
return;
|
|
1489
|
+
}
|
|
1490
|
+
if (Atomics.exchange(new Int32Array(wasmMemory.buffer), pendng >>> 2, 1) === 0) {
|
|
1491
|
+
if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
|
|
1492
|
+
postMessage({
|
|
1493
|
+
__emnapi__: {
|
|
1494
|
+
type: 'tsfn-send',
|
|
1495
|
+
payload: {
|
|
1496
|
+
tsfn: func
|
|
1497
|
+
}
|
|
1498
|
+
}
|
|
1499
|
+
});
|
|
1500
|
+
}
|
|
1501
|
+
else {
|
|
1502
|
+
emnapiTSFN.enqueue(func);
|
|
1503
|
+
}
|
|
1374
1504
|
}
|
|
1375
1505
|
}
|
|
1376
1506
|
};
|
|
@@ -1381,6 +1511,13 @@ function createNapiModule(options) {
|
|
|
1381
1511
|
envObject.checkGCAccess();
|
|
1382
1512
|
if (!async_resource_name)
|
|
1383
1513
|
return envObject.setLastError(1);
|
|
1514
|
+
max_queue_size >>>= 0;
|
|
1515
|
+
initial_thread_count >>>= 0;
|
|
1516
|
+
env >>>= 0;
|
|
1517
|
+
thread_finalize_data >>>= 0;
|
|
1518
|
+
thread_finalize_cb >>>= 0;
|
|
1519
|
+
context >>>= 0;
|
|
1520
|
+
call_js_cb >>>= 0;
|
|
1384
1521
|
max_queue_size = max_queue_size >>> 0;
|
|
1385
1522
|
initial_thread_count = initial_thread_count >>> 0;
|
|
1386
1523
|
if (initial_thread_count === 0) {
|
|
@@ -1389,6 +1526,7 @@ function createNapiModule(options) {
|
|
|
1389
1526
|
if (!result)
|
|
1390
1527
|
return envObject.setLastError(1);
|
|
1391
1528
|
var ref = 0;
|
|
1529
|
+
func >>>= 0;
|
|
1392
1530
|
if (!func) {
|
|
1393
1531
|
if (!call_js_cb)
|
|
1394
1532
|
return envObject.setLastError(1);
|
|
@@ -1418,21 +1556,23 @@ function createNapiModule(options) {
|
|
|
1418
1556
|
}
|
|
1419
1557
|
asyncResourceName = String(asyncResourceName);
|
|
1420
1558
|
var resource_name = envObject.ensureHandleId(asyncResourceName);
|
|
1421
|
-
var sizeofTSFN = emnapiTSFN.offset.
|
|
1559
|
+
var sizeofTSFN = emnapiTSFN.offset.__size__;
|
|
1422
1560
|
var tsfn = _malloc(sizeofTSFN);
|
|
1423
1561
|
if (!tsfn)
|
|
1424
1562
|
return envObject.setLastError(9);
|
|
1563
|
+
tsfn >>>= 0;
|
|
1425
1564
|
new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
1426
1565
|
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
|
|
1427
1566
|
var resource_ = resourceRef.id;
|
|
1428
1567
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1429
|
-
HEAP_DATA_VIEW.setUint32(tsfn, resource_, true);
|
|
1568
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
|
|
1430
1569
|
if (!emnapiTSFN.initQueue(tsfn)) {
|
|
1431
1570
|
_free(tsfn);
|
|
1432
1571
|
resourceRef.dispose();
|
|
1433
1572
|
return envObject.setLastError(9);
|
|
1434
1573
|
}
|
|
1435
1574
|
_emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
|
|
1575
|
+
HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
|
|
1436
1576
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
|
|
1437
1577
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
|
|
1438
1578
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
|
|
@@ -1442,9 +1582,11 @@ function createNapiModule(options) {
|
|
|
1442
1582
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
|
|
1443
1583
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
|
|
1444
1584
|
emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
|
|
1585
|
+
emnapiTSFN._liveSet.add(tsfn);
|
|
1445
1586
|
envObject.ref();
|
|
1446
1587
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1447
|
-
HEAP_DATA_VIEW.
|
|
1588
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
|
|
1589
|
+
result >>>= 0;
|
|
1448
1590
|
HEAP_DATA_VIEW.setUint32(result, tsfn, true);
|
|
1449
1591
|
return envObject.clearLastError();
|
|
1450
1592
|
}
|
|
@@ -1453,6 +1595,8 @@ function createNapiModule(options) {
|
|
|
1453
1595
|
abort();
|
|
1454
1596
|
return 1;
|
|
1455
1597
|
}
|
|
1598
|
+
func >>>= 0;
|
|
1599
|
+
result >>>= 0;
|
|
1456
1600
|
var context = emnapiTSFN.getContext(func);
|
|
1457
1601
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1458
1602
|
HEAP_DATA_VIEW.setUint32(result, context, true);
|
|
@@ -1463,6 +1607,8 @@ function createNapiModule(options) {
|
|
|
1463
1607
|
abort();
|
|
1464
1608
|
return 1;
|
|
1465
1609
|
}
|
|
1610
|
+
func >>>= 0;
|
|
1611
|
+
data >>>= 0;
|
|
1466
1612
|
return emnapiTSFN.push(func, data, mode);
|
|
1467
1613
|
}
|
|
1468
1614
|
function napi_acquire_threadsafe_function(func) {
|
|
@@ -1470,13 +1616,14 @@ function createNapiModule(options) {
|
|
|
1470
1616
|
abort();
|
|
1471
1617
|
return 1;
|
|
1472
1618
|
}
|
|
1619
|
+
func >>>= 0;
|
|
1473
1620
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1474
1621
|
return mutex.execute(function () {
|
|
1475
|
-
if (emnapiTSFN.
|
|
1476
|
-
|
|
1622
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1623
|
+
emnapiTSFN.addThreadCount(func);
|
|
1624
|
+
return 0;
|
|
1477
1625
|
}
|
|
1478
|
-
|
|
1479
|
-
return 0;
|
|
1626
|
+
return 16;
|
|
1480
1627
|
});
|
|
1481
1628
|
}
|
|
1482
1629
|
function napi_release_threadsafe_function(func, mode) {
|
|
@@ -1484,37 +1631,51 @@ function createNapiModule(options) {
|
|
|
1484
1631
|
abort();
|
|
1485
1632
|
return 1;
|
|
1486
1633
|
}
|
|
1634
|
+
func >>>= 0;
|
|
1487
1635
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1488
1636
|
var cond = emnapiTSFN.getCond(func);
|
|
1489
|
-
|
|
1637
|
+
var shouldDelete = false;
|
|
1638
|
+
var ret = mutex.execute(function () {
|
|
1490
1639
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1491
1640
|
return 1;
|
|
1492
1641
|
}
|
|
1493
1642
|
emnapiTSFN.subThreadCount(func);
|
|
1494
1643
|
if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
if (
|
|
1644
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1645
|
+
if (mode === 1) {
|
|
1646
|
+
emnapiTSFN.setState(func, 1);
|
|
1647
|
+
}
|
|
1648
|
+
if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1500
1649
|
cond.signal();
|
|
1501
1650
|
}
|
|
1502
1651
|
emnapiTSFN.send(func);
|
|
1503
1652
|
}
|
|
1504
1653
|
}
|
|
1654
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1655
|
+
return 0;
|
|
1656
|
+
}
|
|
1657
|
+
shouldDelete = true;
|
|
1505
1658
|
return 0;
|
|
1506
1659
|
});
|
|
1660
|
+
if (shouldDelete) {
|
|
1661
|
+
emnapiTSFN.destroy(func);
|
|
1662
|
+
}
|
|
1663
|
+
return ret;
|
|
1507
1664
|
}
|
|
1508
1665
|
function napi_unref_threadsafe_function(env, func) {
|
|
1509
1666
|
if (!func) {
|
|
1510
1667
|
abort();
|
|
1511
1668
|
return 1;
|
|
1512
1669
|
}
|
|
1513
|
-
|
|
1514
|
-
var
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1670
|
+
func >>>= 0;
|
|
1671
|
+
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
|
|
1672
|
+
var arr = new Uint32Array(wasmMemory.buffer);
|
|
1673
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1674
|
+
if (currentValue > 0) {
|
|
1675
|
+
Atomics.store(arr, asyncRefOffset, currentValue - 1);
|
|
1676
|
+
if (currentValue === 1) {
|
|
1677
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1678
|
+
}
|
|
1518
1679
|
}
|
|
1519
1680
|
return 0;
|
|
1520
1681
|
}
|
|
@@ -1523,34 +1684,57 @@ function createNapiModule(options) {
|
|
|
1523
1684
|
abort();
|
|
1524
1685
|
return 1;
|
|
1525
1686
|
}
|
|
1526
|
-
|
|
1527
|
-
var
|
|
1528
|
-
|
|
1529
|
-
|
|
1687
|
+
func >>>= 0;
|
|
1688
|
+
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
|
|
1689
|
+
var arr = new Uint32Array(wasmMemory.buffer);
|
|
1690
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1691
|
+
if (!currentValue) {
|
|
1530
1692
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1531
1693
|
}
|
|
1694
|
+
Atomics.store(arr, asyncRefOffset, currentValue + 1);
|
|
1532
1695
|
return 0;
|
|
1533
1696
|
}
|
|
1534
1697
|
var emnapiAWMT = {
|
|
1535
|
-
|
|
1536
|
-
runningWorkers: [],
|
|
1537
|
-
workQueue: [],
|
|
1698
|
+
pool: [],
|
|
1538
1699
|
workerReady: null,
|
|
1700
|
+
globalAddress: 0,
|
|
1701
|
+
globalOffset: {
|
|
1702
|
+
idle_threads: 0,
|
|
1703
|
+
q: 1 * 4,
|
|
1704
|
+
next: 1 * 4,
|
|
1705
|
+
prev: 2 * 4,
|
|
1706
|
+
mutex: 3 * 4,
|
|
1707
|
+
cond: 4 * 4,
|
|
1708
|
+
exit_message: 5 * 4,
|
|
1709
|
+
end: 7 * 4
|
|
1710
|
+
},
|
|
1539
1711
|
offset: {
|
|
1540
1712
|
resource: 0,
|
|
1541
1713
|
async_id: 8,
|
|
1542
1714
|
trigger_async_id: 16,
|
|
1543
1715
|
env: 24,
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1716
|
+
status: 1 * 4 + 24,
|
|
1717
|
+
queue: 2 * 4 + 24,
|
|
1718
|
+
queue_next: 2 * 4 + 24,
|
|
1719
|
+
queue_prev: 3 * 4 + 24,
|
|
1720
|
+
data: 4 * 4 + 24,
|
|
1721
|
+
execute: 5 * 4 + 24,
|
|
1722
|
+
complete: 6 * 4 + 24,
|
|
1723
|
+
end: 7 * 4 + 24
|
|
1548
1724
|
},
|
|
1549
1725
|
init: function () {
|
|
1550
|
-
emnapiAWMT.
|
|
1551
|
-
emnapiAWMT.runningWorkers = [];
|
|
1552
|
-
emnapiAWMT.workQueue = [];
|
|
1726
|
+
emnapiAWMT.pool = [];
|
|
1553
1727
|
emnapiAWMT.workerReady = null;
|
|
1728
|
+
if (typeof PThread !== 'undefined') {
|
|
1729
|
+
PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
|
|
1730
|
+
PThread.runningWorkers.forEach(emnapiAWMT.addListener);
|
|
1731
|
+
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
1732
|
+
PThread.getNewWorker = function () {
|
|
1733
|
+
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
1734
|
+
emnapiAWMT.addListener(r);
|
|
1735
|
+
return r;
|
|
1736
|
+
};
|
|
1737
|
+
}
|
|
1554
1738
|
},
|
|
1555
1739
|
addListener: function (worker) {
|
|
1556
1740
|
if (!worker)
|
|
@@ -1564,18 +1748,8 @@ function createNapiModule(options) {
|
|
|
1564
1748
|
var type = __emnapi__.type;
|
|
1565
1749
|
var payload = __emnapi__.payload;
|
|
1566
1750
|
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
1751
|
emnapiAWMT.callComplete(payload.work, 0);
|
|
1572
1752
|
}
|
|
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
1753
|
}
|
|
1580
1754
|
};
|
|
1581
1755
|
var dispose = function () {
|
|
@@ -1596,142 +1770,221 @@ function createNapiModule(options) {
|
|
|
1596
1770
|
}
|
|
1597
1771
|
return true;
|
|
1598
1772
|
},
|
|
1773
|
+
initGlobal: function () {
|
|
1774
|
+
if (!emnapiAWMT.globalAddress) {
|
|
1775
|
+
emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
|
|
1776
|
+
emnapiAWMT.globalAddress >>>= 0;
|
|
1777
|
+
var size = emnapiAWMT.globalOffset.end;
|
|
1778
|
+
var addr = emnapiAWMT.globalAddress;
|
|
1779
|
+
new Uint8Array(wasmMemory.buffer, addr, size).fill(0);
|
|
1780
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
|
|
1781
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
|
|
1782
|
+
}
|
|
1783
|
+
},
|
|
1784
|
+
terminateWorkers: function () {
|
|
1785
|
+
emnapiAWMT.pool.forEach(function (w) {
|
|
1786
|
+
var _a, _b;
|
|
1787
|
+
(_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
1788
|
+
(_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
1789
|
+
w.terminate();
|
|
1790
|
+
});
|
|
1791
|
+
emnapiAWMT.pool.length = 0;
|
|
1792
|
+
},
|
|
1599
1793
|
initWorkers: function (n) {
|
|
1600
1794
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
1601
1795
|
return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
|
|
1602
1796
|
}
|
|
1603
1797
|
if (emnapiAWMT.workerReady)
|
|
1604
1798
|
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
1799
|
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
1611
1800
|
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
1612
1801
|
}
|
|
1802
|
+
var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
|
|
1803
|
+
var args = [];
|
|
1804
|
+
emnapiAWMT.initGlobal();
|
|
1613
1805
|
for (var i = 0; i < n; ++i) {
|
|
1614
|
-
args.push(
|
|
1806
|
+
args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
|
|
1615
1807
|
}
|
|
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);
|
|
1808
|
+
var promises = args.map(function (index) {
|
|
1809
|
+
if (index === 0) {
|
|
1810
|
+
return Promise.reject(new Error('Failed to create async worker'));
|
|
1638
1811
|
}
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1812
|
+
var worker;
|
|
1813
|
+
if (index < 0) {
|
|
1814
|
+
worker = emnapiAWMT.pool[-index - 1];
|
|
1815
|
+
if (worker)
|
|
1816
|
+
return worker.whenLoaded;
|
|
1644
1817
|
}
|
|
1645
|
-
|
|
1646
|
-
|
|
1818
|
+
index >>>= 0;
|
|
1819
|
+
var view = new DataView(wasmMemory.buffer);
|
|
1820
|
+
var tidOffset = 20;
|
|
1821
|
+
var tid = view.getInt32(index + tidOffset, true);
|
|
1822
|
+
worker = PThread.pthreads[tid];
|
|
1823
|
+
return worker.whenLoaded;
|
|
1824
|
+
});
|
|
1647
1825
|
emnapiAWMT.workerReady = Promise.all(promises);
|
|
1648
1826
|
return emnapiAWMT.workerReady;
|
|
1649
1827
|
},
|
|
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
1828
|
getResource: function (work) {
|
|
1664
|
-
|
|
1829
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1830
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
|
|
1665
1831
|
},
|
|
1666
1832
|
getExecute: function (work) {
|
|
1667
|
-
|
|
1833
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1834
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
|
|
1668
1835
|
},
|
|
1669
1836
|
getComplete: function (work) {
|
|
1670
|
-
|
|
1837
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1838
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
|
|
1671
1839
|
},
|
|
1672
1840
|
getEnv: function (work) {
|
|
1673
|
-
|
|
1841
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1842
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
|
|
1674
1843
|
},
|
|
1675
1844
|
getData: function (work) {
|
|
1676
|
-
|
|
1845
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1846
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
|
|
1847
|
+
},
|
|
1848
|
+
getMutex: function () {
|
|
1849
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
|
|
1850
|
+
var mutex = {
|
|
1851
|
+
lock: function () {
|
|
1852
|
+
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1853
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
1854
|
+
if (isBrowserMain) {
|
|
1855
|
+
while (true) {
|
|
1856
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1857
|
+
if (oldValue === 0) {
|
|
1858
|
+
return;
|
|
1859
|
+
}
|
|
1860
|
+
}
|
|
1861
|
+
}
|
|
1862
|
+
else {
|
|
1863
|
+
while (true) {
|
|
1864
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1865
|
+
if (oldValue === 0) {
|
|
1866
|
+
return;
|
|
1867
|
+
}
|
|
1868
|
+
Atomics.wait(i32a, 0, 10);
|
|
1869
|
+
}
|
|
1870
|
+
}
|
|
1871
|
+
},
|
|
1872
|
+
unlock: function () {
|
|
1873
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
1874
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1875
|
+
if (oldValue !== 10) {
|
|
1876
|
+
throw new Error('Tried to unlock while not holding the mutex');
|
|
1877
|
+
}
|
|
1878
|
+
Atomics.notify(i32a, 0, 1);
|
|
1879
|
+
},
|
|
1880
|
+
execute: function (fn) {
|
|
1881
|
+
mutex.lock();
|
|
1882
|
+
try {
|
|
1883
|
+
return fn();
|
|
1884
|
+
}
|
|
1885
|
+
finally {
|
|
1886
|
+
mutex.unlock();
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
};
|
|
1890
|
+
return mutex;
|
|
1891
|
+
},
|
|
1892
|
+
getCond: function () {
|
|
1893
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
|
|
1894
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1895
|
+
var cond = {
|
|
1896
|
+
wait: function () {
|
|
1897
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
1898
|
+
var value = Atomics.load(i32a, 0);
|
|
1899
|
+
mutex.unlock();
|
|
1900
|
+
Atomics.wait(i32a, 0, value);
|
|
1901
|
+
mutex.lock();
|
|
1902
|
+
},
|
|
1903
|
+
signal: function () {
|
|
1904
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
1905
|
+
Atomics.add(i32a, 0, 1);
|
|
1906
|
+
Atomics.notify(i32a, 0, 1);
|
|
1907
|
+
}
|
|
1908
|
+
};
|
|
1909
|
+
return cond;
|
|
1910
|
+
},
|
|
1911
|
+
queueInit: function (q) {
|
|
1912
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1913
|
+
HEAP_DATA_VIEW.setUint32(q, q, true);
|
|
1914
|
+
HEAP_DATA_VIEW.setUint32(q + 4, q, true);
|
|
1915
|
+
},
|
|
1916
|
+
queueInsertTail: function (h, q) {
|
|
1917
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1918
|
+
HEAP_DATA_VIEW.setUint32(q, h, true);
|
|
1919
|
+
var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
|
|
1920
|
+
HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
|
|
1921
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1922
|
+
HEAP_DATA_VIEW.setUint32(qprev, q, true);
|
|
1923
|
+
HEAP_DATA_VIEW.setUint32(h + 4, q, true);
|
|
1924
|
+
},
|
|
1925
|
+
queueRemove: function (q) {
|
|
1926
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1927
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1928
|
+
var qnext = HEAP_DATA_VIEW.getUint32(q, true);
|
|
1929
|
+
HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
|
|
1930
|
+
HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
|
|
1931
|
+
},
|
|
1932
|
+
queueEmpty: function (q) {
|
|
1933
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1934
|
+
return q == HEAP_DATA_VIEW.getUint32(q, true);
|
|
1677
1935
|
},
|
|
1678
1936
|
scheduleWork: function (work) {
|
|
1679
1937
|
var _a;
|
|
1680
|
-
if (
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
}
|
|
1938
|
+
if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
|
|
1939
|
+
emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
|
|
1940
|
+
emnapiAWMT.workerReady.ready = true;
|
|
1941
|
+
}).catch(function (err) {
|
|
1942
|
+
emnapiAWMT.workerReady = null;
|
|
1943
|
+
throw err;
|
|
1687
1944
|
});
|
|
1688
|
-
return;
|
|
1689
1945
|
}
|
|
1690
1946
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1691
|
-
emnapiAWMT.
|
|
1692
|
-
|
|
1693
|
-
|
|
1947
|
+
var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
|
|
1948
|
+
Atomics.store(statusBuffer, 0, 0);
|
|
1949
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1950
|
+
var cond = emnapiAWMT.getCond();
|
|
1951
|
+
mutex.lock();
|
|
1952
|
+
try {
|
|
1953
|
+
emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
|
|
1694
1954
|
}
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
emnapiAWMT.checkIdleWorker();
|
|
1704
|
-
}, fail);
|
|
1705
|
-
}
|
|
1706
|
-
catch (err) {
|
|
1707
|
-
fail(err);
|
|
1708
|
-
}
|
|
1955
|
+
catch (err) {
|
|
1956
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1957
|
+
mutex.unlock();
|
|
1958
|
+
throw err;
|
|
1959
|
+
}
|
|
1960
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1961
|
+
if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
|
|
1962
|
+
cond.signal();
|
|
1709
1963
|
}
|
|
1964
|
+
mutex.unlock();
|
|
1710
1965
|
},
|
|
1711
1966
|
cancelWork: function (work) {
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1967
|
+
var cancelled = false;
|
|
1968
|
+
emnapiAWMT.getMutex().execute(function () {
|
|
1969
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1970
|
+
cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
|
|
1971
|
+
if (cancelled) {
|
|
1972
|
+
emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
|
|
1973
|
+
}
|
|
1974
|
+
});
|
|
1975
|
+
if (!cancelled) {
|
|
1976
|
+
return 9;
|
|
1721
1977
|
}
|
|
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;
|
|
1978
|
+
if (Atomics.compareExchange(new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
|
|
1979
|
+
return 9;
|
|
1731
1980
|
}
|
|
1732
|
-
|
|
1981
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1982
|
+
emnapiAWMT.callComplete(work, 11);
|
|
1983
|
+
});
|
|
1984
|
+
return 0;
|
|
1733
1985
|
},
|
|
1734
1986
|
callComplete: function (work, status) {
|
|
1987
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1735
1988
|
var complete = emnapiAWMT.getComplete(work);
|
|
1736
1989
|
var env = emnapiAWMT.getEnv(work);
|
|
1737
1990
|
var data = emnapiAWMT.getData(work);
|
|
@@ -1766,6 +2019,7 @@ function createNapiModule(options) {
|
|
|
1766
2019
|
}
|
|
1767
2020
|
}
|
|
1768
2021
|
};
|
|
2022
|
+
emnapiAWMT.init();
|
|
1769
2023
|
var napi_create_async_work = singleThreadAsyncWork
|
|
1770
2024
|
? function (env, resource, resource_name, execute, complete, data, result) {
|
|
1771
2025
|
if (!env)
|
|
@@ -1787,6 +2041,7 @@ function createNapiModule(options) {
|
|
|
1787
2041
|
return envObject.setLastError(1);
|
|
1788
2042
|
var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
|
|
1789
2043
|
var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
|
|
2044
|
+
result >>>= 0;
|
|
1790
2045
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1791
2046
|
HEAP_DATA_VIEW.setUint32(result, id, true);
|
|
1792
2047
|
return envObject.clearLastError();
|
|
@@ -1813,6 +2068,7 @@ function createNapiModule(options) {
|
|
|
1813
2068
|
var aw = _malloc(sizeofAW);
|
|
1814
2069
|
if (!aw)
|
|
1815
2070
|
return envObject.setLastError(9);
|
|
2071
|
+
aw >>>= 0;
|
|
1816
2072
|
new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
|
|
1817
2073
|
var s = envObject.ensureHandleId(resourceObject);
|
|
1818
2074
|
var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
|
|
@@ -1824,6 +2080,8 @@ function createNapiModule(options) {
|
|
|
1824
2080
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
|
|
1825
2081
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
|
|
1826
2082
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
|
|
2083
|
+
emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
|
|
2084
|
+
result >>>= 0;
|
|
1827
2085
|
HEAP_DATA_VIEW.setUint32(result, aw, true);
|
|
1828
2086
|
return envObject.clearLastError();
|
|
1829
2087
|
};
|
|
@@ -1835,6 +2093,7 @@ function createNapiModule(options) {
|
|
|
1835
2093
|
envObject.checkGCAccess();
|
|
1836
2094
|
if (!work)
|
|
1837
2095
|
return envObject.setLastError(1);
|
|
2096
|
+
work >>>= 0;
|
|
1838
2097
|
emnapiAWST.remove(work);
|
|
1839
2098
|
return envObject.clearLastError();
|
|
1840
2099
|
}
|
|
@@ -1845,6 +2104,7 @@ function createNapiModule(options) {
|
|
|
1845
2104
|
envObject.checkGCAccess();
|
|
1846
2105
|
if (!work)
|
|
1847
2106
|
return envObject.setLastError(1);
|
|
2107
|
+
work >>>= 0;
|
|
1848
2108
|
var resource = emnapiAWMT.getResource(work);
|
|
1849
2109
|
emnapiCtx.refStore.get(resource).dispose();
|
|
1850
2110
|
if (emnapiNodeBinding) {
|
|
@@ -1863,6 +2123,7 @@ function createNapiModule(options) {
|
|
|
1863
2123
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1864
2124
|
if (!work)
|
|
1865
2125
|
return envObject.setLastError(1);
|
|
2126
|
+
work >>>= 0;
|
|
1866
2127
|
emnapiAWST.queue(work);
|
|
1867
2128
|
return envObject.clearLastError();
|
|
1868
2129
|
}
|
|
@@ -1872,6 +2133,7 @@ function createNapiModule(options) {
|
|
|
1872
2133
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1873
2134
|
if (!work)
|
|
1874
2135
|
return envObject.setLastError(1);
|
|
2136
|
+
work >>>= 0;
|
|
1875
2137
|
emnapiAWMT.scheduleWork(work);
|
|
1876
2138
|
return envObject.clearLastError();
|
|
1877
2139
|
};
|
|
@@ -1882,6 +2144,7 @@ function createNapiModule(options) {
|
|
|
1882
2144
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1883
2145
|
if (!work)
|
|
1884
2146
|
return envObject.setLastError(1);
|
|
2147
|
+
work >>>= 0;
|
|
1885
2148
|
var status = emnapiAWST.cancel(work);
|
|
1886
2149
|
if (status === 0)
|
|
1887
2150
|
return envObject.clearLastError();
|
|
@@ -1893,41 +2156,124 @@ function createNapiModule(options) {
|
|
|
1893
2156
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1894
2157
|
if (!work)
|
|
1895
2158
|
return envObject.setLastError(1);
|
|
2159
|
+
work >>>= 0;
|
|
1896
2160
|
var status = emnapiAWMT.cancelWork(work);
|
|
1897
2161
|
if (status === 0)
|
|
1898
2162
|
return envObject.clearLastError();
|
|
1899
2163
|
return envObject.setLastError(status);
|
|
1900
2164
|
};
|
|
1901
|
-
function
|
|
2165
|
+
function _emnapi_async_worker(globalAddress) {
|
|
2166
|
+
globalAddress >>>= 0;
|
|
2167
|
+
emnapiAWMT.globalAddress = globalAddress;
|
|
2168
|
+
var mutex = emnapiAWMT.getMutex();
|
|
2169
|
+
var cond = emnapiAWMT.getCond();
|
|
2170
|
+
mutex.lock();
|
|
2171
|
+
var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
|
|
2172
|
+
var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
|
|
2173
|
+
var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
|
|
2174
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2175
|
+
for (;;) {
|
|
2176
|
+
while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
|
|
2177
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
|
|
2178
|
+
cond.wait();
|
|
2179
|
+
Atomics.sub(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
|
|
2180
|
+
}
|
|
2181
|
+
var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
|
|
2182
|
+
if (q === exitMessageAddr) {
|
|
2183
|
+
cond.signal();
|
|
2184
|
+
mutex.unlock();
|
|
2185
|
+
break;
|
|
2186
|
+
}
|
|
2187
|
+
var work = q - emnapiAWMT.offset.queue;
|
|
2188
|
+
emnapiAWMT.queueRemove(q);
|
|
2189
|
+
emnapiAWMT.queueInit(q);
|
|
2190
|
+
mutex.unlock();
|
|
2191
|
+
var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
|
|
2192
|
+
if (Atomics.load(statusBuffer, 0) === 1) {
|
|
2193
|
+
abort('unreachable');
|
|
2194
|
+
}
|
|
2195
|
+
var execute = emnapiAWMT.getExecute(work);
|
|
2196
|
+
var env = emnapiAWMT.getEnv(work);
|
|
2197
|
+
var data = emnapiAWMT.getData(work);
|
|
2198
|
+
(wasmTable.get(execute))(env, data);
|
|
2199
|
+
Atomics.store(statusBuffer, 0, 2);
|
|
2200
|
+
var postMessage_1 = napiModule.postMessage;
|
|
2201
|
+
postMessage_1({
|
|
2202
|
+
__emnapi__: {
|
|
2203
|
+
type: 'async-work-complete',
|
|
2204
|
+
payload: { work: work }
|
|
2205
|
+
}
|
|
2206
|
+
});
|
|
2207
|
+
mutex.lock();
|
|
2208
|
+
}
|
|
2209
|
+
return 0;
|
|
2210
|
+
}
|
|
2211
|
+
function _emnapi_spawn_worker(f, globalAddress) {
|
|
2212
|
+
if (typeof onCreateWorker !== 'function') {
|
|
2213
|
+
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
2214
|
+
}
|
|
2215
|
+
var promises = [];
|
|
2216
|
+
var args = [];
|
|
2217
|
+
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
2218
|
+
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
2219
|
+
}
|
|
2220
|
+
args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
|
|
2221
|
+
var handleError = function (e) {
|
|
2222
|
+
if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
|
|
2223
|
+
emnapiAWMT.terminateWorkers();
|
|
2224
|
+
}
|
|
2225
|
+
};
|
|
2226
|
+
var ret;
|
|
2227
|
+
try {
|
|
2228
|
+
var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
|
|
2229
|
+
var p = PThread.loadWasmModuleToWorker(worker_1);
|
|
2230
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
2231
|
+
worker_1.on('error', handleError);
|
|
2232
|
+
}
|
|
2233
|
+
else {
|
|
2234
|
+
worker_1.addEventListener('error', handleError, false);
|
|
2235
|
+
}
|
|
2236
|
+
emnapiAWMT.addListener(worker_1);
|
|
2237
|
+
emnapiTSFN.addListener(worker_1);
|
|
2238
|
+
promises.push(p.then(function () {
|
|
2239
|
+
if (typeof worker_1.unref === 'function') {
|
|
2240
|
+
worker_1.unref();
|
|
2241
|
+
}
|
|
2242
|
+
}));
|
|
2243
|
+
ret = emnapiAWMT.pool.push(worker_1) - 1;
|
|
2244
|
+
var arg = args[0];
|
|
2245
|
+
worker_1.threadBlockBase = arg;
|
|
2246
|
+
worker_1.postMessage({
|
|
2247
|
+
__emnapi__: {
|
|
2248
|
+
type: 'async-worker-init',
|
|
2249
|
+
payload: { arg: arg, func: [f, globalAddress] }
|
|
2250
|
+
}
|
|
2251
|
+
});
|
|
2252
|
+
}
|
|
2253
|
+
catch (err) {
|
|
2254
|
+
var arg = args[0];
|
|
2255
|
+
_free(arg);
|
|
2256
|
+
throw err;
|
|
2257
|
+
}
|
|
2258
|
+
return ret;
|
|
2259
|
+
}
|
|
2260
|
+
function initWorker(startArg, func) {
|
|
1902
2261
|
if (napiModule.childThread) {
|
|
1903
2262
|
if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
|
|
1904
2263
|
throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
|
|
1905
2264
|
}
|
|
1906
2265
|
wasmInstance.exports.emnapi_async_worker_init(startArg);
|
|
2266
|
+
(wasmTable.get(func[0]))(func[1]);
|
|
1907
2267
|
}
|
|
1908
2268
|
else {
|
|
1909
2269
|
throw new Error('startThread is only available in child threads');
|
|
1910
2270
|
}
|
|
1911
2271
|
}
|
|
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
2272
|
napiModule.initWorker = initWorker;
|
|
1928
|
-
napiModule.executeAsyncWork = executeAsyncWork;
|
|
1929
2273
|
var asyncWorkMod = Object.freeze({
|
|
1930
2274
|
__proto__: null,
|
|
2275
|
+
_emnapi_async_worker: _emnapi_async_worker,
|
|
2276
|
+
_emnapi_spawn_worker: _emnapi_spawn_worker,
|
|
1931
2277
|
napi_cancel_async_work: napi_cancel_async_work,
|
|
1932
2278
|
napi_create_async_work: napi_create_async_work,
|
|
1933
2279
|
napi_delete_async_work: napi_delete_async_work,
|
|
@@ -1942,6 +2288,10 @@ function createNapiModule(options) {
|
|
|
1942
2288
|
emnapiExternalMemory.table = new WeakMap();
|
|
1943
2289
|
emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
|
|
1944
2290
|
},
|
|
2291
|
+
isSharedArrayBuffer: function (value) {
|
|
2292
|
+
return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
|
|
2293
|
+
(Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
|
|
2294
|
+
},
|
|
1945
2295
|
isDetachedArrayBuffer: function (arrayBuffer) {
|
|
1946
2296
|
if (arrayBuffer.byteLength === 0) {
|
|
1947
2297
|
try {
|
|
@@ -1984,6 +2334,7 @@ function createNapiModule(options) {
|
|
|
1984
2334
|
var pointer = _malloc(arrayBuffer.byteLength);
|
|
1985
2335
|
if (!pointer)
|
|
1986
2336
|
throw new Error('Out of memory');
|
|
2337
|
+
pointer >>>= 0;
|
|
1987
2338
|
new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
|
|
1988
2339
|
info.address = pointer;
|
|
1989
2340
|
info.ownership = emnapiExternalMemory.registry ? 0 : 1;
|
|
@@ -2005,8 +2356,7 @@ function createNapiModule(options) {
|
|
|
2005
2356
|
}
|
|
2006
2357
|
return view;
|
|
2007
2358
|
}
|
|
2008
|
-
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
|
|
2009
|
-
((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
|
|
2359
|
+
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
|
|
2010
2360
|
if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
|
|
2011
2361
|
var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
|
|
2012
2362
|
var Ctor = info.Ctor;
|
|
@@ -2139,7 +2489,7 @@ function createNapiModule(options) {
|
|
|
2139
2489
|
ptr >>>= 0;
|
|
2140
2490
|
var HEAPU8 = new Uint8Array(wasmMemory.buffer);
|
|
2141
2491
|
var end = ptr;
|
|
2142
|
-
if (length === -1) {
|
|
2492
|
+
if (length === -1 || length === 4294967295) {
|
|
2143
2493
|
for (; HEAPU8[end];)
|
|
2144
2494
|
++end;
|
|
2145
2495
|
}
|
|
@@ -2230,12 +2580,12 @@ function createNapiModule(options) {
|
|
|
2230
2580
|
return '';
|
|
2231
2581
|
ptr >>>= 0;
|
|
2232
2582
|
var end = ptr;
|
|
2233
|
-
if (length === -1) {
|
|
2234
|
-
var idx = end
|
|
2583
|
+
if (length === -1 || length === 4294967295) {
|
|
2584
|
+
var idx = end >>> 1;
|
|
2235
2585
|
var HEAPU16 = new Uint16Array(wasmMemory.buffer);
|
|
2236
2586
|
while (HEAPU16[idx])
|
|
2237
2587
|
++idx;
|
|
2238
|
-
end = idx << 1;
|
|
2588
|
+
end = (idx << 1) >>> 0;
|
|
2239
2589
|
}
|
|
2240
2590
|
else {
|
|
2241
2591
|
end = ptr + (length >>> 0) * 2;
|
|
@@ -2266,11 +2616,12 @@ function createNapiModule(options) {
|
|
|
2266
2616
|
return outPtr - startPtr;
|
|
2267
2617
|
},
|
|
2268
2618
|
newString: function (env, str, length, result, stringMaker) {
|
|
2619
|
+
length >>>= 0;
|
|
2269
2620
|
if (!env)
|
|
2270
2621
|
return 1;
|
|
2271
2622
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2272
2623
|
envObject.checkGCAccess();
|
|
2273
|
-
var autoLength = length === -1;
|
|
2624
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2274
2625
|
var sizelength = length >>> 0;
|
|
2275
2626
|
if (length !== 0) {
|
|
2276
2627
|
if (!str)
|
|
@@ -2280,18 +2631,21 @@ function createNapiModule(options) {
|
|
|
2280
2631
|
return envObject.setLastError(1);
|
|
2281
2632
|
if (!(autoLength || (sizelength <= 2147483647)))
|
|
2282
2633
|
return envObject.setLastError(1);
|
|
2634
|
+
str >>>= 0;
|
|
2283
2635
|
var strValue = stringMaker(str, autoLength, sizelength);
|
|
2636
|
+
result >>>= 0;
|
|
2284
2637
|
var value = emnapiCtx.addToCurrentScope(strValue).id;
|
|
2285
2638
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2286
2639
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
2287
2640
|
return envObject.clearLastError();
|
|
2288
2641
|
},
|
|
2289
2642
|
newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
|
|
2643
|
+
length >>>= 0;
|
|
2290
2644
|
if (!env)
|
|
2291
2645
|
return 1;
|
|
2292
2646
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2293
2647
|
envObject.checkGCAccess();
|
|
2294
|
-
var autoLength = length === -1;
|
|
2648
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2295
2649
|
var sizelength = length >>> 0;
|
|
2296
2650
|
if (length !== 0) {
|
|
2297
2651
|
if (!str)
|
|
@@ -2333,6 +2687,7 @@ function createNapiModule(options) {
|
|
|
2333
2687
|
if (!handle.isArray()) {
|
|
2334
2688
|
return envObject.setLastError(8);
|
|
2335
2689
|
}
|
|
2690
|
+
result >>>= 0;
|
|
2336
2691
|
var v = handle.value.length >>> 0;
|
|
2337
2692
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2338
2693
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2351,19 +2706,55 @@ function createNapiModule(options) {
|
|
|
2351
2706
|
if (!arraybuffer)
|
|
2352
2707
|
return envObject.setLastError(1);
|
|
2353
2708
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
2354
|
-
if (!handle.isArrayBuffer()) {
|
|
2709
|
+
if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
2355
2710
|
return envObject.setLastError(1);
|
|
2356
2711
|
}
|
|
2357
2712
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2358
2713
|
if (data) {
|
|
2714
|
+
data >>>= 0;
|
|
2359
2715
|
var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
|
|
2360
2716
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2361
2717
|
}
|
|
2362
2718
|
if (byte_length) {
|
|
2719
|
+
byte_length >>>= 0;
|
|
2363
2720
|
HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
|
|
2364
2721
|
}
|
|
2365
2722
|
return envObject.clearLastError();
|
|
2366
2723
|
}
|
|
2724
|
+
function node_api_set_prototype(env, object, value) {
|
|
2725
|
+
if (!env)
|
|
2726
|
+
return 1;
|
|
2727
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
2728
|
+
envObject.checkGCAccess();
|
|
2729
|
+
if (!envObject.tryCatch.isEmpty())
|
|
2730
|
+
return envObject.setLastError(10);
|
|
2731
|
+
if (!envObject.canCallIntoJs())
|
|
2732
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
2733
|
+
envObject.clearLastError();
|
|
2734
|
+
try {
|
|
2735
|
+
if (!value)
|
|
2736
|
+
return envObject.setLastError(1);
|
|
2737
|
+
var obj = emnapiCtx.handleStore.get(object).value;
|
|
2738
|
+
if (obj == null) {
|
|
2739
|
+
throw new TypeError('Cannot convert undefined or null to object');
|
|
2740
|
+
}
|
|
2741
|
+
var type = typeof obj;
|
|
2742
|
+
var v = void 0;
|
|
2743
|
+
try {
|
|
2744
|
+
v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
|
|
2745
|
+
}
|
|
2746
|
+
catch (_) {
|
|
2747
|
+
return envObject.setLastError(2);
|
|
2748
|
+
}
|
|
2749
|
+
var val = emnapiCtx.handleStore.get(value).value;
|
|
2750
|
+
Object.setPrototypeOf(v, val);
|
|
2751
|
+
return envObject.getReturnStatus();
|
|
2752
|
+
}
|
|
2753
|
+
catch (err) {
|
|
2754
|
+
envObject.tryCatch.setError(err);
|
|
2755
|
+
return envObject.setLastError(10);
|
|
2756
|
+
}
|
|
2757
|
+
}
|
|
2367
2758
|
function napi_get_prototype(env, value, result) {
|
|
2368
2759
|
if (!env)
|
|
2369
2760
|
return 1;
|
|
@@ -2390,6 +2781,7 @@ function createNapiModule(options) {
|
|
|
2390
2781
|
catch (_) {
|
|
2391
2782
|
return envObject.setLastError(2);
|
|
2392
2783
|
}
|
|
2784
|
+
result >>>= 0;
|
|
2393
2785
|
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
2394
2786
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2395
2787
|
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
@@ -2414,6 +2806,7 @@ function createNapiModule(options) {
|
|
|
2414
2806
|
var v = handle.value;
|
|
2415
2807
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2416
2808
|
if (type) {
|
|
2809
|
+
type >>>= 0;
|
|
2417
2810
|
var t = void 0;
|
|
2418
2811
|
if (v instanceof Int8Array) {
|
|
2419
2812
|
t = 0;
|
|
@@ -2436,6 +2829,9 @@ function createNapiModule(options) {
|
|
|
2436
2829
|
else if (v instanceof Uint32Array) {
|
|
2437
2830
|
t = 6;
|
|
2438
2831
|
}
|
|
2832
|
+
else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
|
|
2833
|
+
t = 11;
|
|
2834
|
+
}
|
|
2439
2835
|
else if (v instanceof Float32Array) {
|
|
2440
2836
|
t = 7;
|
|
2441
2837
|
}
|
|
@@ -2453,22 +2849,25 @@ function createNapiModule(options) {
|
|
|
2453
2849
|
}
|
|
2454
2850
|
HEAP_DATA_VIEW.setInt32(type, t, true);
|
|
2455
2851
|
}
|
|
2852
|
+
v = emnapiExternalMemory.getOrUpdateMemoryView(v);
|
|
2456
2853
|
if (length) {
|
|
2854
|
+
length >>>= 0;
|
|
2457
2855
|
HEAP_DATA_VIEW.setUint32(length, v.length, true);
|
|
2458
2856
|
}
|
|
2459
|
-
var buffer;
|
|
2460
2857
|
if (data || arraybuffer) {
|
|
2461
|
-
buffer = v.buffer;
|
|
2462
2858
|
if (data) {
|
|
2859
|
+
data >>>= 0;
|
|
2463
2860
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2464
2861
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2465
2862
|
}
|
|
2466
2863
|
if (arraybuffer) {
|
|
2467
|
-
|
|
2864
|
+
arraybuffer >>>= 0;
|
|
2865
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2468
2866
|
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2469
2867
|
}
|
|
2470
2868
|
}
|
|
2471
2869
|
if (byte_offset) {
|
|
2870
|
+
byte_offset >>>= 0;
|
|
2472
2871
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2473
2872
|
}
|
|
2474
2873
|
return envObject.clearLastError();
|
|
@@ -2499,24 +2898,26 @@ function createNapiModule(options) {
|
|
|
2499
2898
|
if (!handle.isDataView()) {
|
|
2500
2899
|
return envObject.setLastError(1);
|
|
2501
2900
|
}
|
|
2502
|
-
var v = handle.value;
|
|
2901
|
+
var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
|
|
2503
2902
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2504
2903
|
if (byte_length) {
|
|
2904
|
+
byte_length >>>= 0;
|
|
2505
2905
|
HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
|
|
2506
2906
|
}
|
|
2507
|
-
var buffer;
|
|
2508
2907
|
if (data || arraybuffer) {
|
|
2509
|
-
buffer = v.buffer;
|
|
2510
2908
|
if (data) {
|
|
2909
|
+
data >>>= 0;
|
|
2511
2910
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2512
2911
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2513
2912
|
}
|
|
2514
2913
|
if (arraybuffer) {
|
|
2515
|
-
|
|
2914
|
+
arraybuffer >>>= 0;
|
|
2915
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2516
2916
|
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2517
2917
|
}
|
|
2518
2918
|
}
|
|
2519
2919
|
if (byte_offset) {
|
|
2920
|
+
byte_offset >>>= 0;
|
|
2520
2921
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2521
2922
|
}
|
|
2522
2923
|
return envObject.clearLastError();
|
|
@@ -2541,6 +2942,7 @@ function createNapiModule(options) {
|
|
|
2541
2942
|
if (!handle.isDate()) {
|
|
2542
2943
|
return envObject.setLastError(1);
|
|
2543
2944
|
}
|
|
2945
|
+
result >>>= 0;
|
|
2544
2946
|
v = handle.value.valueOf();
|
|
2545
2947
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2546
2948
|
HEAP_DATA_VIEW.setFloat64(result, v, true);
|
|
@@ -2564,6 +2966,7 @@ function createNapiModule(options) {
|
|
|
2564
2966
|
if (typeof handle.value !== 'boolean') {
|
|
2565
2967
|
return envObject.setLastError(7);
|
|
2566
2968
|
}
|
|
2969
|
+
result >>>= 0;
|
|
2567
2970
|
var r = handle.value ? 1 : 0;
|
|
2568
2971
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2569
2972
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -2582,6 +2985,7 @@ function createNapiModule(options) {
|
|
|
2582
2985
|
if (typeof handle.value !== 'number') {
|
|
2583
2986
|
return envObject.setLastError(6);
|
|
2584
2987
|
}
|
|
2988
|
+
result >>>= 0;
|
|
2585
2989
|
var r = handle.value;
|
|
2586
2990
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2587
2991
|
HEAP_DATA_VIEW.setFloat64(result, r, true);
|
|
@@ -2606,6 +3010,8 @@ function createNapiModule(options) {
|
|
|
2606
3010
|
if (typeof numberValue !== 'bigint') {
|
|
2607
3011
|
return envObject.setLastError(6);
|
|
2608
3012
|
}
|
|
3013
|
+
lossless >>>= 0;
|
|
3014
|
+
result >>>= 0;
|
|
2609
3015
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2610
3016
|
if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
|
|
2611
3017
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2642,6 +3048,8 @@ function createNapiModule(options) {
|
|
|
2642
3048
|
if (typeof numberValue !== 'bigint') {
|
|
2643
3049
|
return envObject.setLastError(6);
|
|
2644
3050
|
}
|
|
3051
|
+
lossless >>>= 0;
|
|
3052
|
+
result >>>= 0;
|
|
2645
3053
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2646
3054
|
if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
|
|
2647
3055
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2673,8 +3081,12 @@ function createNapiModule(options) {
|
|
|
2673
3081
|
return envObject.setLastError(17);
|
|
2674
3082
|
}
|
|
2675
3083
|
var isMinus = handle.value < BigInt(0);
|
|
3084
|
+
sign_bit >>>= 0;
|
|
3085
|
+
words >>>= 0;
|
|
3086
|
+
word_count >>>= 0;
|
|
2676
3087
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2677
3088
|
var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
|
|
3089
|
+
word_count_int >>>= 0;
|
|
2678
3090
|
var wordCount = 0;
|
|
2679
3091
|
var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
|
|
2680
3092
|
while (bigintValue !== BigInt(0)) {
|
|
@@ -2722,6 +3134,7 @@ function createNapiModule(options) {
|
|
|
2722
3134
|
if (!handle.isExternal()) {
|
|
2723
3135
|
return envObject.setLastError(1);
|
|
2724
3136
|
}
|
|
3137
|
+
result >>>= 0;
|
|
2725
3138
|
var p = handle.data();
|
|
2726
3139
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2727
3140
|
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
@@ -2740,6 +3153,7 @@ function createNapiModule(options) {
|
|
|
2740
3153
|
if (typeof handle.value !== 'number') {
|
|
2741
3154
|
return envObject.setLastError(6);
|
|
2742
3155
|
}
|
|
3156
|
+
result >>>= 0;
|
|
2743
3157
|
var v = new Int32Array([handle.value])[0];
|
|
2744
3158
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2745
3159
|
HEAP_DATA_VIEW.setInt32(result, v, true);
|
|
@@ -2759,6 +3173,7 @@ function createNapiModule(options) {
|
|
|
2759
3173
|
return envObject.setLastError(6);
|
|
2760
3174
|
}
|
|
2761
3175
|
var numberValue = handle.value;
|
|
3176
|
+
result >>>= 0;
|
|
2762
3177
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2763
3178
|
if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
|
|
2764
3179
|
HEAP_DATA_VIEW.setInt32(result, 0, true);
|
|
@@ -2784,6 +3199,9 @@ function createNapiModule(options) {
|
|
|
2784
3199
|
envObject.checkGCAccess();
|
|
2785
3200
|
if (!value)
|
|
2786
3201
|
return envObject.setLastError(1);
|
|
3202
|
+
result >>>= 0;
|
|
3203
|
+
buf >>>= 0;
|
|
3204
|
+
buf_size >>>= 0;
|
|
2787
3205
|
buf_size = buf_size >>> 0;
|
|
2788
3206
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2789
3207
|
if (typeof handle.value !== 'string') {
|
|
@@ -2820,6 +3238,9 @@ function createNapiModule(options) {
|
|
|
2820
3238
|
envObject.checkGCAccess();
|
|
2821
3239
|
if (!value)
|
|
2822
3240
|
return envObject.setLastError(1);
|
|
3241
|
+
result >>>= 0;
|
|
3242
|
+
buf >>>= 0;
|
|
3243
|
+
buf_size >>>= 0;
|
|
2823
3244
|
buf_size = buf_size >>> 0;
|
|
2824
3245
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2825
3246
|
if (typeof handle.value !== 'string') {
|
|
@@ -2850,6 +3271,9 @@ function createNapiModule(options) {
|
|
|
2850
3271
|
envObject.checkGCAccess();
|
|
2851
3272
|
if (!value)
|
|
2852
3273
|
return envObject.setLastError(1);
|
|
3274
|
+
result >>>= 0;
|
|
3275
|
+
buf >>>= 0;
|
|
3276
|
+
buf_size >>>= 0;
|
|
2853
3277
|
buf_size = buf_size >>> 0;
|
|
2854
3278
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2855
3279
|
if (typeof handle.value !== 'string') {
|
|
@@ -2885,6 +3309,7 @@ function createNapiModule(options) {
|
|
|
2885
3309
|
if (typeof handle.value !== 'number') {
|
|
2886
3310
|
return envObject.setLastError(6);
|
|
2887
3311
|
}
|
|
3312
|
+
result >>>= 0;
|
|
2888
3313
|
var v = new Uint32Array([handle.value])[0];
|
|
2889
3314
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2890
3315
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2910,7 +3335,8 @@ function createNapiModule(options) {
|
|
|
2910
3335
|
napi_get_value_string_latin1: napi_get_value_string_latin1,
|
|
2911
3336
|
napi_get_value_string_utf16: napi_get_value_string_utf16,
|
|
2912
3337
|
napi_get_value_string_utf8: napi_get_value_string_utf8,
|
|
2913
|
-
napi_get_value_uint32: napi_get_value_uint32
|
|
3338
|
+
napi_get_value_uint32: napi_get_value_uint32,
|
|
3339
|
+
node_api_set_prototype: node_api_set_prototype
|
|
2914
3340
|
});
|
|
2915
3341
|
function napi_create_int32(env, value, result) {
|
|
2916
3342
|
if (!env)
|
|
@@ -2919,6 +3345,7 @@ function createNapiModule(options) {
|
|
|
2919
3345
|
envObject.checkGCAccess();
|
|
2920
3346
|
if (!result)
|
|
2921
3347
|
return envObject.setLastError(1);
|
|
3348
|
+
result >>>= 0;
|
|
2922
3349
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2923
3350
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2924
3351
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2931,6 +3358,7 @@ function createNapiModule(options) {
|
|
|
2931
3358
|
envObject.checkGCAccess();
|
|
2932
3359
|
if (!result)
|
|
2933
3360
|
return envObject.setLastError(1);
|
|
3361
|
+
result >>>= 0;
|
|
2934
3362
|
var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
|
|
2935
3363
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2936
3364
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2946,6 +3374,7 @@ function createNapiModule(options) {
|
|
|
2946
3374
|
return envObject.setLastError(1);
|
|
2947
3375
|
value = Number(low);
|
|
2948
3376
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3377
|
+
high >>>= 0;
|
|
2949
3378
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2950
3379
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
2951
3380
|
return envObject.clearLastError();
|
|
@@ -2957,6 +3386,7 @@ function createNapiModule(options) {
|
|
|
2957
3386
|
envObject.checkGCAccess();
|
|
2958
3387
|
if (!result)
|
|
2959
3388
|
return envObject.setLastError(1);
|
|
3389
|
+
result >>>= 0;
|
|
2960
3390
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2961
3391
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2962
3392
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -3027,6 +3457,7 @@ function createNapiModule(options) {
|
|
|
3027
3457
|
return envObject.setLastError(1);
|
|
3028
3458
|
value = low;
|
|
3029
3459
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3460
|
+
high >>>= 0;
|
|
3030
3461
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3031
3462
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3032
3463
|
return envObject.clearLastError();
|
|
@@ -3044,6 +3475,7 @@ function createNapiModule(options) {
|
|
|
3044
3475
|
return envObject.setLastError(1);
|
|
3045
3476
|
value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
|
|
3046
3477
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3478
|
+
high >>>= 0;
|
|
3047
3479
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3048
3480
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3049
3481
|
return envObject.clearLastError();
|
|
@@ -3065,6 +3497,8 @@ function createNapiModule(options) {
|
|
|
3065
3497
|
}
|
|
3066
3498
|
if (!result)
|
|
3067
3499
|
return envObject.setLastError(1);
|
|
3500
|
+
words >>>= 0;
|
|
3501
|
+
word_count >>>= 0;
|
|
3068
3502
|
word_count = word_count >>> 0;
|
|
3069
3503
|
if (word_count > 2147483647) {
|
|
3070
3504
|
return envObject.setLastError(1);
|
|
@@ -3081,6 +3515,7 @@ function createNapiModule(options) {
|
|
|
3081
3515
|
value += wordi << BigInt(64 * i);
|
|
3082
3516
|
}
|
|
3083
3517
|
value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
|
|
3518
|
+
result >>>= 0;
|
|
3084
3519
|
v = emnapiCtx.addToCurrentScope(value).id;
|
|
3085
3520
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3086
3521
|
return envObject.getReturnStatus();
|
|
@@ -3109,6 +3544,7 @@ function createNapiModule(options) {
|
|
|
3109
3544
|
node_api_create_property_key_utf8: node_api_create_property_key_utf8
|
|
3110
3545
|
});
|
|
3111
3546
|
function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
|
|
3547
|
+
utf8name >>>= 0;
|
|
3112
3548
|
var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
|
|
3113
3549
|
var f;
|
|
3114
3550
|
var napiCallback = (wasmTable.get(cb));
|
|
@@ -3249,6 +3685,7 @@ function createNapiModule(options) {
|
|
|
3249
3685
|
if (!finalize_cb)
|
|
3250
3686
|
return envObject.setLastError(1);
|
|
3251
3687
|
reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
|
|
3688
|
+
result >>>= 0;
|
|
3252
3689
|
referenceId = reference.id;
|
|
3253
3690
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3254
3691
|
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
@@ -3297,6 +3734,7 @@ function createNapiModule(options) {
|
|
|
3297
3734
|
if (!ref)
|
|
3298
3735
|
return envObject.setLastError(1);
|
|
3299
3736
|
if (result) {
|
|
3737
|
+
result >>>= 0;
|
|
3300
3738
|
data = ref.data();
|
|
3301
3739
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3302
3740
|
HEAP_DATA_VIEW.setUint32(result, data, true);
|
|
@@ -3333,12 +3771,15 @@ function createNapiModule(options) {
|
|
|
3333
3771
|
return envObject.setLastError(1);
|
|
3334
3772
|
if (!constructor)
|
|
3335
3773
|
return envObject.setLastError(1);
|
|
3774
|
+
length >>>= 0;
|
|
3775
|
+
properties >>>= 0;
|
|
3776
|
+
property_count >>>= 0;
|
|
3336
3777
|
property_count = property_count >>> 0;
|
|
3337
3778
|
if (property_count > 0) {
|
|
3338
3779
|
if (!properties)
|
|
3339
3780
|
return envObject.setLastError(1);
|
|
3340
3781
|
}
|
|
3341
|
-
if ((length
|
|
3782
|
+
if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
|
|
3342
3783
|
return envObject.setLastError(1);
|
|
3343
3784
|
}
|
|
3344
3785
|
var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
|
|
@@ -3356,6 +3797,7 @@ function createNapiModule(options) {
|
|
|
3356
3797
|
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
3357
3798
|
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
3358
3799
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
3800
|
+
attributes >>>= 0;
|
|
3359
3801
|
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
3360
3802
|
if (utf8Name) {
|
|
3361
3803
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
@@ -3377,6 +3819,7 @@ function createNapiModule(options) {
|
|
|
3377
3819
|
}
|
|
3378
3820
|
var valueHandle = emnapiCtx.addToCurrentScope(F);
|
|
3379
3821
|
valueHandleId = valueHandle.id;
|
|
3822
|
+
result >>>= 0;
|
|
3380
3823
|
HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
|
|
3381
3824
|
return envObject.getReturnStatus();
|
|
3382
3825
|
}
|
|
@@ -3412,6 +3855,7 @@ function createNapiModule(options) {
|
|
|
3412
3855
|
if (!(value.isObject() || value.isFunction())) {
|
|
3413
3856
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
|
|
3414
3857
|
}
|
|
3858
|
+
type_tag >>>= 0;
|
|
3415
3859
|
if (!type_tag) {
|
|
3416
3860
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
|
|
3417
3861
|
}
|
|
@@ -3456,6 +3900,7 @@ function createNapiModule(options) {
|
|
|
3456
3900
|
}
|
|
3457
3901
|
var binding = envObject.getObjectBinding(value.value);
|
|
3458
3902
|
if (binding.tag !== null) {
|
|
3903
|
+
type_tag >>>= 0;
|
|
3459
3904
|
var tag = binding.tag;
|
|
3460
3905
|
var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
|
|
3461
3906
|
ret = (tag[0] === typeTag[0] &&
|
|
@@ -3466,6 +3911,7 @@ function createNapiModule(options) {
|
|
|
3466
3911
|
else {
|
|
3467
3912
|
ret = false;
|
|
3468
3913
|
}
|
|
3914
|
+
result >>>= 0;
|
|
3469
3915
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3470
3916
|
HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
|
|
3471
3917
|
return envObject.getReturnStatus();
|
|
@@ -3493,8 +3939,12 @@ function createNapiModule(options) {
|
|
|
3493
3939
|
}
|
|
3494
3940
|
var handle = handleResult.handle;
|
|
3495
3941
|
var ownership = !result ? 0 : 1;
|
|
3942
|
+
finalize_data >>>= 0;
|
|
3943
|
+
finalize_cb >>>= 0;
|
|
3944
|
+
finalize_hint >>>= 0;
|
|
3496
3945
|
var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
|
|
3497
3946
|
if (result) {
|
|
3947
|
+
result >>>= 0;
|
|
3498
3948
|
var referenceId = reference.id;
|
|
3499
3949
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3500
3950
|
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
@@ -3533,6 +3983,9 @@ function createNapiModule(options) {
|
|
|
3533
3983
|
try {
|
|
3534
3984
|
if (!result)
|
|
3535
3985
|
return envObject.setLastError(1);
|
|
3986
|
+
byte_length >>>= 0;
|
|
3987
|
+
external_data >>>= 0;
|
|
3988
|
+
result >>>= 0;
|
|
3536
3989
|
byte_length = byte_length >>> 0;
|
|
3537
3990
|
if (!external_data) {
|
|
3538
3991
|
byte_length = 0;
|
|
@@ -3584,6 +4037,12 @@ function createNapiModule(options) {
|
|
|
3584
4037
|
case -1:
|
|
3585
4038
|
viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 };
|
|
3586
4039
|
break;
|
|
4040
|
+
case 11:
|
|
4041
|
+
if (typeof Float16Array !== 'function') {
|
|
4042
|
+
return envObject.setLastError(1);
|
|
4043
|
+
}
|
|
4044
|
+
viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 };
|
|
4045
|
+
break;
|
|
3587
4046
|
case -2: {
|
|
3588
4047
|
if (!emnapiCtx.feature.Buffer) {
|
|
3589
4048
|
throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
|
|
@@ -3633,11 +4092,11 @@ function createNapiModule(options) {
|
|
|
3633
4092
|
offset = offset !== null && offset !== void 0 ? offset : 0;
|
|
3634
4093
|
offset = offset >>> 0;
|
|
3635
4094
|
var view;
|
|
3636
|
-
if (arrayBufferOrView instanceof ArrayBuffer) {
|
|
4095
|
+
if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
3637
4096
|
var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
|
|
3638
4097
|
if (!pointer)
|
|
3639
4098
|
throw new Error('Unknown ArrayBuffer address');
|
|
3640
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4099
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3641
4100
|
len = arrayBufferOrView.byteLength - offset;
|
|
3642
4101
|
}
|
|
3643
4102
|
len = len >>> 0;
|
|
@@ -3659,7 +4118,7 @@ function createNapiModule(options) {
|
|
|
3659
4118
|
var pointer = viewPointerInfo.address;
|
|
3660
4119
|
if (!pointer)
|
|
3661
4120
|
throw new Error('Unknown ArrayBuffer address');
|
|
3662
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4121
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3663
4122
|
len = latestView.byteLength - offset;
|
|
3664
4123
|
}
|
|
3665
4124
|
len = len >>> 0;
|
|
@@ -3691,14 +4150,18 @@ function createNapiModule(options) {
|
|
|
3691
4150
|
try {
|
|
3692
4151
|
if (!arraybuffer_or_view)
|
|
3693
4152
|
return envObject.setLastError(1);
|
|
4153
|
+
arraybuffer_or_view >>>= 0;
|
|
4154
|
+
offset >>>= 0;
|
|
4155
|
+
len >>>= 0;
|
|
3694
4156
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3695
4157
|
var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
|
|
3696
4158
|
var handle = envObject.ctx.handleStore.get(handleId);
|
|
3697
|
-
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView()) {
|
|
4159
|
+
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
3698
4160
|
return envObject.setLastError(1);
|
|
3699
4161
|
}
|
|
3700
4162
|
var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
|
|
3701
4163
|
if (handle.value !== ret) {
|
|
4164
|
+
arraybuffer_or_view >>>= 0;
|
|
3702
4165
|
v = envObject.ensureHandleId(ret);
|
|
3703
4166
|
HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
|
|
3704
4167
|
}
|
|
@@ -3713,7 +4176,7 @@ function createNapiModule(options) {
|
|
|
3713
4176
|
var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer;
|
|
3714
4177
|
var isDataView = arrayBufferOrView instanceof DataView;
|
|
3715
4178
|
var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView;
|
|
3716
|
-
if (!isArrayBuffer && !isTypedArray && !isDataView) {
|
|
4179
|
+
if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
3717
4180
|
throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter');
|
|
3718
4181
|
}
|
|
3719
4182
|
var info;
|
|
@@ -3752,13 +4215,16 @@ function createNapiModule(options) {
|
|
|
3752
4215
|
p = info.address;
|
|
3753
4216
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3754
4217
|
if (address) {
|
|
4218
|
+
address >>>= 0;
|
|
3755
4219
|
HEAP_DATA_VIEW.setUint32(address, p, true);
|
|
3756
4220
|
}
|
|
3757
4221
|
if (ownership) {
|
|
4222
|
+
ownership >>>= 0;
|
|
3758
4223
|
ownershipOut = info.ownership;
|
|
3759
4224
|
HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
|
|
3760
4225
|
}
|
|
3761
4226
|
if (runtime_allocated) {
|
|
4227
|
+
runtime_allocated >>>= 0;
|
|
3762
4228
|
runtimeAllocated = info.runtimeAllocated;
|
|
3763
4229
|
HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
|
|
3764
4230
|
}
|
|
@@ -3784,6 +4250,7 @@ function createNapiModule(options) {
|
|
|
3784
4250
|
}
|
|
3785
4251
|
var versions = runtimeVersion.split('.')
|
|
3786
4252
|
.map(function (n) { return Number(n); });
|
|
4253
|
+
version >>>= 0;
|
|
3787
4254
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3788
4255
|
HEAP_DATA_VIEW.setUint32(version, versions[0], true);
|
|
3789
4256
|
HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
|
|
@@ -3809,6 +4276,7 @@ function createNapiModule(options) {
|
|
|
3809
4276
|
envObject.checkGCAccess();
|
|
3810
4277
|
if (!result)
|
|
3811
4278
|
return envObject.setLastError(1);
|
|
4279
|
+
result >>>= 0;
|
|
3812
4280
|
var value = emnapiCtx.addToCurrentScope([]).id;
|
|
3813
4281
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3814
4282
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3821,16 +4289,20 @@ function createNapiModule(options) {
|
|
|
3821
4289
|
envObject.checkGCAccess();
|
|
3822
4290
|
if (!result)
|
|
3823
4291
|
return envObject.setLastError(1);
|
|
4292
|
+
length >>>= 0;
|
|
4293
|
+
result >>>= 0;
|
|
3824
4294
|
length = length >>> 0;
|
|
3825
4295
|
var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
|
|
3826
4296
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3827
4297
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3828
4298
|
return envObject.clearLastError();
|
|
3829
4299
|
}
|
|
3830
|
-
function emnapiCreateArrayBuffer(byte_length, data) {
|
|
4300
|
+
function emnapiCreateArrayBuffer(byte_length, data, shared) {
|
|
4301
|
+
byte_length >>>= 0;
|
|
3831
4302
|
byte_length = byte_length >>> 0;
|
|
3832
|
-
var arrayBuffer = new ArrayBuffer(byte_length);
|
|
4303
|
+
var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
|
|
3833
4304
|
if (data) {
|
|
4305
|
+
data >>>= 0;
|
|
3834
4306
|
var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
|
|
3835
4307
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3836
4308
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
@@ -3851,7 +4323,34 @@ function createNapiModule(options) {
|
|
|
3851
4323
|
try {
|
|
3852
4324
|
if (!result)
|
|
3853
4325
|
return envObject.setLastError(1);
|
|
3854
|
-
|
|
4326
|
+
result >>>= 0;
|
|
4327
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
|
|
4328
|
+
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
4329
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4330
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4331
|
+
return envObject.getReturnStatus();
|
|
4332
|
+
}
|
|
4333
|
+
catch (err) {
|
|
4334
|
+
envObject.tryCatch.setError(err);
|
|
4335
|
+
return envObject.setLastError(10);
|
|
4336
|
+
}
|
|
4337
|
+
}
|
|
4338
|
+
function node_api_create_sharedarraybuffer(env, byte_length, data, result) {
|
|
4339
|
+
var value;
|
|
4340
|
+
if (!env)
|
|
4341
|
+
return 1;
|
|
4342
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4343
|
+
envObject.checkGCAccess();
|
|
4344
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4345
|
+
return envObject.setLastError(10);
|
|
4346
|
+
if (!envObject.canCallIntoJs())
|
|
4347
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4348
|
+
envObject.clearLastError();
|
|
4349
|
+
try {
|
|
4350
|
+
if (!result)
|
|
4351
|
+
return envObject.setLastError(1);
|
|
4352
|
+
result >>>= 0;
|
|
4353
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
|
|
3855
4354
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
3856
4355
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3857
4356
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3876,6 +4375,7 @@ function createNapiModule(options) {
|
|
|
3876
4375
|
try {
|
|
3877
4376
|
if (!result)
|
|
3878
4377
|
return envObject.setLastError(1);
|
|
4378
|
+
result >>>= 0;
|
|
3879
4379
|
value = emnapiCtx.addToCurrentScope(new Date(time)).id;
|
|
3880
4380
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3881
4381
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3907,6 +4407,7 @@ function createNapiModule(options) {
|
|
|
3907
4407
|
if (finalize_cb) {
|
|
3908
4408
|
emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
|
|
3909
4409
|
}
|
|
4410
|
+
result >>>= 0;
|
|
3910
4411
|
value = externalHandle.id;
|
|
3911
4412
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3912
4413
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3931,6 +4432,9 @@ function createNapiModule(options) {
|
|
|
3931
4432
|
try {
|
|
3932
4433
|
if (!result)
|
|
3933
4434
|
return envObject.setLastError(1);
|
|
4435
|
+
byte_length >>>= 0;
|
|
4436
|
+
external_data >>>= 0;
|
|
4437
|
+
result >>>= 0;
|
|
3934
4438
|
byte_length = byte_length >>> 0;
|
|
3935
4439
|
if (!external_data) {
|
|
3936
4440
|
byte_length = 0;
|
|
@@ -3988,11 +4492,57 @@ function createNapiModule(options) {
|
|
|
3988
4492
|
envObject.checkGCAccess();
|
|
3989
4493
|
if (!result)
|
|
3990
4494
|
return envObject.setLastError(1);
|
|
4495
|
+
result >>>= 0;
|
|
3991
4496
|
var value = emnapiCtx.addToCurrentScope({}).id;
|
|
3992
4497
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3993
4498
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3994
4499
|
return envObject.clearLastError();
|
|
3995
4500
|
}
|
|
4501
|
+
function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
|
|
4502
|
+
if (!env)
|
|
4503
|
+
return 1;
|
|
4504
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4505
|
+
envObject.checkGCAccess();
|
|
4506
|
+
if (!result)
|
|
4507
|
+
return envObject.setLastError(1);
|
|
4508
|
+
property_count >>>= 0;
|
|
4509
|
+
property_count = property_count >>> 0;
|
|
4510
|
+
if (property_count > 0) {
|
|
4511
|
+
if (!property_names)
|
|
4512
|
+
return envObject.setLastError(1);
|
|
4513
|
+
if (!property_values)
|
|
4514
|
+
return envObject.setLastError(1);
|
|
4515
|
+
}
|
|
4516
|
+
var v8_prototype_or_null = prototype_or_null
|
|
4517
|
+
? emnapiCtx.handleStore.get(prototype_or_null).value
|
|
4518
|
+
: null;
|
|
4519
|
+
var properties = {};
|
|
4520
|
+
property_names >>>= 0;
|
|
4521
|
+
property_values >>>= 0;
|
|
4522
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4523
|
+
for (var i = 0; i < property_count; i++) {
|
|
4524
|
+
var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
|
|
4525
|
+
if (!(typeof name_value === "string" || typeof name_value === "symbol"))
|
|
4526
|
+
return envObject.setLastError(4);
|
|
4527
|
+
properties[name_value] = {
|
|
4528
|
+
value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
|
|
4529
|
+
writable: true,
|
|
4530
|
+
enumerable: true,
|
|
4531
|
+
configurable: true
|
|
4532
|
+
};
|
|
4533
|
+
}
|
|
4534
|
+
var obj;
|
|
4535
|
+
try {
|
|
4536
|
+
obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties);
|
|
4537
|
+
}
|
|
4538
|
+
catch (_) {
|
|
4539
|
+
return envObject.setLastError(9);
|
|
4540
|
+
}
|
|
4541
|
+
var value = emnapiCtx.addToCurrentScope(obj).id;
|
|
4542
|
+
result >>>= 0;
|
|
4543
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4544
|
+
return envObject.clearLastError();
|
|
4545
|
+
}
|
|
3996
4546
|
function napi_create_symbol(env, description, result) {
|
|
3997
4547
|
if (!env)
|
|
3998
4548
|
return 1;
|
|
@@ -4000,6 +4550,7 @@ function createNapiModule(options) {
|
|
|
4000
4550
|
envObject.checkGCAccess();
|
|
4001
4551
|
if (!result)
|
|
4002
4552
|
return envObject.setLastError(1);
|
|
4553
|
+
result >>>= 0;
|
|
4003
4554
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4004
4555
|
if (!description) {
|
|
4005
4556
|
var value = emnapiCtx.addToCurrentScope(Symbol()).id;
|
|
@@ -4037,6 +4588,8 @@ function createNapiModule(options) {
|
|
|
4037
4588
|
return envObject.setLastError(1);
|
|
4038
4589
|
}
|
|
4039
4590
|
var buffer = handle.value;
|
|
4591
|
+
byte_offset >>>= 0;
|
|
4592
|
+
length >>>= 0;
|
|
4040
4593
|
var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
|
|
4041
4594
|
var _a;
|
|
4042
4595
|
byte_offset = byte_offset >>> 0;
|
|
@@ -4067,6 +4620,7 @@ function createNapiModule(options) {
|
|
|
4067
4620
|
});
|
|
4068
4621
|
}
|
|
4069
4622
|
}
|
|
4623
|
+
result >>>= 0;
|
|
4070
4624
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4071
4625
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4072
4626
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4095,6 +4649,11 @@ function createNapiModule(options) {
|
|
|
4095
4649
|
return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
|
|
4096
4650
|
case 10:
|
|
4097
4651
|
return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
|
|
4652
|
+
case 11:
|
|
4653
|
+
if (typeof Float16Array !== 'function') {
|
|
4654
|
+
return envObject.setLastError(1);
|
|
4655
|
+
}
|
|
4656
|
+
return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
|
|
4098
4657
|
default:
|
|
4099
4658
|
return envObject.setLastError(1);
|
|
4100
4659
|
}
|
|
@@ -4123,7 +4682,9 @@ function createNapiModule(options) {
|
|
|
4123
4682
|
if (!Buffer) {
|
|
4124
4683
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
|
|
4125
4684
|
}
|
|
4685
|
+
result >>>= 0;
|
|
4126
4686
|
var buffer = void 0;
|
|
4687
|
+
size >>>= 0;
|
|
4127
4688
|
size = size >>> 0;
|
|
4128
4689
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4129
4690
|
if (!data || (size === 0)) {
|
|
@@ -4135,6 +4696,7 @@ function createNapiModule(options) {
|
|
|
4135
4696
|
pointer = _malloc(size);
|
|
4136
4697
|
if (!pointer)
|
|
4137
4698
|
throw new Error('Out of memory');
|
|
4699
|
+
pointer >>>= 0;
|
|
4138
4700
|
new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
|
|
4139
4701
|
var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
|
|
4140
4702
|
var viewDescriptor = {
|
|
@@ -4148,6 +4710,7 @@ function createNapiModule(options) {
|
|
|
4148
4710
|
(_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
|
|
4149
4711
|
value = emnapiCtx.addToCurrentScope(buffer_1).id;
|
|
4150
4712
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4713
|
+
data >>>= 0;
|
|
4151
4714
|
HEAP_DATA_VIEW.setUint32(data, pointer, true);
|
|
4152
4715
|
}
|
|
4153
4716
|
return envObject.getReturnStatus();
|
|
@@ -4175,10 +4738,13 @@ function createNapiModule(options) {
|
|
|
4175
4738
|
if (!Buffer) {
|
|
4176
4739
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', '');
|
|
4177
4740
|
}
|
|
4178
|
-
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data);
|
|
4741
|
+
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
|
|
4179
4742
|
var buffer = Buffer.from(arrayBuffer);
|
|
4743
|
+
data >>>= 0;
|
|
4744
|
+
length >>>= 0;
|
|
4180
4745
|
buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
|
|
4181
4746
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4747
|
+
result >>>= 0;
|
|
4182
4748
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4183
4749
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4184
4750
|
return envObject.getReturnStatus();
|
|
@@ -4207,6 +4773,8 @@ function createNapiModule(options) {
|
|
|
4207
4773
|
return envObject.setLastError(1);
|
|
4208
4774
|
if (!result)
|
|
4209
4775
|
return envObject.setLastError(1);
|
|
4776
|
+
byte_offset >>>= 0;
|
|
4777
|
+
byte_length >>>= 0;
|
|
4210
4778
|
byte_offset = byte_offset >>> 0;
|
|
4211
4779
|
byte_length = byte_length >>> 0;
|
|
4212
4780
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
@@ -4235,6 +4803,7 @@ function createNapiModule(options) {
|
|
|
4235
4803
|
});
|
|
4236
4804
|
}
|
|
4237
4805
|
}
|
|
4806
|
+
result >>>= 0;
|
|
4238
4807
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4239
4808
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4240
4809
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4246,7 +4815,6 @@ function createNapiModule(options) {
|
|
|
4246
4815
|
}
|
|
4247
4816
|
}
|
|
4248
4817
|
function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
|
|
4249
|
-
var value;
|
|
4250
4818
|
if (!env)
|
|
4251
4819
|
return 1;
|
|
4252
4820
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4261,34 +4829,41 @@ function createNapiModule(options) {
|
|
|
4261
4829
|
return envObject.setLastError(1);
|
|
4262
4830
|
if (!result)
|
|
4263
4831
|
return envObject.setLastError(1);
|
|
4832
|
+
byte_length >>>= 0;
|
|
4833
|
+
byte_offset >>>= 0;
|
|
4264
4834
|
byte_length = byte_length >>> 0;
|
|
4265
4835
|
byte_offset = byte_offset >>> 0;
|
|
4266
|
-
var
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
|
|
4273
|
-
err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
|
|
4274
|
-
throw err;
|
|
4275
|
-
}
|
|
4276
|
-
var dataview = new DataView(buffer, byte_offset, byte_length);
|
|
4277
|
-
if (buffer === wasmMemory.buffer) {
|
|
4278
|
-
if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
|
|
4279
|
-
emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
|
|
4280
|
-
Ctor: DataView,
|
|
4281
|
-
address: byte_offset,
|
|
4282
|
-
length: byte_length,
|
|
4283
|
-
ownership: 1,
|
|
4284
|
-
runtimeAllocated: 0
|
|
4285
|
-
});
|
|
4836
|
+
var value = emnapiCtx.handleStore.get(arraybuffer).value;
|
|
4837
|
+
var createDataview = function (buffer) {
|
|
4838
|
+
if ((byte_length + byte_offset) > buffer.byteLength) {
|
|
4839
|
+
var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
|
|
4840
|
+
err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
|
|
4841
|
+
throw err;
|
|
4286
4842
|
}
|
|
4843
|
+
var dataview = new DataView(buffer, byte_offset, byte_length);
|
|
4844
|
+
if (buffer === wasmMemory.buffer) {
|
|
4845
|
+
if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
|
|
4846
|
+
emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
|
|
4847
|
+
Ctor: DataView,
|
|
4848
|
+
address: byte_offset,
|
|
4849
|
+
length: byte_length,
|
|
4850
|
+
ownership: 1,
|
|
4851
|
+
runtimeAllocated: 0
|
|
4852
|
+
});
|
|
4853
|
+
}
|
|
4854
|
+
}
|
|
4855
|
+
result >>>= 0;
|
|
4856
|
+
var v = emnapiCtx.addToCurrentScope(dataview).id;
|
|
4857
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4858
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4859
|
+
return envObject.getReturnStatus();
|
|
4860
|
+
};
|
|
4861
|
+
if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
|
|
4862
|
+
return createDataview(value);
|
|
4863
|
+
}
|
|
4864
|
+
else {
|
|
4865
|
+
return envObject.setLastError(1);
|
|
4287
4866
|
}
|
|
4288
|
-
value = emnapiCtx.addToCurrentScope(dataview).id;
|
|
4289
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4290
|
-
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4291
|
-
return envObject.getReturnStatus();
|
|
4292
4867
|
}
|
|
4293
4868
|
catch (err) {
|
|
4294
4869
|
envObject.tryCatch.setError(err);
|
|
@@ -4302,7 +4877,10 @@ function createNapiModule(options) {
|
|
|
4302
4877
|
envObject.checkGCAccess();
|
|
4303
4878
|
if (!result)
|
|
4304
4879
|
return envObject.setLastError(1);
|
|
4305
|
-
|
|
4880
|
+
length >>>= 0;
|
|
4881
|
+
utf8description >>>= 0;
|
|
4882
|
+
result >>>= 0;
|
|
4883
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
4306
4884
|
var sizelength = length >>> 0;
|
|
4307
4885
|
if (length !== 0) {
|
|
4308
4886
|
if (!utf8description)
|
|
@@ -4333,6 +4911,8 @@ function createNapiModule(options) {
|
|
|
4333
4911
|
napi_create_symbol: napi_create_symbol,
|
|
4334
4912
|
napi_create_typedarray: napi_create_typedarray,
|
|
4335
4913
|
node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
|
|
4914
|
+
node_api_create_object_with_properties: node_api_create_object_with_properties,
|
|
4915
|
+
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
4336
4916
|
node_api_symbol_for: node_api_symbol_for
|
|
4337
4917
|
});
|
|
4338
4918
|
function napi_get_boolean(env, value, result) {
|
|
@@ -4342,6 +4922,7 @@ function createNapiModule(options) {
|
|
|
4342
4922
|
envObject.checkGCAccess();
|
|
4343
4923
|
if (!result)
|
|
4344
4924
|
return envObject.setLastError(1);
|
|
4925
|
+
result >>>= 0;
|
|
4345
4926
|
var v = value === 0 ? 3 : 4;
|
|
4346
4927
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4347
4928
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -4354,6 +4935,7 @@ function createNapiModule(options) {
|
|
|
4354
4935
|
envObject.checkGCAccess();
|
|
4355
4936
|
if (!result)
|
|
4356
4937
|
return envObject.setLastError(1);
|
|
4938
|
+
result >>>= 0;
|
|
4357
4939
|
var value = 5;
|
|
4358
4940
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4359
4941
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4366,6 +4948,7 @@ function createNapiModule(options) {
|
|
|
4366
4948
|
envObject.checkGCAccess();
|
|
4367
4949
|
if (!result)
|
|
4368
4950
|
return envObject.setLastError(1);
|
|
4951
|
+
result >>>= 0;
|
|
4369
4952
|
var value = 2;
|
|
4370
4953
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4371
4954
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4378,6 +4961,7 @@ function createNapiModule(options) {
|
|
|
4378
4961
|
envObject.checkGCAccess();
|
|
4379
4962
|
if (!result)
|
|
4380
4963
|
return envObject.setLastError(1);
|
|
4964
|
+
result >>>= 0;
|
|
4381
4965
|
var value = 1;
|
|
4382
4966
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4383
4967
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4394,6 +4978,9 @@ function createNapiModule(options) {
|
|
|
4394
4978
|
if (!env)
|
|
4395
4979
|
return 1;
|
|
4396
4980
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4981
|
+
data >>>= 0;
|
|
4982
|
+
finalize_cb >>>= 0;
|
|
4983
|
+
finalize_hint >>>= 0;
|
|
4397
4984
|
envObject.setInstanceData(data, finalize_cb, finalize_hint);
|
|
4398
4985
|
return envObject.clearLastError();
|
|
4399
4986
|
}
|
|
@@ -4403,6 +4990,7 @@ function createNapiModule(options) {
|
|
|
4403
4990
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4404
4991
|
if (!data)
|
|
4405
4992
|
return envObject.setLastError(1);
|
|
4993
|
+
data >>>= 0;
|
|
4406
4994
|
var value = envObject.getInstanceData();
|
|
4407
4995
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4408
4996
|
HEAP_DATA_VIEW.setUint32(data, value, true);
|
|
@@ -4414,11 +5002,15 @@ function createNapiModule(options) {
|
|
|
4414
5002
|
napi_set_instance_data: napi_set_instance_data
|
|
4415
5003
|
});
|
|
4416
5004
|
function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
|
|
5005
|
+
error_code >>>= 0;
|
|
5006
|
+
engine_error_code >>>= 0;
|
|
5007
|
+
engine_reserved >>>= 0;
|
|
4417
5008
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4418
5009
|
var lastError = envObject.lastError;
|
|
4419
5010
|
var errorCode = lastError.errorCode;
|
|
4420
5011
|
var engineErrorCode = lastError.engineErrorCode >>> 0;
|
|
4421
5012
|
var engineReserved = lastError.engineReserved;
|
|
5013
|
+
engineReserved >>>= 0;
|
|
4422
5014
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4423
5015
|
HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
|
|
4424
5016
|
HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
|
|
@@ -4458,6 +5050,8 @@ function createNapiModule(options) {
|
|
|
4458
5050
|
try {
|
|
4459
5051
|
if (!msg)
|
|
4460
5052
|
return envObject.setLastError(1);
|
|
5053
|
+
code >>>= 0;
|
|
5054
|
+
msg >>>= 0;
|
|
4461
5055
|
var error = new Error(emnapiString.UTF8ToString(msg, -1));
|
|
4462
5056
|
if (code)
|
|
4463
5057
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4482,6 +5076,8 @@ function createNapiModule(options) {
|
|
|
4482
5076
|
try {
|
|
4483
5077
|
if (!msg)
|
|
4484
5078
|
return envObject.setLastError(1);
|
|
5079
|
+
code >>>= 0;
|
|
5080
|
+
msg >>>= 0;
|
|
4485
5081
|
var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
|
|
4486
5082
|
if (code)
|
|
4487
5083
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4506,6 +5102,8 @@ function createNapiModule(options) {
|
|
|
4506
5102
|
try {
|
|
4507
5103
|
if (!msg)
|
|
4508
5104
|
return envObject.setLastError(1);
|
|
5105
|
+
code >>>= 0;
|
|
5106
|
+
msg >>>= 0;
|
|
4509
5107
|
var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
|
|
4510
5108
|
if (code)
|
|
4511
5109
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4530,6 +5128,8 @@ function createNapiModule(options) {
|
|
|
4530
5128
|
try {
|
|
4531
5129
|
if (!msg)
|
|
4532
5130
|
return envObject.setLastError(1);
|
|
5131
|
+
code >>>= 0;
|
|
5132
|
+
msg >>>= 0;
|
|
4533
5133
|
var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
|
|
4534
5134
|
if (code)
|
|
4535
5135
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4549,6 +5149,7 @@ function createNapiModule(options) {
|
|
|
4549
5149
|
if (!result)
|
|
4550
5150
|
return envObject.setLastError(1);
|
|
4551
5151
|
var r = envObject.tryCatch.hasCaught();
|
|
5152
|
+
result >>>= 0;
|
|
4552
5153
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4553
5154
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
4554
5155
|
return envObject.clearLastError();
|
|
@@ -4574,6 +5175,7 @@ function createNapiModule(options) {
|
|
|
4574
5175
|
}
|
|
4575
5176
|
error.code = codeValue;
|
|
4576
5177
|
}
|
|
5178
|
+
result >>>= 0;
|
|
4577
5179
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4578
5180
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4579
5181
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4600,6 +5202,7 @@ function createNapiModule(options) {
|
|
|
4600
5202
|
}
|
|
4601
5203
|
error.code = codeValue;
|
|
4602
5204
|
}
|
|
5205
|
+
result >>>= 0;
|
|
4603
5206
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4604
5207
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4605
5208
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4626,6 +5229,7 @@ function createNapiModule(options) {
|
|
|
4626
5229
|
}
|
|
4627
5230
|
error.code = codeValue;
|
|
4628
5231
|
}
|
|
5232
|
+
result >>>= 0;
|
|
4629
5233
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4630
5234
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4631
5235
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4652,6 +5256,7 @@ function createNapiModule(options) {
|
|
|
4652
5256
|
}
|
|
4653
5257
|
error.code = codeValue;
|
|
4654
5258
|
}
|
|
5259
|
+
result >>>= 0;
|
|
4655
5260
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4656
5261
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4657
5262
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4664,6 +5269,7 @@ function createNapiModule(options) {
|
|
|
4664
5269
|
envObject.checkGCAccess();
|
|
4665
5270
|
if (!result)
|
|
4666
5271
|
return envObject.setLastError(1);
|
|
5272
|
+
result >>>= 0;
|
|
4667
5273
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4668
5274
|
if (!envObject.tryCatch.hasCaught()) {
|
|
4669
5275
|
HEAP_DATA_VIEW.setUint32(result, 1, true);
|
|
@@ -4678,6 +5284,10 @@ function createNapiModule(options) {
|
|
|
4678
5284
|
return envObject.clearLastError();
|
|
4679
5285
|
}
|
|
4680
5286
|
function napi_fatal_error(location, location_len, message, message_len) {
|
|
5287
|
+
location >>>= 0;
|
|
5288
|
+
location_len >>>= 0;
|
|
5289
|
+
message >>>= 0;
|
|
5290
|
+
message_len >>>= 0;
|
|
4681
5291
|
var locationStr = emnapiString.UTF8ToString(location, location_len);
|
|
4682
5292
|
var messageStr = emnapiString.UTF8ToString(message, message_len);
|
|
4683
5293
|
if (emnapiNodeBinding) {
|
|
@@ -4731,8 +5341,21 @@ function createNapiModule(options) {
|
|
|
4731
5341
|
node_api_create_syntax_error: node_api_create_syntax_error,
|
|
4732
5342
|
node_api_throw_syntax_error: node_api_throw_syntax_error
|
|
4733
5343
|
});
|
|
5344
|
+
function _emnapi_create_function(env, utf8name, length, cb, data, result) {
|
|
5345
|
+
length >>>= 0;
|
|
5346
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5347
|
+
var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
|
|
5348
|
+
if (fresult.status !== 0)
|
|
5349
|
+
return envObject.setLastError(fresult.status);
|
|
5350
|
+
var f = fresult.f;
|
|
5351
|
+
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
5352
|
+
result >>>= 0;
|
|
5353
|
+
var value = valueHandle.id;
|
|
5354
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5355
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5356
|
+
return envObject.getReturnStatus();
|
|
5357
|
+
}
|
|
4734
5358
|
function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
4735
|
-
var value;
|
|
4736
5359
|
if (!env)
|
|
4737
5360
|
return 1;
|
|
4738
5361
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4747,15 +5370,7 @@ function createNapiModule(options) {
|
|
|
4747
5370
|
return envObject.setLastError(1);
|
|
4748
5371
|
if (!cb)
|
|
4749
5372
|
return envObject.setLastError(1);
|
|
4750
|
-
|
|
4751
|
-
if (fresult.status !== 0)
|
|
4752
|
-
return envObject.setLastError(fresult.status);
|
|
4753
|
-
var f = fresult.f;
|
|
4754
|
-
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
4755
|
-
value = valueHandle.id;
|
|
4756
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4757
|
-
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4758
|
-
return envObject.getReturnStatus();
|
|
5373
|
+
return _emnapi_create_function(env, utf8name, length, cb, data, result);
|
|
4759
5374
|
}
|
|
4760
5375
|
catch (err) {
|
|
4761
5376
|
envObject.tryCatch.setError(err);
|
|
@@ -4769,11 +5384,14 @@ function createNapiModule(options) {
|
|
|
4769
5384
|
if (!cbinfo)
|
|
4770
5385
|
return envObject.setLastError(1);
|
|
4771
5386
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
5387
|
+
argc >>>= 0;
|
|
5388
|
+
argv >>>= 0;
|
|
4772
5389
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4773
5390
|
if (argv) {
|
|
4774
5391
|
if (!argc)
|
|
4775
5392
|
return envObject.setLastError(1);
|
|
4776
5393
|
var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
|
|
5394
|
+
argcValue >>>= 0;
|
|
4777
5395
|
var len = cbinfoValue.args.length;
|
|
4778
5396
|
var arrlen = argcValue < len ? argcValue : len;
|
|
4779
5397
|
var i = 0;
|
|
@@ -4791,10 +5409,12 @@ function createNapiModule(options) {
|
|
|
4791
5409
|
HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
|
|
4792
5410
|
}
|
|
4793
5411
|
if (this_arg) {
|
|
5412
|
+
this_arg >>>= 0;
|
|
4794
5413
|
var v = envObject.ensureHandleId(cbinfoValue.thiz);
|
|
4795
5414
|
HEAP_DATA_VIEW.setUint32(this_arg, v, true);
|
|
4796
5415
|
}
|
|
4797
5416
|
if (data) {
|
|
5417
|
+
data >>>= 0;
|
|
4798
5418
|
HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
|
|
4799
5419
|
}
|
|
4800
5420
|
return envObject.clearLastError();
|
|
@@ -4814,6 +5434,9 @@ function createNapiModule(options) {
|
|
|
4814
5434
|
try {
|
|
4815
5435
|
if (!recv)
|
|
4816
5436
|
return envObject.setLastError(1);
|
|
5437
|
+
argc >>>= 0;
|
|
5438
|
+
argv >>>= 0;
|
|
5439
|
+
result >>>= 0;
|
|
4817
5440
|
argc = argc >>> 0;
|
|
4818
5441
|
if (argc > 0) {
|
|
4819
5442
|
if (!argv)
|
|
@@ -4858,6 +5481,9 @@ function createNapiModule(options) {
|
|
|
4858
5481
|
try {
|
|
4859
5482
|
if (!constructor)
|
|
4860
5483
|
return envObject.setLastError(1);
|
|
5484
|
+
argc >>>= 0;
|
|
5485
|
+
argv >>>= 0;
|
|
5486
|
+
result >>>= 0;
|
|
4861
5487
|
argc = argc >>> 0;
|
|
4862
5488
|
if (argc > 0) {
|
|
4863
5489
|
if (!argv)
|
|
@@ -4908,6 +5534,7 @@ function createNapiModule(options) {
|
|
|
4908
5534
|
return envObject.setLastError(1);
|
|
4909
5535
|
if (!result)
|
|
4910
5536
|
return envObject.setLastError(1);
|
|
5537
|
+
result >>>= 0;
|
|
4911
5538
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
4912
5539
|
var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
|
|
4913
5540
|
var value = thiz == null || thiz.constructor == null
|
|
@@ -4921,6 +5548,7 @@ function createNapiModule(options) {
|
|
|
4921
5548
|
}
|
|
4922
5549
|
var functionMod = Object.freeze({
|
|
4923
5550
|
__proto__: null,
|
|
5551
|
+
_emnapi_create_function: _emnapi_create_function,
|
|
4924
5552
|
napi_call_function: napi_call_function,
|
|
4925
5553
|
napi_create_function: napi_create_function,
|
|
4926
5554
|
napi_get_cb_info: napi_get_cb_info,
|
|
@@ -4935,6 +5563,7 @@ function createNapiModule(options) {
|
|
|
4935
5563
|
if (!result)
|
|
4936
5564
|
return envObject.setLastError(1);
|
|
4937
5565
|
var scope = emnapiCtx.openScope(envObject);
|
|
5566
|
+
result >>>= 0;
|
|
4938
5567
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4939
5568
|
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4940
5569
|
return envObject.clearLastError();
|
|
@@ -4960,6 +5589,7 @@ function createNapiModule(options) {
|
|
|
4960
5589
|
if (!result)
|
|
4961
5590
|
return envObject.setLastError(1);
|
|
4962
5591
|
var scope = emnapiCtx.openScope(envObject);
|
|
5592
|
+
result >>>= 0;
|
|
4963
5593
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4964
5594
|
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4965
5595
|
return envObject.clearLastError();
|
|
@@ -4990,6 +5620,8 @@ function createNapiModule(options) {
|
|
|
4990
5620
|
return envObject.setLastError(1);
|
|
4991
5621
|
var scopeObject = emnapiCtx.scopeStore.get(scope);
|
|
4992
5622
|
if (!scopeObject.escapeCalled()) {
|
|
5623
|
+
escapee >>>= 0;
|
|
5624
|
+
result >>>= 0;
|
|
4993
5625
|
var newHandle = scopeObject.escape(escapee);
|
|
4994
5626
|
var value = newHandle ? newHandle.id : 0;
|
|
4995
5627
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -5014,6 +5646,7 @@ function createNapiModule(options) {
|
|
|
5014
5646
|
}
|
|
5015
5647
|
}
|
|
5016
5648
|
var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
|
|
5649
|
+
result >>>= 0;
|
|
5017
5650
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5018
5651
|
HEAP_DATA_VIEW.setUint32(result, ref.id, true);
|
|
5019
5652
|
return envObject.clearLastError();
|
|
@@ -5036,6 +5669,7 @@ function createNapiModule(options) {
|
|
|
5036
5669
|
return envObject.setLastError(1);
|
|
5037
5670
|
var count = emnapiCtx.refStore.get(ref).ref();
|
|
5038
5671
|
if (result) {
|
|
5672
|
+
result >>>= 0;
|
|
5039
5673
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5040
5674
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5041
5675
|
}
|
|
@@ -5055,6 +5689,7 @@ function createNapiModule(options) {
|
|
|
5055
5689
|
}
|
|
5056
5690
|
var count = reference.unref();
|
|
5057
5691
|
if (result) {
|
|
5692
|
+
result >>>= 0;
|
|
5058
5693
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5059
5694
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5060
5695
|
}
|
|
@@ -5071,6 +5706,7 @@ function createNapiModule(options) {
|
|
|
5071
5706
|
return envObject.setLastError(1);
|
|
5072
5707
|
var reference = emnapiCtx.refStore.get(ref);
|
|
5073
5708
|
var handleId = reference.get(envObject);
|
|
5709
|
+
result >>>= 0;
|
|
5074
5710
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5075
5711
|
HEAP_DATA_VIEW.setUint32(result, handleId, true);
|
|
5076
5712
|
return envObject.clearLastError();
|
|
@@ -5081,6 +5717,8 @@ function createNapiModule(options) {
|
|
|
5081
5717
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5082
5718
|
if (!fun)
|
|
5083
5719
|
return envObject.setLastError(1);
|
|
5720
|
+
fun >>>= 0;
|
|
5721
|
+
arg >>>= 0;
|
|
5084
5722
|
emnapiCtx.addCleanupHook(envObject, fun, arg);
|
|
5085
5723
|
return 0;
|
|
5086
5724
|
}
|
|
@@ -5090,6 +5728,8 @@ function createNapiModule(options) {
|
|
|
5090
5728
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5091
5729
|
if (!fun)
|
|
5092
5730
|
return envObject.setLastError(1);
|
|
5731
|
+
fun >>>= 0;
|
|
5732
|
+
arg >>>= 0;
|
|
5093
5733
|
emnapiCtx.removeCleanupHook(envObject, fun, arg);
|
|
5094
5734
|
return 0;
|
|
5095
5735
|
}
|
|
@@ -5150,8 +5790,10 @@ function createNapiModule(options) {
|
|
|
5150
5790
|
var p = new Promise(function (resolve, reject) {
|
|
5151
5791
|
var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
|
|
5152
5792
|
deferredObjectId = deferredObject.id;
|
|
5793
|
+
deferred >>>= 0;
|
|
5153
5794
|
HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
|
|
5154
5795
|
});
|
|
5796
|
+
promise >>>= 0;
|
|
5155
5797
|
value = emnapiCtx.addToCurrentScope(p).id;
|
|
5156
5798
|
HEAP_DATA_VIEW.setUint32(promise, value, true);
|
|
5157
5799
|
return envObject.getReturnStatus();
|
|
@@ -5219,6 +5861,7 @@ function createNapiModule(options) {
|
|
|
5219
5861
|
if (!is_promise)
|
|
5220
5862
|
return envObject.setLastError(1);
|
|
5221
5863
|
var h = emnapiCtx.handleStore.get(value);
|
|
5864
|
+
is_promise >>>= 0;
|
|
5222
5865
|
var r = h.isPromise() ? 1 : 0;
|
|
5223
5866
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5224
5867
|
HEAP_DATA_VIEW.setInt8(is_promise, r, true);
|
|
@@ -5362,6 +6005,7 @@ function createNapiModule(options) {
|
|
|
5362
6005
|
}
|
|
5363
6006
|
}
|
|
5364
6007
|
}
|
|
6008
|
+
result >>>= 0;
|
|
5365
6009
|
value = emnapiCtx.addToCurrentScope(ret).id;
|
|
5366
6010
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5367
6011
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5433,6 +6077,7 @@ function createNapiModule(options) {
|
|
|
5433
6077
|
catch (_) {
|
|
5434
6078
|
return envObject.setLastError(2);
|
|
5435
6079
|
}
|
|
6080
|
+
result >>>= 0;
|
|
5436
6081
|
r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
|
|
5437
6082
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5438
6083
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5472,6 +6117,7 @@ function createNapiModule(options) {
|
|
|
5472
6117
|
catch (_) {
|
|
5473
6118
|
return envObject.setLastError(2);
|
|
5474
6119
|
}
|
|
6120
|
+
result >>>= 0;
|
|
5475
6121
|
value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
|
|
5476
6122
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5477
6123
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5515,6 +6161,7 @@ function createNapiModule(options) {
|
|
|
5515
6161
|
}
|
|
5516
6162
|
}
|
|
5517
6163
|
if (result) {
|
|
6164
|
+
result >>>= 0;
|
|
5518
6165
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5519
6166
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5520
6167
|
}
|
|
@@ -5559,6 +6206,7 @@ function createNapiModule(options) {
|
|
|
5559
6206
|
return envObject.setLastError(4);
|
|
5560
6207
|
}
|
|
5561
6208
|
r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
|
|
6209
|
+
result >>>= 0;
|
|
5562
6210
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5563
6211
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5564
6212
|
return envObject.getReturnStatus();
|
|
@@ -5590,6 +6238,7 @@ function createNapiModule(options) {
|
|
|
5590
6238
|
if (!cname) {
|
|
5591
6239
|
return envObject.setLastError(1);
|
|
5592
6240
|
}
|
|
6241
|
+
cname >>>= 0;
|
|
5593
6242
|
emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
|
|
5594
6243
|
return envObject.getReturnStatus();
|
|
5595
6244
|
}
|
|
@@ -5628,6 +6277,8 @@ function createNapiModule(options) {
|
|
|
5628
6277
|
catch (_) {
|
|
5629
6278
|
return envObject.setLastError(2);
|
|
5630
6279
|
}
|
|
6280
|
+
utf8name >>>= 0;
|
|
6281
|
+
result >>>= 0;
|
|
5631
6282
|
r = emnapiString.UTF8ToString(utf8name, -1) in v;
|
|
5632
6283
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5633
6284
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
@@ -5668,6 +6319,8 @@ function createNapiModule(options) {
|
|
|
5668
6319
|
catch (_) {
|
|
5669
6320
|
return envObject.setLastError(2);
|
|
5670
6321
|
}
|
|
6322
|
+
utf8name >>>= 0;
|
|
6323
|
+
result >>>= 0;
|
|
5671
6324
|
value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
|
|
5672
6325
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5673
6326
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5732,6 +6385,7 @@ function createNapiModule(options) {
|
|
|
5732
6385
|
catch (_) {
|
|
5733
6386
|
return envObject.setLastError(2);
|
|
5734
6387
|
}
|
|
6388
|
+
result >>>= 0;
|
|
5735
6389
|
r = ((index >>> 0) in v) ? 1 : 0;
|
|
5736
6390
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5737
6391
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5769,6 +6423,7 @@ function createNapiModule(options) {
|
|
|
5769
6423
|
catch (_) {
|
|
5770
6424
|
return envObject.setLastError(2);
|
|
5771
6425
|
}
|
|
6426
|
+
result >>>= 0;
|
|
5772
6427
|
value = envObject.ensureHandleId(v[index >>> 0]);
|
|
5773
6428
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5774
6429
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5809,6 +6464,7 @@ function createNapiModule(options) {
|
|
|
5809
6464
|
}
|
|
5810
6465
|
}
|
|
5811
6466
|
if (result) {
|
|
6467
|
+
result >>>= 0;
|
|
5812
6468
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5813
6469
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5814
6470
|
}
|
|
@@ -5831,6 +6487,8 @@ function createNapiModule(options) {
|
|
|
5831
6487
|
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
5832
6488
|
envObject.clearLastError();
|
|
5833
6489
|
try {
|
|
6490
|
+
properties >>>= 0;
|
|
6491
|
+
property_count >>>= 0;
|
|
5834
6492
|
property_count = property_count >>> 0;
|
|
5835
6493
|
if (property_count > 0) {
|
|
5836
6494
|
if (!properties)
|
|
@@ -5854,6 +6512,7 @@ function createNapiModule(options) {
|
|
|
5854
6512
|
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
5855
6513
|
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
5856
6514
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
6515
|
+
attributes >>>= 0;
|
|
5857
6516
|
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
5858
6517
|
if (utf8Name) {
|
|
5859
6518
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
@@ -5971,6 +6630,7 @@ function createNapiModule(options) {
|
|
|
5971
6630
|
}
|
|
5972
6631
|
var g = emnapiCtx.handleStore.get(5).value;
|
|
5973
6632
|
var ret = g.eval(v8Script.value);
|
|
6633
|
+
result >>>= 0;
|
|
5974
6634
|
value = envObject.ensureHandleId(ret);
|
|
5975
6635
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5976
6636
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5996,6 +6656,7 @@ function createNapiModule(options) {
|
|
|
5996
6656
|
if (!result)
|
|
5997
6657
|
return envObject.setLastError(1);
|
|
5998
6658
|
var v = emnapiCtx.handleStore.get(value);
|
|
6659
|
+
result >>>= 0;
|
|
5999
6660
|
var r;
|
|
6000
6661
|
if (v.isNumber()) {
|
|
6001
6662
|
r = 3;
|
|
@@ -6051,6 +6712,7 @@ function createNapiModule(options) {
|
|
|
6051
6712
|
if (!result)
|
|
6052
6713
|
return envObject.setLastError(1);
|
|
6053
6714
|
var handle = emnapiCtx.handleStore.get(value);
|
|
6715
|
+
result >>>= 0;
|
|
6054
6716
|
v = handle.value ? 4 : 3;
|
|
6055
6717
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6056
6718
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6081,6 +6743,7 @@ function createNapiModule(options) {
|
|
|
6081
6743
|
if (handle.isBigInt()) {
|
|
6082
6744
|
throw new TypeError('Cannot convert a BigInt value to a number');
|
|
6083
6745
|
}
|
|
6746
|
+
result >>>= 0;
|
|
6084
6747
|
v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
|
|
6085
6748
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6086
6749
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6111,6 +6774,7 @@ function createNapiModule(options) {
|
|
|
6111
6774
|
if (handle.value == null) {
|
|
6112
6775
|
throw new TypeError('Cannot convert undefined or null to object');
|
|
6113
6776
|
}
|
|
6777
|
+
result >>>= 0;
|
|
6114
6778
|
v = envObject.ensureHandleId(Object(handle.value));
|
|
6115
6779
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6116
6780
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6141,6 +6805,7 @@ function createNapiModule(options) {
|
|
|
6141
6805
|
if (handle.isSymbol()) {
|
|
6142
6806
|
throw new TypeError('Cannot convert a Symbol value to a string');
|
|
6143
6807
|
}
|
|
6808
|
+
result >>>= 0;
|
|
6144
6809
|
v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
|
|
6145
6810
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6146
6811
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6169,6 +6834,7 @@ function createNapiModule(options) {
|
|
|
6169
6834
|
return envObject.setLastError(1);
|
|
6170
6835
|
if (!constructor)
|
|
6171
6836
|
return envObject.setLastError(1);
|
|
6837
|
+
result >>>= 0;
|
|
6172
6838
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6173
6839
|
HEAP_DATA_VIEW.setInt8(result, 0, true);
|
|
6174
6840
|
var ctor = emnapiCtx.handleStore.get(constructor);
|
|
@@ -6196,6 +6862,7 @@ function createNapiModule(options) {
|
|
|
6196
6862
|
if (!result)
|
|
6197
6863
|
return envObject.setLastError(1);
|
|
6198
6864
|
var h = emnapiCtx.handleStore.get(value);
|
|
6865
|
+
result >>>= 0;
|
|
6199
6866
|
var r = h.isArray() ? 1 : 0;
|
|
6200
6867
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6201
6868
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6211,11 +6878,31 @@ function createNapiModule(options) {
|
|
|
6211
6878
|
if (!result)
|
|
6212
6879
|
return envObject.setLastError(1);
|
|
6213
6880
|
var h = emnapiCtx.handleStore.get(value);
|
|
6881
|
+
result >>>= 0;
|
|
6214
6882
|
var r = h.isArrayBuffer() ? 1 : 0;
|
|
6215
6883
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6216
6884
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
6217
6885
|
return envObject.clearLastError();
|
|
6218
6886
|
}
|
|
6887
|
+
function node_api_is_sharedarraybuffer(env, value, result) {
|
|
6888
|
+
if (!env)
|
|
6889
|
+
return 1;
|
|
6890
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
6891
|
+
envObject.checkGCAccess();
|
|
6892
|
+
if (!value)
|
|
6893
|
+
return envObject.setLastError(1);
|
|
6894
|
+
if (!result)
|
|
6895
|
+
return envObject.setLastError(1);
|
|
6896
|
+
var h = emnapiCtx.handleStore.get(value);
|
|
6897
|
+
result >>>= 0;
|
|
6898
|
+
var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
|
|
6899
|
+
(Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
|
|
6900
|
+
? 1
|
|
6901
|
+
: 0;
|
|
6902
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6903
|
+
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
6904
|
+
return envObject.clearLastError();
|
|
6905
|
+
}
|
|
6219
6906
|
function napi_is_date(env, value, result) {
|
|
6220
6907
|
if (!env)
|
|
6221
6908
|
return 1;
|
|
@@ -6226,6 +6913,7 @@ function createNapiModule(options) {
|
|
|
6226
6913
|
if (!result)
|
|
6227
6914
|
return envObject.setLastError(1);
|
|
6228
6915
|
var h = emnapiCtx.handleStore.get(value);
|
|
6916
|
+
result >>>= 0;
|
|
6229
6917
|
var r = h.isDate() ? 1 : 0;
|
|
6230
6918
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6231
6919
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6241,6 +6929,7 @@ function createNapiModule(options) {
|
|
|
6241
6929
|
if (!result)
|
|
6242
6930
|
return envObject.setLastError(1);
|
|
6243
6931
|
var val = emnapiCtx.handleStore.get(value).value;
|
|
6932
|
+
result >>>= 0;
|
|
6244
6933
|
var r = (val instanceof Error) ? 1 : 0;
|
|
6245
6934
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6246
6935
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6256,6 +6945,7 @@ function createNapiModule(options) {
|
|
|
6256
6945
|
if (!result)
|
|
6257
6946
|
return envObject.setLastError(1);
|
|
6258
6947
|
var h = emnapiCtx.handleStore.get(value);
|
|
6948
|
+
result >>>= 0;
|
|
6259
6949
|
var r = h.isTypedArray() ? 1 : 0;
|
|
6260
6950
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6261
6951
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6271,6 +6961,7 @@ function createNapiModule(options) {
|
|
|
6271
6961
|
if (!result)
|
|
6272
6962
|
return envObject.setLastError(1);
|
|
6273
6963
|
var h = emnapiCtx.handleStore.get(value);
|
|
6964
|
+
result >>>= 0;
|
|
6274
6965
|
var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
|
|
6275
6966
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6276
6967
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6286,6 +6977,7 @@ function createNapiModule(options) {
|
|
|
6286
6977
|
if (!result)
|
|
6287
6978
|
return envObject.setLastError(1);
|
|
6288
6979
|
var h = emnapiCtx.handleStore.get(value);
|
|
6980
|
+
result >>>= 0;
|
|
6289
6981
|
var r = h.isDataView() ? 1 : 0;
|
|
6290
6982
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6291
6983
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6311,6 +7003,7 @@ function createNapiModule(options) {
|
|
|
6311
7003
|
return envObject.setLastError(1);
|
|
6312
7004
|
var lv = emnapiCtx.handleStore.get(lhs).value;
|
|
6313
7005
|
var rv = emnapiCtx.handleStore.get(rhs).value;
|
|
7006
|
+
result >>>= 0;
|
|
6314
7007
|
r = (lv === rv) ? 1 : 0;
|
|
6315
7008
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6316
7009
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6361,6 +7054,7 @@ function createNapiModule(options) {
|
|
|
6361
7054
|
if (!result)
|
|
6362
7055
|
return envObject.setLastError(1);
|
|
6363
7056
|
var h = emnapiCtx.handleStore.get(arraybuffer);
|
|
7057
|
+
result >>>= 0;
|
|
6364
7058
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6365
7059
|
if (h.isArrayBuffer() && h.value.byteLength === 0) {
|
|
6366
7060
|
try {
|
|
@@ -6396,7 +7090,8 @@ function createNapiModule(options) {
|
|
|
6396
7090
|
napi_is_error: napi_is_error,
|
|
6397
7091
|
napi_is_typedarray: napi_is_typedarray,
|
|
6398
7092
|
napi_strict_equals: napi_strict_equals,
|
|
6399
|
-
napi_typeof: napi_typeof
|
|
7093
|
+
napi_typeof: napi_typeof,
|
|
7094
|
+
node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer
|
|
6400
7095
|
});
|
|
6401
7096
|
function napi_get_version(env, result) {
|
|
6402
7097
|
if (!env)
|
|
@@ -6547,9 +7242,9 @@ function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) {
|
|
|
6547
7242
|
}
|
|
6548
7243
|
const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table;
|
|
6549
7244
|
if (wasi && !exportMemory) {
|
|
6550
|
-
const exports = Object.create(null);
|
|
6551
|
-
Object.assign(exports, originalExports, { memory });
|
|
6552
|
-
instance = { exports };
|
|
7245
|
+
const exports$1 = Object.create(null);
|
|
7246
|
+
Object.assign(exports$1, originalExports, { memory });
|
|
7247
|
+
instance = { exports: exports$1 };
|
|
6553
7248
|
}
|
|
6554
7249
|
const module = source.module;
|
|
6555
7250
|
if (wasi) {
|
|
@@ -6674,12 +7369,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6674
7369
|
try {
|
|
6675
7370
|
if (type === 'async-worker-init') {
|
|
6676
7371
|
this.handleAfterLoad(e, () => {
|
|
6677
|
-
this.napiModule.initWorker(payload.arg);
|
|
6678
|
-
});
|
|
6679
|
-
}
|
|
6680
|
-
else if (type === 'async-work-execute') {
|
|
6681
|
-
this.handleAfterLoad(e, () => {
|
|
6682
|
-
this.napiModule.executeAsyncWork(payload.work);
|
|
7372
|
+
this.napiModule.initWorker(payload.arg, payload.func);
|
|
6683
7373
|
});
|
|
6684
7374
|
}
|
|
6685
7375
|
}
|
|
@@ -6690,7 +7380,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6690
7380
|
}
|
|
6691
7381
|
}
|
|
6692
7382
|
|
|
6693
|
-
const version = "1.
|
|
7383
|
+
const version = "1.10.0";
|
|
6694
7384
|
|
|
6695
7385
|
exports.MessageHandler = MessageHandler;
|
|
6696
7386
|
exports.createNapiModule = createNapiModule;
|