@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.d596b0c → 0.0.0-insiders.d5ca0ae
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +1142 -373
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +3 -3
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +3 -3
- package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +3 -3
- package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1245 -378
- package/node_modules/@emnapi/core/dist/emnapi-core.js +1271 -416
- package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +3 -3
- package/node_modules/@emnapi/core/dist/emnapi-core.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.min.mjs +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.mjs +1142 -373
- 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 +8 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +8 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +8 -2
- 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 +8 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.mjs +32 -5
- package/node_modules/@emnapi/runtime/package.json +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +21 -33
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +21 -33
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +21 -33
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +21 -33
- package/node_modules/@emnapi/wasi-threads/package.json +1 -1
- package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +47 -12
- package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +14310 -10201
- package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +47 -12
- package/node_modules/@napi-rs/wasm-runtime/package.json +6 -4
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
- package/node_modules/@tybys/wasm-util/dist/wasm-util.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +22 -2
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +22 -2
- package/node_modules/@tybys/wasm-util/package.json +1 -1
- package/package.json +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 +2 -0
|
@@ -108,7 +108,6 @@ function createNapiModule(options) {
|
|
|
108
108
|
filename: '',
|
|
109
109
|
childThread: ENVIRONMENT_IS_PTHREAD,
|
|
110
110
|
initWorker: undefined,
|
|
111
|
-
executeAsyncWork: undefined,
|
|
112
111
|
waitThreadStart: waitThreadStart,
|
|
113
112
|
PThread: undefined,
|
|
114
113
|
init: function (options) {
|
|
@@ -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
|
|
122
|
+
var exports = instance.exports;
|
|
124
123
|
var module = options.module;
|
|
125
|
-
var memory = options.memory || exports
|
|
126
|
-
var table = options.table || exports
|
|
124
|
+
var memory = options.memory || exports.memory;
|
|
125
|
+
var table = options.table || exports.__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
|
|
134
|
+
if (typeof exports.malloc !== 'function')
|
|
136
135
|
throw new TypeError('malloc is not exported');
|
|
137
|
-
if (typeof exports
|
|
136
|
+
if (typeof exports.free !== 'function')
|
|
138
137
|
throw new TypeError('free is not exported');
|
|
139
|
-
_malloc = exports
|
|
140
|
-
_free = exports
|
|
138
|
+
_malloc = exports.malloc;
|
|
139
|
+
_free = exports.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
|
|
152
|
-
var exportsHandle = scope_1.add(exports
|
|
150
|
+
var exports = napiModule.exports;
|
|
151
|
+
var exportsHandle = scope_1.add(exports);
|
|
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
|
|
154
|
+
napiModule.exports = (!napiValue) ? exports : 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,32 +856,61 @@ function createNapiModule(options) {
|
|
|
840
856
|
napi_open_callback_scope: napi_open_callback_scope
|
|
841
857
|
});
|
|
842
858
|
var emnapiTSFN = {
|
|
859
|
+
_liveSet: {},
|
|
843
860
|
offset: {
|
|
861
|
+
__size__: 0,
|
|
844
862
|
resource: 0,
|
|
845
|
-
async_id:
|
|
846
|
-
trigger_async_id:
|
|
847
|
-
queue_size:
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
863
|
+
async_id: 0,
|
|
864
|
+
trigger_async_id: 0,
|
|
865
|
+
queue_size: 0,
|
|
866
|
+
is_some: 0,
|
|
867
|
+
queue: 0,
|
|
868
|
+
async_pending: 0,
|
|
869
|
+
async_u_fd: 0,
|
|
870
|
+
thread_count: 0,
|
|
871
|
+
state: 0,
|
|
872
|
+
dispatch_state: 0,
|
|
873
|
+
context: 0,
|
|
874
|
+
max_queue_size: 0,
|
|
875
|
+
ref: 0,
|
|
876
|
+
env: 0,
|
|
877
|
+
finalize_data: 0,
|
|
878
|
+
finalize_cb: 0,
|
|
879
|
+
call_js_cb: 0,
|
|
880
|
+
handles_closing: 0,
|
|
881
|
+
async_ref: 0,
|
|
882
|
+
mutex: 0,
|
|
883
|
+
cond: 0
|
|
864
884
|
},
|
|
865
885
|
init: function () {
|
|
886
|
+
emnapiTSFN._liveSet = new Set();
|
|
887
|
+
emnapiTSFN.offset.__size__ = 184;
|
|
888
|
+
emnapiTSFN.offset.resource = 0;
|
|
889
|
+
emnapiTSFN.offset.async_id = 8;
|
|
890
|
+
emnapiTSFN.offset.trigger_async_id = 16;
|
|
891
|
+
emnapiTSFN.offset.queue_size = 60;
|
|
892
|
+
emnapiTSFN.offset.is_some = 24;
|
|
893
|
+
emnapiTSFN.offset.queue = 64;
|
|
894
|
+
emnapiTSFN.offset.async_pending = 132;
|
|
895
|
+
emnapiTSFN.offset.async_u_fd = 96;
|
|
896
|
+
emnapiTSFN.offset.thread_count = 136;
|
|
897
|
+
emnapiTSFN.offset.state = 140;
|
|
898
|
+
emnapiTSFN.offset.dispatch_state = 144;
|
|
899
|
+
emnapiTSFN.offset.context = 148;
|
|
900
|
+
emnapiTSFN.offset.max_queue_size = 152;
|
|
901
|
+
emnapiTSFN.offset.ref = 156;
|
|
902
|
+
emnapiTSFN.offset.env = 160;
|
|
903
|
+
emnapiTSFN.offset.finalize_data = 164;
|
|
904
|
+
emnapiTSFN.offset.finalize_cb = 168;
|
|
905
|
+
emnapiTSFN.offset.call_js_cb = 172;
|
|
906
|
+
emnapiTSFN.offset.handles_closing = 176;
|
|
907
|
+
emnapiTSFN.offset.async_ref = 180;
|
|
908
|
+
emnapiTSFN.offset.mutex = 32;
|
|
909
|
+
emnapiTSFN.offset.cond = 56;
|
|
910
|
+
emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
|
|
866
911
|
if (typeof PThread !== 'undefined') {
|
|
867
912
|
PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
|
|
868
|
-
PThread.
|
|
913
|
+
Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
|
|
869
914
|
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
870
915
|
PThread.getNewWorker = function () {
|
|
871
916
|
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
@@ -886,7 +931,10 @@ function createNapiModule(options) {
|
|
|
886
931
|
var type = __emnapi__.type;
|
|
887
932
|
var payload = __emnapi__.payload;
|
|
888
933
|
if (type === 'tsfn-send') {
|
|
889
|
-
emnapiTSFN.
|
|
934
|
+
var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
|
|
935
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
936
|
+
emnapiTSFN.enqueue(payload.tsfn);
|
|
937
|
+
}
|
|
890
938
|
}
|
|
891
939
|
}
|
|
892
940
|
};
|
|
@@ -908,18 +956,33 @@ function createNapiModule(options) {
|
|
|
908
956
|
}
|
|
909
957
|
return true;
|
|
910
958
|
},
|
|
959
|
+
ensureBufferFor: function (end) {
|
|
960
|
+
var buffer = wasmMemory.buffer;
|
|
961
|
+
if (end > buffer.byteLength) {
|
|
962
|
+
wasmMemory.grow(0);
|
|
963
|
+
buffer = wasmMemory.buffer;
|
|
964
|
+
}
|
|
965
|
+
return buffer;
|
|
966
|
+
},
|
|
911
967
|
initQueue: function (func) {
|
|
912
968
|
var size = 2 * 4;
|
|
913
969
|
var queue = _malloc(size);
|
|
914
970
|
if (!queue)
|
|
915
971
|
return false;
|
|
916
|
-
|
|
972
|
+
queue >>>= 0;
|
|
973
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
|
|
917
974
|
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
918
975
|
return true;
|
|
919
976
|
},
|
|
920
977
|
destroyQueue: function (func) {
|
|
921
978
|
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
922
979
|
if (queue) {
|
|
980
|
+
var node = emnapiTSFN.loadSizeTypeValue(queue, false);
|
|
981
|
+
while (node !== 0) {
|
|
982
|
+
var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
|
|
983
|
+
_free(node);
|
|
984
|
+
node = next;
|
|
985
|
+
}
|
|
923
986
|
_free(queue);
|
|
924
987
|
}
|
|
925
988
|
},
|
|
@@ -931,6 +994,7 @@ function createNapiModule(options) {
|
|
|
931
994
|
var node = _malloc(size);
|
|
932
995
|
if (!node)
|
|
933
996
|
throw new Error('OOM');
|
|
997
|
+
node >>>= 0;
|
|
934
998
|
emnapiTSFN.storeSizeTypeValue(node, data, false);
|
|
935
999
|
emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
|
|
936
1000
|
if (head === 0 && tail === 0) {
|
|
@@ -966,11 +1030,11 @@ function createNapiModule(options) {
|
|
|
966
1030
|
var waitCondition = function () {
|
|
967
1031
|
var queueSize = emnapiTSFN.getQueueSize(func);
|
|
968
1032
|
var maxSize = emnapiTSFN.getMaxQueueSize(func);
|
|
969
|
-
|
|
970
|
-
return queueSize >= maxSize && maxSize > 0 && !isClosing;
|
|
1033
|
+
return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
|
|
971
1034
|
};
|
|
972
1035
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
973
|
-
|
|
1036
|
+
var shouldDelete = false;
|
|
1037
|
+
var ret = mutex.execute(function () {
|
|
974
1038
|
while (waitCondition()) {
|
|
975
1039
|
if (mode === 0) {
|
|
976
1040
|
return 15;
|
|
@@ -980,31 +1044,35 @@ function createNapiModule(options) {
|
|
|
980
1044
|
}
|
|
981
1045
|
cond.wait();
|
|
982
1046
|
}
|
|
983
|
-
if (emnapiTSFN.
|
|
984
|
-
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
985
|
-
return 1;
|
|
986
|
-
}
|
|
987
|
-
else {
|
|
988
|
-
emnapiTSFN.subThreadCount(func);
|
|
989
|
-
return 16;
|
|
990
|
-
}
|
|
991
|
-
}
|
|
992
|
-
else {
|
|
1047
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
993
1048
|
emnapiTSFN.pushQueue(func, data);
|
|
994
1049
|
emnapiTSFN.send(func);
|
|
995
1050
|
return 0;
|
|
996
1051
|
}
|
|
1052
|
+
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1053
|
+
return 1;
|
|
1054
|
+
}
|
|
1055
|
+
emnapiTSFN.subThreadCount(func);
|
|
1056
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1057
|
+
return 16;
|
|
1058
|
+
}
|
|
1059
|
+
shouldDelete = true;
|
|
1060
|
+
return 16;
|
|
997
1061
|
});
|
|
1062
|
+
if (shouldDelete) {
|
|
1063
|
+
emnapiTSFN.destroy(func);
|
|
1064
|
+
}
|
|
1065
|
+
return ret;
|
|
998
1066
|
},
|
|
999
1067
|
getMutex: function (func) {
|
|
1000
1068
|
var index = func + emnapiTSFN.offset.mutex;
|
|
1001
1069
|
var mutex = {
|
|
1002
1070
|
lock: function () {
|
|
1003
1071
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1004
|
-
var i32a = new Int32Array(
|
|
1072
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1005
1073
|
if (isBrowserMain) {
|
|
1006
1074
|
while (true) {
|
|
1007
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1075
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1008
1076
|
if (oldValue === 0) {
|
|
1009
1077
|
return;
|
|
1010
1078
|
}
|
|
@@ -1012,18 +1080,18 @@ function createNapiModule(options) {
|
|
|
1012
1080
|
}
|
|
1013
1081
|
else {
|
|
1014
1082
|
while (true) {
|
|
1015
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1083
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1016
1084
|
if (oldValue === 0) {
|
|
1017
1085
|
return;
|
|
1018
1086
|
}
|
|
1019
|
-
Atomics.wait(i32a, 0,
|
|
1087
|
+
Atomics.wait(i32a, 0, 10);
|
|
1020
1088
|
}
|
|
1021
1089
|
}
|
|
1022
1090
|
},
|
|
1023
1091
|
unlock: function () {
|
|
1024
|
-
var i32a = new Int32Array(
|
|
1025
|
-
var oldValue = Atomics.compareExchange(i32a, 0,
|
|
1026
|
-
if (oldValue !==
|
|
1092
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1093
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1094
|
+
if (oldValue !== 10) {
|
|
1027
1095
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
1028
1096
|
}
|
|
1029
1097
|
Atomics.notify(i32a, 0, 1);
|
|
@@ -1045,14 +1113,14 @@ function createNapiModule(options) {
|
|
|
1045
1113
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1046
1114
|
var cond = {
|
|
1047
1115
|
wait: function () {
|
|
1048
|
-
var i32a = new Int32Array(
|
|
1116
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1049
1117
|
var value = Atomics.load(i32a, 0);
|
|
1050
1118
|
mutex.unlock();
|
|
1051
1119
|
Atomics.wait(i32a, 0, value);
|
|
1052
1120
|
mutex.lock();
|
|
1053
1121
|
},
|
|
1054
1122
|
signal: function () {
|
|
1055
|
-
var i32a = new Int32Array(
|
|
1123
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1056
1124
|
Atomics.add(i32a, 0, 1);
|
|
1057
1125
|
Atomics.notify(i32a, 0, 1);
|
|
1058
1126
|
}
|
|
@@ -1065,15 +1133,15 @@ function createNapiModule(options) {
|
|
|
1065
1133
|
addQueueSize: function (func) {
|
|
1066
1134
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1067
1135
|
var arr, index;
|
|
1068
|
-
arr = new Uint32Array(
|
|
1069
|
-
index = (func + offset)
|
|
1136
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1137
|
+
index = (func + offset) >>> 2;
|
|
1070
1138
|
Atomics.add(arr, index, 1);
|
|
1071
1139
|
},
|
|
1072
1140
|
subQueueSize: function (func) {
|
|
1073
1141
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1074
1142
|
var arr, index;
|
|
1075
|
-
arr = new Uint32Array(
|
|
1076
|
-
index = (func + offset)
|
|
1143
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1144
|
+
index = (func + offset) >>> 2;
|
|
1077
1145
|
Atomics.sub(arr, index, 1);
|
|
1078
1146
|
},
|
|
1079
1147
|
getThreadCount: function (func) {
|
|
@@ -1082,31 +1150,31 @@ function createNapiModule(options) {
|
|
|
1082
1150
|
addThreadCount: function (func) {
|
|
1083
1151
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1084
1152
|
var arr, index;
|
|
1085
|
-
arr = new Uint32Array(
|
|
1086
|
-
index = (func + offset)
|
|
1153
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1154
|
+
index = (func + offset) >>> 2;
|
|
1087
1155
|
Atomics.add(arr, index, 1);
|
|
1088
1156
|
},
|
|
1089
1157
|
subThreadCount: function (func) {
|
|
1090
1158
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1091
1159
|
var arr, index;
|
|
1092
|
-
arr = new Uint32Array(
|
|
1093
|
-
index = (func + offset)
|
|
1160
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1161
|
+
index = (func + offset) >>> 2;
|
|
1094
1162
|
Atomics.sub(arr, index, 1);
|
|
1095
1163
|
},
|
|
1096
|
-
|
|
1097
|
-
return Atomics.load(new Int32Array(
|
|
1164
|
+
getState: function (func) {
|
|
1165
|
+
return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
|
|
1098
1166
|
},
|
|
1099
|
-
|
|
1100
|
-
Atomics.store(new Int32Array(
|
|
1167
|
+
setState: function (func, value) {
|
|
1168
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
|
|
1101
1169
|
},
|
|
1102
1170
|
getHandlesClosing: function (func) {
|
|
1103
|
-
return Atomics.load(new
|
|
1171
|
+
return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
|
|
1104
1172
|
},
|
|
1105
1173
|
setHandlesClosing: function (func, value) {
|
|
1106
|
-
Atomics.store(new
|
|
1174
|
+
Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
|
|
1107
1175
|
},
|
|
1108
1176
|
getDispatchState: function (func) {
|
|
1109
|
-
return Atomics.load(new Uint32Array(
|
|
1177
|
+
return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
|
|
1110
1178
|
},
|
|
1111
1179
|
getContext: function (func) {
|
|
1112
1180
|
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
@@ -1136,66 +1204,96 @@ function createNapiModule(options) {
|
|
|
1136
1204
|
var ret;
|
|
1137
1205
|
var arr;
|
|
1138
1206
|
if (unsigned) {
|
|
1139
|
-
arr = new Uint32Array(
|
|
1140
|
-
ret = Atomics.load(arr, offset
|
|
1207
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1208
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1141
1209
|
return ret;
|
|
1142
1210
|
}
|
|
1143
1211
|
else {
|
|
1144
|
-
arr = new Int32Array(
|
|
1145
|
-
ret = Atomics.load(arr, offset
|
|
1212
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1213
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1146
1214
|
return ret;
|
|
1147
1215
|
}
|
|
1148
1216
|
},
|
|
1149
1217
|
storeSizeTypeValue: function (offset, value, unsigned) {
|
|
1150
1218
|
var arr;
|
|
1151
1219
|
if (unsigned) {
|
|
1152
|
-
arr = new Uint32Array(
|
|
1153
|
-
Atomics.store(arr, offset
|
|
1220
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1221
|
+
Atomics.store(arr, offset >>> 2, value);
|
|
1154
1222
|
return undefined;
|
|
1155
1223
|
}
|
|
1156
1224
|
else {
|
|
1157
|
-
arr = new Int32Array(
|
|
1158
|
-
Atomics.store(arr, offset
|
|
1225
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1226
|
+
Atomics.store(arr, offset >>> 2, value >>> 0);
|
|
1159
1227
|
return undefined;
|
|
1160
1228
|
}
|
|
1161
1229
|
},
|
|
1230
|
+
releaseResources: function (func) {
|
|
1231
|
+
if (emnapiTSFN.getState(func) !== 2) {
|
|
1232
|
+
emnapiTSFN.setState(func, 2);
|
|
1233
|
+
var env = emnapiTSFN.getEnv(func);
|
|
1234
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
1235
|
+
var ref = emnapiTSFN.getRef(func);
|
|
1236
|
+
if (ref) {
|
|
1237
|
+
emnapiCtx.refStore.get(ref).dispose();
|
|
1238
|
+
}
|
|
1239
|
+
var resource = emnapiTSFN.getResource(func);
|
|
1240
|
+
emnapiCtx.refStore.get(resource).dispose();
|
|
1241
|
+
emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
|
|
1242
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1243
|
+
HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
|
|
1244
|
+
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1245
|
+
envObject.unref();
|
|
1246
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1247
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1248
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1249
|
+
if (Atomics.load(arr, asyncRefOffset) > 0) {
|
|
1250
|
+
Atomics.store(arr, asyncRefOffset, 0);
|
|
1251
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1252
|
+
}
|
|
1253
|
+
if (emnapiNodeBinding) {
|
|
1254
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1255
|
+
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1256
|
+
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1257
|
+
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
},
|
|
1162
1261
|
destroy: function (func) {
|
|
1262
|
+
emnapiTSFN._liveSet.delete(func);
|
|
1163
1263
|
emnapiTSFN.destroyQueue(func);
|
|
1164
|
-
|
|
1165
|
-
var envObject = emnapiCtx.envStore.get(env);
|
|
1166
|
-
var ref = emnapiTSFN.getRef(func);
|
|
1167
|
-
if (ref) {
|
|
1168
|
-
emnapiCtx.refStore.get(ref).dispose();
|
|
1169
|
-
}
|
|
1170
|
-
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1171
|
-
envObject.unref();
|
|
1172
|
-
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
|
|
1173
|
-
var arr = new Int32Array(wasmMemory.buffer);
|
|
1174
|
-
if (Atomics.load(arr, asyncRefOffset)) {
|
|
1175
|
-
Atomics.store(arr, asyncRefOffset, 0);
|
|
1176
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1177
|
-
}
|
|
1178
|
-
var resource = emnapiTSFN.getResource(func);
|
|
1179
|
-
emnapiCtx.refStore.get(resource).dispose();
|
|
1180
|
-
if (emnapiNodeBinding) {
|
|
1181
|
-
var view = new DataView(wasmMemory.buffer);
|
|
1182
|
-
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1183
|
-
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1184
|
-
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1185
|
-
}
|
|
1264
|
+
emnapiTSFN.releaseResources(func);
|
|
1186
1265
|
_free(func);
|
|
1187
1266
|
},
|
|
1188
|
-
|
|
1267
|
+
emptyQueue: function (func) {
|
|
1268
|
+
var drainQueue = [];
|
|
1269
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1270
|
+
while (emnapiTSFN.getQueueSize(func) > 0) {
|
|
1271
|
+
drainQueue.push(emnapiTSFN.shiftQueue(func));
|
|
1272
|
+
}
|
|
1273
|
+
});
|
|
1189
1274
|
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
1190
1275
|
var context = emnapiTSFN.getContext(func);
|
|
1191
1276
|
var data;
|
|
1192
|
-
|
|
1193
|
-
data =
|
|
1277
|
+
for (var i = 0; i < drainQueue.length; i++) {
|
|
1278
|
+
data = drainQueue[i];
|
|
1194
1279
|
if (callJsCb) {
|
|
1195
1280
|
(wasmTable.get(callJsCb))(0, 0, context, data);
|
|
1196
1281
|
}
|
|
1197
1282
|
}
|
|
1198
|
-
|
|
1283
|
+
},
|
|
1284
|
+
maybeDelete: function (func) {
|
|
1285
|
+
var shouldDelete = false;
|
|
1286
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1287
|
+
if (emnapiTSFN.getThreadCount(func) > 0) {
|
|
1288
|
+
emnapiTSFN.releaseResources(func);
|
|
1289
|
+
}
|
|
1290
|
+
else {
|
|
1291
|
+
shouldDelete = true;
|
|
1292
|
+
}
|
|
1293
|
+
});
|
|
1294
|
+
if (shouldDelete) {
|
|
1295
|
+
emnapiTSFN.destroy(func);
|
|
1296
|
+
}
|
|
1199
1297
|
},
|
|
1200
1298
|
finalize: function (func) {
|
|
1201
1299
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1208,12 +1306,13 @@ function createNapiModule(options) {
|
|
|
1208
1306
|
envObject.callFinalizerInternal(0, finalize, data, context);
|
|
1209
1307
|
};
|
|
1210
1308
|
try {
|
|
1309
|
+
emnapiTSFN.emptyQueue(func);
|
|
1211
1310
|
if (finalize) {
|
|
1212
1311
|
if (emnapiNodeBinding) {
|
|
1213
1312
|
var resource = emnapiTSFN.getResource(func);
|
|
1214
1313
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1215
1314
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1216
|
-
var view = new DataView(
|
|
1315
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1217
1316
|
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1218
1317
|
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1219
1318
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
@@ -1225,7 +1324,7 @@ function createNapiModule(options) {
|
|
|
1225
1324
|
f();
|
|
1226
1325
|
}
|
|
1227
1326
|
}
|
|
1228
|
-
emnapiTSFN.
|
|
1327
|
+
emnapiTSFN.maybeDelete(func);
|
|
1229
1328
|
}
|
|
1230
1329
|
finally {
|
|
1231
1330
|
emnapiCtx.closeScope(envObject);
|
|
@@ -1241,7 +1340,7 @@ function createNapiModule(options) {
|
|
|
1241
1340
|
try {
|
|
1242
1341
|
if (set_closing) {
|
|
1243
1342
|
emnapiTSFN.getMutex(func).execute(function () {
|
|
1244
|
-
emnapiTSFN.
|
|
1343
|
+
emnapiTSFN.setState(func, 1);
|
|
1245
1344
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1246
1345
|
emnapiTSFN.getCond(func).signal();
|
|
1247
1346
|
}
|
|
@@ -1251,6 +1350,7 @@ function createNapiModule(options) {
|
|
|
1251
1350
|
return;
|
|
1252
1351
|
}
|
|
1253
1352
|
emnapiTSFN.setHandlesClosing(func, 1);
|
|
1353
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
|
|
1254
1354
|
emnapiCtx.feature.setImmediate(function () {
|
|
1255
1355
|
emnapiTSFN.finalize(func);
|
|
1256
1356
|
});
|
|
@@ -1266,10 +1366,7 @@ function createNapiModule(options) {
|
|
|
1266
1366
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1267
1367
|
var cond = emnapiTSFN.getCond(func);
|
|
1268
1368
|
mutex.execute(function () {
|
|
1269
|
-
if (emnapiTSFN.
|
|
1270
|
-
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1271
|
-
}
|
|
1272
|
-
else {
|
|
1369
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1273
1370
|
var size = emnapiTSFN.getQueueSize(func);
|
|
1274
1371
|
if (size > 0) {
|
|
1275
1372
|
data = emnapiTSFN.shiftQueue(func);
|
|
@@ -1282,7 +1379,7 @@ function createNapiModule(options) {
|
|
|
1282
1379
|
}
|
|
1283
1380
|
if (size === 0) {
|
|
1284
1381
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1285
|
-
emnapiTSFN.
|
|
1382
|
+
emnapiTSFN.setState(func, 1);
|
|
1286
1383
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1287
1384
|
cond.signal();
|
|
1288
1385
|
}
|
|
@@ -1293,6 +1390,9 @@ function createNapiModule(options) {
|
|
|
1293
1390
|
has_more = true;
|
|
1294
1391
|
}
|
|
1295
1392
|
}
|
|
1393
|
+
else {
|
|
1394
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1395
|
+
}
|
|
1296
1396
|
});
|
|
1297
1397
|
if (popped_value) {
|
|
1298
1398
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1320,7 +1420,7 @@ function createNapiModule(options) {
|
|
|
1320
1420
|
var resource = emnapiTSFN.getResource(func);
|
|
1321
1421
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1322
1422
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1323
|
-
var view = new DataView(
|
|
1423
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1324
1424
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
1325
1425
|
asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
|
|
1326
1426
|
triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
|
|
@@ -1339,8 +1439,9 @@ function createNapiModule(options) {
|
|
|
1339
1439
|
dispatch: function (func) {
|
|
1340
1440
|
var has_more = true;
|
|
1341
1441
|
var iterations_left = 1000;
|
|
1342
|
-
var
|
|
1343
|
-
var
|
|
1442
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1443
|
+
var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
|
|
1444
|
+
var index = dispatchStateAddress >>> 2;
|
|
1344
1445
|
while (has_more && --iterations_left !== 0) {
|
|
1345
1446
|
Atomics.store(ui32a, index, 1);
|
|
1346
1447
|
has_more = emnapiTSFN.dispatchOne(func);
|
|
@@ -1352,25 +1453,66 @@ function createNapiModule(options) {
|
|
|
1352
1453
|
emnapiTSFN.send(func);
|
|
1353
1454
|
}
|
|
1354
1455
|
},
|
|
1355
|
-
|
|
1356
|
-
var
|
|
1357
|
-
|
|
1456
|
+
enqueue: function (func) {
|
|
1457
|
+
var pending = func + emnapiTSFN.offset.async_pending;
|
|
1458
|
+
var scheduled = func + emnapiTSFN.offset.async_u_fd;
|
|
1459
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
|
|
1460
|
+
if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
|
|
1358
1461
|
return;
|
|
1359
1462
|
}
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1463
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1464
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1465
|
+
return;
|
|
1466
|
+
}
|
|
1467
|
+
if (Atomics.load(i32a, pending >>> 2) === 0) {
|
|
1468
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1469
|
+
return;
|
|
1470
|
+
}
|
|
1471
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1472
|
+
try {
|
|
1473
|
+
if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
|
|
1474
|
+
return;
|
|
1475
|
+
}
|
|
1476
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1477
|
+
return;
|
|
1478
|
+
}
|
|
1479
|
+
emnapiTSFN.dispatch(func);
|
|
1480
|
+
}
|
|
1481
|
+
finally {
|
|
1482
|
+
if (emnapiTSFN._liveSet.has(func)) {
|
|
1483
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1484
|
+
if (Atomics.load(i32a, pending >>> 2) !== 0) {
|
|
1485
|
+
emnapiTSFN.enqueue(func);
|
|
1486
|
+
}
|
|
1366
1487
|
}
|
|
1367
1488
|
}
|
|
1368
1489
|
});
|
|
1490
|
+
});
|
|
1491
|
+
},
|
|
1492
|
+
send: function (func) {
|
|
1493
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1494
|
+
var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
|
|
1495
|
+
if ((current_state & 1) === 1) {
|
|
1496
|
+
return;
|
|
1369
1497
|
}
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1498
|
+
var pendng = func + emnapiTSFN.offset.async_pending;
|
|
1499
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
1500
|
+
return;
|
|
1501
|
+
}
|
|
1502
|
+
if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
|
|
1503
|
+
if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
|
|
1504
|
+
postMessage({
|
|
1505
|
+
__emnapi__: {
|
|
1506
|
+
type: 'tsfn-send',
|
|
1507
|
+
payload: {
|
|
1508
|
+
tsfn: func
|
|
1509
|
+
}
|
|
1510
|
+
}
|
|
1511
|
+
});
|
|
1512
|
+
}
|
|
1513
|
+
else {
|
|
1514
|
+
emnapiTSFN.enqueue(func);
|
|
1515
|
+
}
|
|
1374
1516
|
}
|
|
1375
1517
|
}
|
|
1376
1518
|
};
|
|
@@ -1381,6 +1523,13 @@ function createNapiModule(options) {
|
|
|
1381
1523
|
envObject.checkGCAccess();
|
|
1382
1524
|
if (!async_resource_name)
|
|
1383
1525
|
return envObject.setLastError(1);
|
|
1526
|
+
max_queue_size >>>= 0;
|
|
1527
|
+
initial_thread_count >>>= 0;
|
|
1528
|
+
env >>>= 0;
|
|
1529
|
+
thread_finalize_data >>>= 0;
|
|
1530
|
+
thread_finalize_cb >>>= 0;
|
|
1531
|
+
context >>>= 0;
|
|
1532
|
+
call_js_cb >>>= 0;
|
|
1384
1533
|
max_queue_size = max_queue_size >>> 0;
|
|
1385
1534
|
initial_thread_count = initial_thread_count >>> 0;
|
|
1386
1535
|
if (initial_thread_count === 0) {
|
|
@@ -1389,6 +1538,7 @@ function createNapiModule(options) {
|
|
|
1389
1538
|
if (!result)
|
|
1390
1539
|
return envObject.setLastError(1);
|
|
1391
1540
|
var ref = 0;
|
|
1541
|
+
func >>>= 0;
|
|
1392
1542
|
if (!func) {
|
|
1393
1543
|
if (!call_js_cb)
|
|
1394
1544
|
return envObject.setLastError(1);
|
|
@@ -1418,21 +1568,23 @@ function createNapiModule(options) {
|
|
|
1418
1568
|
}
|
|
1419
1569
|
asyncResourceName = String(asyncResourceName);
|
|
1420
1570
|
var resource_name = envObject.ensureHandleId(asyncResourceName);
|
|
1421
|
-
var sizeofTSFN = emnapiTSFN.offset.
|
|
1571
|
+
var sizeofTSFN = emnapiTSFN.offset.__size__;
|
|
1422
1572
|
var tsfn = _malloc(sizeofTSFN);
|
|
1423
1573
|
if (!tsfn)
|
|
1424
1574
|
return envObject.setLastError(9);
|
|
1425
|
-
|
|
1575
|
+
tsfn >>>= 0;
|
|
1576
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
1426
1577
|
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
|
|
1427
1578
|
var resource_ = resourceRef.id;
|
|
1428
1579
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1429
|
-
HEAP_DATA_VIEW.setUint32(tsfn, resource_, true);
|
|
1580
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
|
|
1430
1581
|
if (!emnapiTSFN.initQueue(tsfn)) {
|
|
1431
1582
|
_free(tsfn);
|
|
1432
1583
|
resourceRef.dispose();
|
|
1433
1584
|
return envObject.setLastError(9);
|
|
1434
1585
|
}
|
|
1435
1586
|
_emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
|
|
1587
|
+
HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
|
|
1436
1588
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
|
|
1437
1589
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
|
|
1438
1590
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
|
|
@@ -1442,9 +1594,11 @@ function createNapiModule(options) {
|
|
|
1442
1594
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
|
|
1443
1595
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
|
|
1444
1596
|
emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
|
|
1597
|
+
emnapiTSFN._liveSet.add(tsfn);
|
|
1445
1598
|
envObject.ref();
|
|
1446
1599
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1447
|
-
HEAP_DATA_VIEW.
|
|
1600
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
|
|
1601
|
+
result >>>= 0;
|
|
1448
1602
|
HEAP_DATA_VIEW.setUint32(result, tsfn, true);
|
|
1449
1603
|
return envObject.clearLastError();
|
|
1450
1604
|
}
|
|
@@ -1453,6 +1607,8 @@ function createNapiModule(options) {
|
|
|
1453
1607
|
abort();
|
|
1454
1608
|
return 1;
|
|
1455
1609
|
}
|
|
1610
|
+
func >>>= 0;
|
|
1611
|
+
result >>>= 0;
|
|
1456
1612
|
var context = emnapiTSFN.getContext(func);
|
|
1457
1613
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1458
1614
|
HEAP_DATA_VIEW.setUint32(result, context, true);
|
|
@@ -1463,6 +1619,8 @@ function createNapiModule(options) {
|
|
|
1463
1619
|
abort();
|
|
1464
1620
|
return 1;
|
|
1465
1621
|
}
|
|
1622
|
+
func >>>= 0;
|
|
1623
|
+
data >>>= 0;
|
|
1466
1624
|
return emnapiTSFN.push(func, data, mode);
|
|
1467
1625
|
}
|
|
1468
1626
|
function napi_acquire_threadsafe_function(func) {
|
|
@@ -1470,13 +1628,14 @@ function createNapiModule(options) {
|
|
|
1470
1628
|
abort();
|
|
1471
1629
|
return 1;
|
|
1472
1630
|
}
|
|
1631
|
+
func >>>= 0;
|
|
1473
1632
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1474
1633
|
return mutex.execute(function () {
|
|
1475
|
-
if (emnapiTSFN.
|
|
1476
|
-
|
|
1634
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1635
|
+
emnapiTSFN.addThreadCount(func);
|
|
1636
|
+
return 0;
|
|
1477
1637
|
}
|
|
1478
|
-
|
|
1479
|
-
return 0;
|
|
1638
|
+
return 16;
|
|
1480
1639
|
});
|
|
1481
1640
|
}
|
|
1482
1641
|
function napi_release_threadsafe_function(func, mode) {
|
|
@@ -1484,37 +1643,52 @@ function createNapiModule(options) {
|
|
|
1484
1643
|
abort();
|
|
1485
1644
|
return 1;
|
|
1486
1645
|
}
|
|
1646
|
+
func >>>= 0;
|
|
1487
1647
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1488
1648
|
var cond = emnapiTSFN.getCond(func);
|
|
1489
|
-
|
|
1649
|
+
var shouldDelete = false;
|
|
1650
|
+
var ret = mutex.execute(function () {
|
|
1490
1651
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1491
1652
|
return 1;
|
|
1492
1653
|
}
|
|
1493
1654
|
emnapiTSFN.subThreadCount(func);
|
|
1494
1655
|
if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
if (
|
|
1656
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1657
|
+
if (mode === 1) {
|
|
1658
|
+
emnapiTSFN.setState(func, 1);
|
|
1659
|
+
}
|
|
1660
|
+
if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1500
1661
|
cond.signal();
|
|
1501
1662
|
}
|
|
1502
1663
|
emnapiTSFN.send(func);
|
|
1503
1664
|
}
|
|
1504
1665
|
}
|
|
1666
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1667
|
+
return 0;
|
|
1668
|
+
}
|
|
1669
|
+
shouldDelete = true;
|
|
1505
1670
|
return 0;
|
|
1506
1671
|
});
|
|
1672
|
+
if (shouldDelete) {
|
|
1673
|
+
emnapiTSFN.destroy(func);
|
|
1674
|
+
}
|
|
1675
|
+
return ret;
|
|
1507
1676
|
}
|
|
1508
1677
|
function napi_unref_threadsafe_function(env, func) {
|
|
1509
1678
|
if (!func) {
|
|
1510
1679
|
abort();
|
|
1511
1680
|
return 1;
|
|
1512
1681
|
}
|
|
1513
|
-
|
|
1514
|
-
var
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1682
|
+
func >>>= 0;
|
|
1683
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1684
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1685
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1686
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1687
|
+
if (currentValue > 0) {
|
|
1688
|
+
Atomics.store(arr, asyncRefOffset, currentValue - 1);
|
|
1689
|
+
if (currentValue === 1) {
|
|
1690
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1691
|
+
}
|
|
1518
1692
|
}
|
|
1519
1693
|
return 0;
|
|
1520
1694
|
}
|
|
@@ -1523,34 +1697,66 @@ function createNapiModule(options) {
|
|
|
1523
1697
|
abort();
|
|
1524
1698
|
return 1;
|
|
1525
1699
|
}
|
|
1526
|
-
|
|
1527
|
-
var
|
|
1528
|
-
|
|
1529
|
-
|
|
1700
|
+
func >>>= 0;
|
|
1701
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1702
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1703
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1704
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1705
|
+
if (!currentValue) {
|
|
1530
1706
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1531
1707
|
}
|
|
1708
|
+
Atomics.store(arr, asyncRefOffset, currentValue + 1);
|
|
1532
1709
|
return 0;
|
|
1533
1710
|
}
|
|
1534
1711
|
var emnapiAWMT = {
|
|
1535
|
-
|
|
1536
|
-
runningWorkers: [],
|
|
1537
|
-
workQueue: [],
|
|
1712
|
+
pool: [],
|
|
1538
1713
|
workerReady: null,
|
|
1714
|
+
globalAddress: 0,
|
|
1715
|
+
globalOffset: {
|
|
1716
|
+
idle_threads: 0,
|
|
1717
|
+
q: 1 * 4,
|
|
1718
|
+
next: 1 * 4,
|
|
1719
|
+
prev: 2 * 4,
|
|
1720
|
+
mutex: 3 * 4,
|
|
1721
|
+
cond: 4 * 4,
|
|
1722
|
+
exit_message: 5 * 4,
|
|
1723
|
+
end: 7 * 4
|
|
1724
|
+
},
|
|
1539
1725
|
offset: {
|
|
1540
1726
|
resource: 0,
|
|
1541
1727
|
async_id: 8,
|
|
1542
1728
|
trigger_async_id: 16,
|
|
1543
1729
|
env: 24,
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1730
|
+
status: 1 * 4 + 24,
|
|
1731
|
+
queue: 2 * 4 + 24,
|
|
1732
|
+
queue_next: 2 * 4 + 24,
|
|
1733
|
+
queue_prev: 3 * 4 + 24,
|
|
1734
|
+
data: 4 * 4 + 24,
|
|
1735
|
+
execute: 5 * 4 + 24,
|
|
1736
|
+
complete: 6 * 4 + 24,
|
|
1737
|
+
end: 7 * 4 + 24
|
|
1738
|
+
},
|
|
1739
|
+
ensureBufferFor: function (end) {
|
|
1740
|
+
var buffer = wasmMemory.buffer;
|
|
1741
|
+
if (end > buffer.byteLength) {
|
|
1742
|
+
wasmMemory.grow(0);
|
|
1743
|
+
buffer = wasmMemory.buffer;
|
|
1744
|
+
}
|
|
1745
|
+
return buffer;
|
|
1548
1746
|
},
|
|
1549
1747
|
init: function () {
|
|
1550
|
-
emnapiAWMT.
|
|
1551
|
-
emnapiAWMT.runningWorkers = [];
|
|
1552
|
-
emnapiAWMT.workQueue = [];
|
|
1748
|
+
emnapiAWMT.pool = [];
|
|
1553
1749
|
emnapiAWMT.workerReady = null;
|
|
1750
|
+
if (typeof PThread !== 'undefined') {
|
|
1751
|
+
PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
|
|
1752
|
+
Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
|
|
1753
|
+
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
1754
|
+
PThread.getNewWorker = function () {
|
|
1755
|
+
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
1756
|
+
emnapiAWMT.addListener(r);
|
|
1757
|
+
return r;
|
|
1758
|
+
};
|
|
1759
|
+
}
|
|
1554
1760
|
},
|
|
1555
1761
|
addListener: function (worker) {
|
|
1556
1762
|
if (!worker)
|
|
@@ -1564,18 +1770,8 @@ function createNapiModule(options) {
|
|
|
1564
1770
|
var type = __emnapi__.type;
|
|
1565
1771
|
var payload = __emnapi__.payload;
|
|
1566
1772
|
if (type === 'async-work-complete') {
|
|
1567
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1568
|
-
emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
|
|
1569
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1570
|
-
emnapiAWMT.checkIdleWorker();
|
|
1571
1773
|
emnapiAWMT.callComplete(payload.work, 0);
|
|
1572
1774
|
}
|
|
1573
|
-
else if (type === 'async-work-queue') {
|
|
1574
|
-
emnapiAWMT.scheduleWork(payload.work);
|
|
1575
|
-
}
|
|
1576
|
-
else if (type === 'async-work-cancel') {
|
|
1577
|
-
emnapiAWMT.cancelWork(payload.work);
|
|
1578
|
-
}
|
|
1579
1775
|
}
|
|
1580
1776
|
};
|
|
1581
1777
|
var dispose = function () {
|
|
@@ -1596,142 +1792,233 @@ function createNapiModule(options) {
|
|
|
1596
1792
|
}
|
|
1597
1793
|
return true;
|
|
1598
1794
|
},
|
|
1795
|
+
initGlobal: function () {
|
|
1796
|
+
if (!emnapiAWMT.globalAddress) {
|
|
1797
|
+
emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
|
|
1798
|
+
emnapiAWMT.globalAddress >>>= 0;
|
|
1799
|
+
var size = emnapiAWMT.globalOffset.end;
|
|
1800
|
+
var addr = emnapiAWMT.globalAddress;
|
|
1801
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
|
|
1802
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
|
|
1803
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
|
|
1804
|
+
}
|
|
1805
|
+
},
|
|
1806
|
+
terminateWorkers: function () {
|
|
1807
|
+
emnapiAWMT.pool.forEach(function (w) {
|
|
1808
|
+
var _a, _b;
|
|
1809
|
+
(_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
1810
|
+
(_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
1811
|
+
w.terminate();
|
|
1812
|
+
});
|
|
1813
|
+
emnapiAWMT.pool.length = 0;
|
|
1814
|
+
},
|
|
1599
1815
|
initWorkers: function (n) {
|
|
1600
1816
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
1601
1817
|
return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
|
|
1602
1818
|
}
|
|
1603
1819
|
if (emnapiAWMT.workerReady)
|
|
1604
1820
|
return emnapiAWMT.workerReady;
|
|
1605
|
-
if (typeof onCreateWorker !== 'function') {
|
|
1606
|
-
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
1607
|
-
}
|
|
1608
|
-
var promises = [];
|
|
1609
|
-
var args = [];
|
|
1610
1821
|
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
1611
1822
|
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
1612
1823
|
}
|
|
1824
|
+
var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
|
|
1825
|
+
var args = [];
|
|
1826
|
+
emnapiAWMT.initGlobal();
|
|
1613
1827
|
for (var i = 0; i < n; ++i) {
|
|
1614
|
-
args.push(
|
|
1828
|
+
args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
|
|
1615
1829
|
}
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
var p = PThread.loadWasmModuleToWorker(worker);
|
|
1620
|
-
emnapiAWMT.addListener(worker);
|
|
1621
|
-
promises.push(p.then(function () {
|
|
1622
|
-
if (typeof worker.unref === 'function') {
|
|
1623
|
-
worker.unref();
|
|
1624
|
-
}
|
|
1625
|
-
}));
|
|
1626
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1627
|
-
var arg = args[i];
|
|
1628
|
-
worker.threadBlockBase = arg;
|
|
1629
|
-
worker.postMessage({
|
|
1630
|
-
__emnapi__: {
|
|
1631
|
-
type: 'async-worker-init',
|
|
1632
|
-
payload: { arg: arg }
|
|
1633
|
-
}
|
|
1634
|
-
});
|
|
1635
|
-
};
|
|
1636
|
-
for (var i = 0; i < n; ++i) {
|
|
1637
|
-
_loop_1(i);
|
|
1830
|
+
var promises = args.map(function (index) {
|
|
1831
|
+
if (index === 0) {
|
|
1832
|
+
return Promise.reject(new Error('Failed to create async worker'));
|
|
1638
1833
|
}
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1834
|
+
var worker;
|
|
1835
|
+
if (index < 0) {
|
|
1836
|
+
worker = emnapiAWMT.pool[-index - 1];
|
|
1837
|
+
if (worker)
|
|
1838
|
+
return worker.whenLoaded;
|
|
1644
1839
|
}
|
|
1645
|
-
|
|
1646
|
-
|
|
1840
|
+
index >>>= 0;
|
|
1841
|
+
var tidOffset = 20;
|
|
1842
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
|
|
1843
|
+
var tid = view.getInt32(index + tidOffset, true);
|
|
1844
|
+
worker = PThread.pthreads[tid];
|
|
1845
|
+
return worker.whenLoaded;
|
|
1846
|
+
});
|
|
1647
1847
|
emnapiAWMT.workerReady = Promise.all(promises);
|
|
1648
1848
|
return emnapiAWMT.workerReady;
|
|
1649
1849
|
},
|
|
1650
|
-
checkIdleWorker: function () {
|
|
1651
|
-
if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
|
|
1652
|
-
var worker = emnapiAWMT.unusedWorkers.shift();
|
|
1653
|
-
var work = emnapiAWMT.workQueue.shift();
|
|
1654
|
-
emnapiAWMT.runningWorkers.push(worker);
|
|
1655
|
-
worker.postMessage({
|
|
1656
|
-
__emnapi__: {
|
|
1657
|
-
type: 'async-work-execute',
|
|
1658
|
-
payload: { work: work }
|
|
1659
|
-
}
|
|
1660
|
-
});
|
|
1661
|
-
}
|
|
1662
|
-
},
|
|
1663
1850
|
getResource: function (work) {
|
|
1664
|
-
|
|
1851
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
|
|
1852
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1853
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
|
|
1665
1854
|
},
|
|
1666
1855
|
getExecute: function (work) {
|
|
1667
|
-
|
|
1856
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
|
|
1857
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1858
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
|
|
1668
1859
|
},
|
|
1669
1860
|
getComplete: function (work) {
|
|
1670
|
-
|
|
1861
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
|
|
1862
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1863
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
|
|
1671
1864
|
},
|
|
1672
1865
|
getEnv: function (work) {
|
|
1673
|
-
|
|
1866
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
|
|
1867
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1868
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
|
|
1674
1869
|
},
|
|
1675
1870
|
getData: function (work) {
|
|
1676
|
-
|
|
1871
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
|
|
1872
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1873
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
|
|
1874
|
+
},
|
|
1875
|
+
getMutex: function () {
|
|
1876
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
|
|
1877
|
+
var mutex = {
|
|
1878
|
+
lock: function () {
|
|
1879
|
+
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1880
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1881
|
+
if (isBrowserMain) {
|
|
1882
|
+
while (true) {
|
|
1883
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1884
|
+
if (oldValue === 0) {
|
|
1885
|
+
return;
|
|
1886
|
+
}
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
else {
|
|
1890
|
+
while (true) {
|
|
1891
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1892
|
+
if (oldValue === 0) {
|
|
1893
|
+
return;
|
|
1894
|
+
}
|
|
1895
|
+
Atomics.wait(i32a, 0, 10);
|
|
1896
|
+
}
|
|
1897
|
+
}
|
|
1898
|
+
},
|
|
1899
|
+
unlock: function () {
|
|
1900
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1901
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1902
|
+
if (oldValue !== 10) {
|
|
1903
|
+
throw new Error('Tried to unlock while not holding the mutex');
|
|
1904
|
+
}
|
|
1905
|
+
Atomics.notify(i32a, 0, 1);
|
|
1906
|
+
},
|
|
1907
|
+
execute: function (fn) {
|
|
1908
|
+
mutex.lock();
|
|
1909
|
+
try {
|
|
1910
|
+
return fn();
|
|
1911
|
+
}
|
|
1912
|
+
finally {
|
|
1913
|
+
mutex.unlock();
|
|
1914
|
+
}
|
|
1915
|
+
}
|
|
1916
|
+
};
|
|
1917
|
+
return mutex;
|
|
1918
|
+
},
|
|
1919
|
+
getCond: function () {
|
|
1920
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
|
|
1921
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1922
|
+
var cond = {
|
|
1923
|
+
wait: function () {
|
|
1924
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1925
|
+
var value = Atomics.load(i32a, 0);
|
|
1926
|
+
mutex.unlock();
|
|
1927
|
+
Atomics.wait(i32a, 0, value);
|
|
1928
|
+
mutex.lock();
|
|
1929
|
+
},
|
|
1930
|
+
signal: function () {
|
|
1931
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1932
|
+
Atomics.add(i32a, 0, 1);
|
|
1933
|
+
Atomics.notify(i32a, 0, 1);
|
|
1934
|
+
}
|
|
1935
|
+
};
|
|
1936
|
+
return cond;
|
|
1937
|
+
},
|
|
1938
|
+
queueInit: function (q) {
|
|
1939
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1940
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1941
|
+
HEAP_DATA_VIEW.setUint32(q, q, true);
|
|
1942
|
+
HEAP_DATA_VIEW.setUint32(q + 4, q, true);
|
|
1943
|
+
},
|
|
1944
|
+
queueInsertTail: function (h, q) {
|
|
1945
|
+
emnapiAWMT.ensureBufferFor(h + 4 + 4);
|
|
1946
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1947
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1948
|
+
HEAP_DATA_VIEW.setUint32(q, h, true);
|
|
1949
|
+
var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
|
|
1950
|
+
HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
|
|
1951
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1952
|
+
HEAP_DATA_VIEW.setUint32(qprev, q, true);
|
|
1953
|
+
HEAP_DATA_VIEW.setUint32(h + 4, q, true);
|
|
1954
|
+
},
|
|
1955
|
+
queueRemove: function (q) {
|
|
1956
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1957
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1958
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1959
|
+
var qnext = HEAP_DATA_VIEW.getUint32(q, true);
|
|
1960
|
+
HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
|
|
1961
|
+
HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
|
|
1962
|
+
},
|
|
1963
|
+
queueEmpty: function (q) {
|
|
1964
|
+
emnapiAWMT.ensureBufferFor(q + 4);
|
|
1965
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1966
|
+
return q == HEAP_DATA_VIEW.getUint32(q, true);
|
|
1677
1967
|
},
|
|
1678
1968
|
scheduleWork: function (work) {
|
|
1679
1969
|
var _a;
|
|
1680
|
-
if (
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
}
|
|
1970
|
+
if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
|
|
1971
|
+
emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
|
|
1972
|
+
emnapiAWMT.workerReady.ready = true;
|
|
1973
|
+
}).catch(function (err) {
|
|
1974
|
+
emnapiAWMT.workerReady = null;
|
|
1975
|
+
throw err;
|
|
1687
1976
|
});
|
|
1688
|
-
return;
|
|
1689
1977
|
}
|
|
1690
1978
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1691
|
-
emnapiAWMT.
|
|
1692
|
-
|
|
1693
|
-
|
|
1979
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
1980
|
+
Atomics.store(statusBuffer, 0, 0);
|
|
1981
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1982
|
+
var cond = emnapiAWMT.getCond();
|
|
1983
|
+
mutex.lock();
|
|
1984
|
+
try {
|
|
1985
|
+
emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
|
|
1694
1986
|
}
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
}, fail);
|
|
1705
|
-
}
|
|
1706
|
-
catch (err) {
|
|
1707
|
-
fail(err);
|
|
1708
|
-
}
|
|
1987
|
+
catch (err) {
|
|
1988
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1989
|
+
mutex.unlock();
|
|
1990
|
+
throw err;
|
|
1991
|
+
}
|
|
1992
|
+
emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
|
|
1993
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1994
|
+
if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
|
|
1995
|
+
cond.signal();
|
|
1709
1996
|
}
|
|
1997
|
+
mutex.unlock();
|
|
1710
1998
|
},
|
|
1711
1999
|
cancelWork: function (work) {
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
}
|
|
1720
|
-
|
|
2000
|
+
var cancelled = false;
|
|
2001
|
+
emnapiAWMT.getMutex().execute(function () {
|
|
2002
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
|
|
2003
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2004
|
+
cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
|
|
2005
|
+
if (cancelled) {
|
|
2006
|
+
emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
|
|
2007
|
+
}
|
|
2008
|
+
});
|
|
2009
|
+
if (!cancelled) {
|
|
2010
|
+
return 9;
|
|
1721
2011
|
}
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
emnapiAWMT.workQueue.splice(index, 1);
|
|
1725
|
-
emnapiCtx.feature.setImmediate(function () {
|
|
1726
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1727
|
-
emnapiAWMT.checkIdleWorker();
|
|
1728
|
-
emnapiAWMT.callComplete(work, 11);
|
|
1729
|
-
});
|
|
1730
|
-
return 0;
|
|
2012
|
+
if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
|
|
2013
|
+
return 9;
|
|
1731
2014
|
}
|
|
1732
|
-
|
|
2015
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
2016
|
+
emnapiAWMT.callComplete(work, 11);
|
|
2017
|
+
});
|
|
2018
|
+
return 0;
|
|
1733
2019
|
},
|
|
1734
2020
|
callComplete: function (work, status) {
|
|
2021
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1735
2022
|
var complete = emnapiAWMT.getComplete(work);
|
|
1736
2023
|
var env = emnapiAWMT.getEnv(work);
|
|
1737
2024
|
var data = emnapiAWMT.getData(work);
|
|
@@ -1749,7 +2036,7 @@ function createNapiModule(options) {
|
|
|
1749
2036
|
var resource = emnapiAWMT.getResource(work);
|
|
1750
2037
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1751
2038
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1752
|
-
var view = new DataView(
|
|
2039
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
1753
2040
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
1754
2041
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
1755
2042
|
emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
|
|
@@ -1766,6 +2053,7 @@ function createNapiModule(options) {
|
|
|
1766
2053
|
}
|
|
1767
2054
|
}
|
|
1768
2055
|
};
|
|
2056
|
+
emnapiAWMT.init();
|
|
1769
2057
|
var napi_create_async_work = singleThreadAsyncWork
|
|
1770
2058
|
? function (env, resource, resource_name, execute, complete, data, result) {
|
|
1771
2059
|
if (!env)
|
|
@@ -1787,6 +2075,7 @@ function createNapiModule(options) {
|
|
|
1787
2075
|
return envObject.setLastError(1);
|
|
1788
2076
|
var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
|
|
1789
2077
|
var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
|
|
2078
|
+
result >>>= 0;
|
|
1790
2079
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1791
2080
|
HEAP_DATA_VIEW.setUint32(result, id, true);
|
|
1792
2081
|
return envObject.clearLastError();
|
|
@@ -1813,7 +2102,8 @@ function createNapiModule(options) {
|
|
|
1813
2102
|
var aw = _malloc(sizeofAW);
|
|
1814
2103
|
if (!aw)
|
|
1815
2104
|
return envObject.setLastError(9);
|
|
1816
|
-
|
|
2105
|
+
aw >>>= 0;
|
|
2106
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
|
|
1817
2107
|
var s = envObject.ensureHandleId(resourceObject);
|
|
1818
2108
|
var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
|
|
1819
2109
|
var resource_ = resourceRef.id;
|
|
@@ -1824,6 +2114,8 @@ function createNapiModule(options) {
|
|
|
1824
2114
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
|
|
1825
2115
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
|
|
1826
2116
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
|
|
2117
|
+
emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
|
|
2118
|
+
result >>>= 0;
|
|
1827
2119
|
HEAP_DATA_VIEW.setUint32(result, aw, true);
|
|
1828
2120
|
return envObject.clearLastError();
|
|
1829
2121
|
};
|
|
@@ -1835,6 +2127,7 @@ function createNapiModule(options) {
|
|
|
1835
2127
|
envObject.checkGCAccess();
|
|
1836
2128
|
if (!work)
|
|
1837
2129
|
return envObject.setLastError(1);
|
|
2130
|
+
work >>>= 0;
|
|
1838
2131
|
emnapiAWST.remove(work);
|
|
1839
2132
|
return envObject.clearLastError();
|
|
1840
2133
|
}
|
|
@@ -1845,10 +2138,11 @@ function createNapiModule(options) {
|
|
|
1845
2138
|
envObject.checkGCAccess();
|
|
1846
2139
|
if (!work)
|
|
1847
2140
|
return envObject.setLastError(1);
|
|
2141
|
+
work >>>= 0;
|
|
1848
2142
|
var resource = emnapiAWMT.getResource(work);
|
|
1849
2143
|
emnapiCtx.refStore.get(resource).dispose();
|
|
1850
2144
|
if (emnapiNodeBinding) {
|
|
1851
|
-
var view = new DataView(
|
|
2145
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
1852
2146
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
1853
2147
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
1854
2148
|
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
@@ -1863,6 +2157,7 @@ function createNapiModule(options) {
|
|
|
1863
2157
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1864
2158
|
if (!work)
|
|
1865
2159
|
return envObject.setLastError(1);
|
|
2160
|
+
work >>>= 0;
|
|
1866
2161
|
emnapiAWST.queue(work);
|
|
1867
2162
|
return envObject.clearLastError();
|
|
1868
2163
|
}
|
|
@@ -1872,6 +2167,7 @@ function createNapiModule(options) {
|
|
|
1872
2167
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1873
2168
|
if (!work)
|
|
1874
2169
|
return envObject.setLastError(1);
|
|
2170
|
+
work >>>= 0;
|
|
1875
2171
|
emnapiAWMT.scheduleWork(work);
|
|
1876
2172
|
return envObject.clearLastError();
|
|
1877
2173
|
};
|
|
@@ -1882,6 +2178,7 @@ function createNapiModule(options) {
|
|
|
1882
2178
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1883
2179
|
if (!work)
|
|
1884
2180
|
return envObject.setLastError(1);
|
|
2181
|
+
work >>>= 0;
|
|
1885
2182
|
var status = emnapiAWST.cancel(work);
|
|
1886
2183
|
if (status === 0)
|
|
1887
2184
|
return envObject.clearLastError();
|
|
@@ -1893,41 +2190,125 @@ function createNapiModule(options) {
|
|
|
1893
2190
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1894
2191
|
if (!work)
|
|
1895
2192
|
return envObject.setLastError(1);
|
|
2193
|
+
work >>>= 0;
|
|
1896
2194
|
var status = emnapiAWMT.cancelWork(work);
|
|
1897
2195
|
if (status === 0)
|
|
1898
2196
|
return envObject.clearLastError();
|
|
1899
2197
|
return envObject.setLastError(status);
|
|
1900
2198
|
};
|
|
1901
|
-
function
|
|
2199
|
+
function _emnapi_async_worker(globalAddress) {
|
|
2200
|
+
globalAddress >>>= 0;
|
|
2201
|
+
emnapiAWMT.globalAddress = globalAddress;
|
|
2202
|
+
var mutex = emnapiAWMT.getMutex();
|
|
2203
|
+
var cond = emnapiAWMT.getCond();
|
|
2204
|
+
mutex.lock();
|
|
2205
|
+
var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
|
|
2206
|
+
var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
|
|
2207
|
+
var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
|
|
2208
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2209
|
+
for (;;) {
|
|
2210
|
+
emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
|
|
2211
|
+
while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
|
|
2212
|
+
Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2213
|
+
cond.wait();
|
|
2214
|
+
Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2215
|
+
}
|
|
2216
|
+
var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
|
|
2217
|
+
if (q === exitMessageAddr) {
|
|
2218
|
+
cond.signal();
|
|
2219
|
+
mutex.unlock();
|
|
2220
|
+
break;
|
|
2221
|
+
}
|
|
2222
|
+
var work = q - emnapiAWMT.offset.queue;
|
|
2223
|
+
emnapiAWMT.queueRemove(q);
|
|
2224
|
+
emnapiAWMT.queueInit(q);
|
|
2225
|
+
mutex.unlock();
|
|
2226
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
2227
|
+
if (Atomics.load(statusBuffer, 0) === 1) {
|
|
2228
|
+
abort('unreachable');
|
|
2229
|
+
}
|
|
2230
|
+
var execute = emnapiAWMT.getExecute(work);
|
|
2231
|
+
var env = emnapiAWMT.getEnv(work);
|
|
2232
|
+
var data = emnapiAWMT.getData(work);
|
|
2233
|
+
(wasmTable.get(execute))(env, data);
|
|
2234
|
+
Atomics.store(statusBuffer, 0, 2);
|
|
2235
|
+
var postMessage_1 = napiModule.postMessage;
|
|
2236
|
+
postMessage_1({
|
|
2237
|
+
__emnapi__: {
|
|
2238
|
+
type: 'async-work-complete',
|
|
2239
|
+
payload: { work: work }
|
|
2240
|
+
}
|
|
2241
|
+
});
|
|
2242
|
+
mutex.lock();
|
|
2243
|
+
}
|
|
2244
|
+
return 0;
|
|
2245
|
+
}
|
|
2246
|
+
function _emnapi_spawn_worker(f, globalAddress) {
|
|
2247
|
+
if (typeof onCreateWorker !== 'function') {
|
|
2248
|
+
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
2249
|
+
}
|
|
2250
|
+
var promises = [];
|
|
2251
|
+
var args = [];
|
|
2252
|
+
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
2253
|
+
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
2254
|
+
}
|
|
2255
|
+
args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
|
|
2256
|
+
var handleError = function (e) {
|
|
2257
|
+
if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
|
|
2258
|
+
emnapiAWMT.terminateWorkers();
|
|
2259
|
+
}
|
|
2260
|
+
};
|
|
2261
|
+
var ret;
|
|
2262
|
+
try {
|
|
2263
|
+
var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
|
|
2264
|
+
var p = PThread.loadWasmModuleToWorker(worker_1);
|
|
2265
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
2266
|
+
worker_1.on('error', handleError);
|
|
2267
|
+
}
|
|
2268
|
+
else {
|
|
2269
|
+
worker_1.addEventListener('error', handleError, false);
|
|
2270
|
+
}
|
|
2271
|
+
emnapiAWMT.addListener(worker_1);
|
|
2272
|
+
emnapiTSFN.addListener(worker_1);
|
|
2273
|
+
promises.push(p.then(function () {
|
|
2274
|
+
if (typeof worker_1.unref === 'function') {
|
|
2275
|
+
worker_1.unref();
|
|
2276
|
+
}
|
|
2277
|
+
}));
|
|
2278
|
+
ret = emnapiAWMT.pool.push(worker_1) - 1;
|
|
2279
|
+
var arg = args[0];
|
|
2280
|
+
worker_1.threadBlockBase = arg;
|
|
2281
|
+
worker_1.postMessage({
|
|
2282
|
+
__emnapi__: {
|
|
2283
|
+
type: 'async-worker-init',
|
|
2284
|
+
payload: { arg: arg, func: [f, globalAddress] }
|
|
2285
|
+
}
|
|
2286
|
+
});
|
|
2287
|
+
}
|
|
2288
|
+
catch (err) {
|
|
2289
|
+
var arg = args[0];
|
|
2290
|
+
_free(arg);
|
|
2291
|
+
throw err;
|
|
2292
|
+
}
|
|
2293
|
+
return ret;
|
|
2294
|
+
}
|
|
2295
|
+
function initWorker(startArg, func) {
|
|
1902
2296
|
if (napiModule.childThread) {
|
|
1903
2297
|
if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
|
|
1904
2298
|
throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
|
|
1905
2299
|
}
|
|
1906
2300
|
wasmInstance.exports.emnapi_async_worker_init(startArg);
|
|
2301
|
+
(wasmTable.get(func[0]))(func[1]);
|
|
1907
2302
|
}
|
|
1908
2303
|
else {
|
|
1909
2304
|
throw new Error('startThread is only available in child threads');
|
|
1910
2305
|
}
|
|
1911
2306
|
}
|
|
1912
|
-
function executeAsyncWork(work) {
|
|
1913
|
-
if (!ENVIRONMENT_IS_PTHREAD)
|
|
1914
|
-
return;
|
|
1915
|
-
var execute = emnapiAWMT.getExecute(work);
|
|
1916
|
-
var env = emnapiAWMT.getEnv(work);
|
|
1917
|
-
var data = emnapiAWMT.getData(work);
|
|
1918
|
-
(wasmTable.get(execute))(env, data);
|
|
1919
|
-
var postMessage = napiModule.postMessage;
|
|
1920
|
-
postMessage({
|
|
1921
|
-
__emnapi__: {
|
|
1922
|
-
type: 'async-work-complete',
|
|
1923
|
-
payload: { work: work }
|
|
1924
|
-
}
|
|
1925
|
-
});
|
|
1926
|
-
}
|
|
1927
2307
|
napiModule.initWorker = initWorker;
|
|
1928
|
-
napiModule.executeAsyncWork = executeAsyncWork;
|
|
1929
2308
|
var asyncWorkMod = Object.freeze({
|
|
1930
2309
|
__proto__: null,
|
|
2310
|
+
_emnapi_async_worker: _emnapi_async_worker,
|
|
2311
|
+
_emnapi_spawn_worker: _emnapi_spawn_worker,
|
|
1931
2312
|
napi_cancel_async_work: napi_cancel_async_work,
|
|
1932
2313
|
napi_create_async_work: napi_create_async_work,
|
|
1933
2314
|
napi_delete_async_work: napi_delete_async_work,
|
|
@@ -1988,6 +2369,7 @@ function createNapiModule(options) {
|
|
|
1988
2369
|
var pointer = _malloc(arrayBuffer.byteLength);
|
|
1989
2370
|
if (!pointer)
|
|
1990
2371
|
throw new Error('Out of memory');
|
|
2372
|
+
pointer >>>= 0;
|
|
1991
2373
|
new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
|
|
1992
2374
|
info.address = pointer;
|
|
1993
2375
|
info.ownership = emnapiExternalMemory.registry ? 0 : 1;
|
|
@@ -2009,8 +2391,7 @@ function createNapiModule(options) {
|
|
|
2009
2391
|
}
|
|
2010
2392
|
return view;
|
|
2011
2393
|
}
|
|
2012
|
-
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
|
|
2013
|
-
((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
|
|
2394
|
+
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
|
|
2014
2395
|
if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
|
|
2015
2396
|
var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
|
|
2016
2397
|
var Ctor = info.Ctor;
|
|
@@ -2040,6 +2421,55 @@ function createNapiModule(options) {
|
|
|
2040
2421
|
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
2041
2422
|
}
|
|
2042
2423
|
};
|
|
2424
|
+
var emnapiExternalSAB = {
|
|
2425
|
+
registry: undefined,
|
|
2426
|
+
handleTable: new WeakMap(),
|
|
2427
|
+
init: function () {
|
|
2428
|
+
emnapiExternalSAB.handleTable = new WeakMap();
|
|
2429
|
+
emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
|
|
2430
|
+
? new FinalizationRegistry(function (metaPtr) {
|
|
2431
|
+
emnapiExternalSAB.release(metaPtr);
|
|
2432
|
+
})
|
|
2433
|
+
: undefined;
|
|
2434
|
+
},
|
|
2435
|
+
allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
|
|
2436
|
+
var size = 4 * 6;
|
|
2437
|
+
var metaPtr = _malloc(size);
|
|
2438
|
+
if (!metaPtr)
|
|
2439
|
+
throw new Error('Out of memory');
|
|
2440
|
+
metaPtr >>>= 0;
|
|
2441
|
+
Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2442
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2443
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
|
|
2444
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
|
|
2445
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
|
|
2446
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
|
|
2447
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
|
|
2448
|
+
return metaPtr;
|
|
2449
|
+
},
|
|
2450
|
+
readMeta: function (metaPtr) {
|
|
2451
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2452
|
+
var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
|
|
2453
|
+
var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
|
|
2454
|
+
var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
|
|
2455
|
+
var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
|
|
2456
|
+
var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
|
|
2457
|
+
return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
|
|
2458
|
+
},
|
|
2459
|
+
release: function (metaPtr) {
|
|
2460
|
+
var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2461
|
+
if (oldRefcount === 1) {
|
|
2462
|
+
var info = emnapiExternalSAB.readMeta(metaPtr);
|
|
2463
|
+
var finalize_cb = info.finalize_cb;
|
|
2464
|
+
if (finalize_cb) {
|
|
2465
|
+
var finalize_data = info.finalize_data;
|
|
2466
|
+
var finalize_hint = info.finalize_hint;
|
|
2467
|
+
(wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
|
|
2468
|
+
}
|
|
2469
|
+
_free(metaPtr);
|
|
2470
|
+
}
|
|
2471
|
+
}
|
|
2472
|
+
};
|
|
2043
2473
|
var emnapiString = {
|
|
2044
2474
|
utf8Decoder: undefined,
|
|
2045
2475
|
utf16Decoder: undefined,
|
|
@@ -2143,7 +2573,7 @@ function createNapiModule(options) {
|
|
|
2143
2573
|
ptr >>>= 0;
|
|
2144
2574
|
var HEAPU8 = new Uint8Array(wasmMemory.buffer);
|
|
2145
2575
|
var end = ptr;
|
|
2146
|
-
if (length === -1) {
|
|
2576
|
+
if (length === -1 || length === 4294967295) {
|
|
2147
2577
|
for (; HEAPU8[end];)
|
|
2148
2578
|
++end;
|
|
2149
2579
|
}
|
|
@@ -2234,12 +2664,12 @@ function createNapiModule(options) {
|
|
|
2234
2664
|
return '';
|
|
2235
2665
|
ptr >>>= 0;
|
|
2236
2666
|
var end = ptr;
|
|
2237
|
-
if (length === -1) {
|
|
2238
|
-
var idx = end
|
|
2667
|
+
if (length === -1 || length === 4294967295) {
|
|
2668
|
+
var idx = end >>> 1;
|
|
2239
2669
|
var HEAPU16 = new Uint16Array(wasmMemory.buffer);
|
|
2240
2670
|
while (HEAPU16[idx])
|
|
2241
2671
|
++idx;
|
|
2242
|
-
end = idx << 1;
|
|
2672
|
+
end = (idx << 1) >>> 0;
|
|
2243
2673
|
}
|
|
2244
2674
|
else {
|
|
2245
2675
|
end = ptr + (length >>> 0) * 2;
|
|
@@ -2270,11 +2700,12 @@ function createNapiModule(options) {
|
|
|
2270
2700
|
return outPtr - startPtr;
|
|
2271
2701
|
},
|
|
2272
2702
|
newString: function (env, str, length, result, stringMaker) {
|
|
2703
|
+
length >>>= 0;
|
|
2273
2704
|
if (!env)
|
|
2274
2705
|
return 1;
|
|
2275
2706
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2276
2707
|
envObject.checkGCAccess();
|
|
2277
|
-
var autoLength = length === -1;
|
|
2708
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2278
2709
|
var sizelength = length >>> 0;
|
|
2279
2710
|
if (length !== 0) {
|
|
2280
2711
|
if (!str)
|
|
@@ -2284,18 +2715,21 @@ function createNapiModule(options) {
|
|
|
2284
2715
|
return envObject.setLastError(1);
|
|
2285
2716
|
if (!(autoLength || (sizelength <= 2147483647)))
|
|
2286
2717
|
return envObject.setLastError(1);
|
|
2718
|
+
str >>>= 0;
|
|
2287
2719
|
var strValue = stringMaker(str, autoLength, sizelength);
|
|
2720
|
+
result >>>= 0;
|
|
2288
2721
|
var value = emnapiCtx.addToCurrentScope(strValue).id;
|
|
2289
2722
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2290
2723
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
2291
2724
|
return envObject.clearLastError();
|
|
2292
2725
|
},
|
|
2293
2726
|
newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
|
|
2727
|
+
length >>>= 0;
|
|
2294
2728
|
if (!env)
|
|
2295
2729
|
return 1;
|
|
2296
2730
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2297
2731
|
envObject.checkGCAccess();
|
|
2298
|
-
var autoLength = length === -1;
|
|
2732
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2299
2733
|
var sizelength = length >>> 0;
|
|
2300
2734
|
if (length !== 0) {
|
|
2301
2735
|
if (!str)
|
|
@@ -2337,6 +2771,7 @@ function createNapiModule(options) {
|
|
|
2337
2771
|
if (!handle.isArray()) {
|
|
2338
2772
|
return envObject.setLastError(8);
|
|
2339
2773
|
}
|
|
2774
|
+
result >>>= 0;
|
|
2340
2775
|
var v = handle.value.length >>> 0;
|
|
2341
2776
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2342
2777
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2360,10 +2795,12 @@ function createNapiModule(options) {
|
|
|
2360
2795
|
}
|
|
2361
2796
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2362
2797
|
if (data) {
|
|
2798
|
+
data >>>= 0;
|
|
2363
2799
|
var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
|
|
2364
2800
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2365
2801
|
}
|
|
2366
2802
|
if (byte_length) {
|
|
2803
|
+
byte_length >>>= 0;
|
|
2367
2804
|
HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
|
|
2368
2805
|
}
|
|
2369
2806
|
return envObject.clearLastError();
|
|
@@ -2428,6 +2865,7 @@ function createNapiModule(options) {
|
|
|
2428
2865
|
catch (_) {
|
|
2429
2866
|
return envObject.setLastError(2);
|
|
2430
2867
|
}
|
|
2868
|
+
result >>>= 0;
|
|
2431
2869
|
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
2432
2870
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2433
2871
|
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
@@ -2452,6 +2890,7 @@ function createNapiModule(options) {
|
|
|
2452
2890
|
var v = handle.value;
|
|
2453
2891
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2454
2892
|
if (type) {
|
|
2893
|
+
type >>>= 0;
|
|
2455
2894
|
var t = void 0;
|
|
2456
2895
|
if (v instanceof Int8Array) {
|
|
2457
2896
|
t = 0;
|
|
@@ -2494,22 +2933,25 @@ function createNapiModule(options) {
|
|
|
2494
2933
|
}
|
|
2495
2934
|
HEAP_DATA_VIEW.setInt32(type, t, true);
|
|
2496
2935
|
}
|
|
2936
|
+
v = emnapiExternalMemory.getOrUpdateMemoryView(v);
|
|
2497
2937
|
if (length) {
|
|
2938
|
+
length >>>= 0;
|
|
2498
2939
|
HEAP_DATA_VIEW.setUint32(length, v.length, true);
|
|
2499
2940
|
}
|
|
2500
|
-
var buffer;
|
|
2501
2941
|
if (data || arraybuffer) {
|
|
2502
|
-
buffer = v.buffer;
|
|
2503
2942
|
if (data) {
|
|
2943
|
+
data >>>= 0;
|
|
2504
2944
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2505
2945
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2506
2946
|
}
|
|
2507
2947
|
if (arraybuffer) {
|
|
2508
|
-
|
|
2948
|
+
arraybuffer >>>= 0;
|
|
2949
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2509
2950
|
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2510
2951
|
}
|
|
2511
2952
|
}
|
|
2512
2953
|
if (byte_offset) {
|
|
2954
|
+
byte_offset >>>= 0;
|
|
2513
2955
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2514
2956
|
}
|
|
2515
2957
|
return envObject.clearLastError();
|
|
@@ -2540,24 +2982,26 @@ function createNapiModule(options) {
|
|
|
2540
2982
|
if (!handle.isDataView()) {
|
|
2541
2983
|
return envObject.setLastError(1);
|
|
2542
2984
|
}
|
|
2543
|
-
var v = handle.value;
|
|
2985
|
+
var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
|
|
2544
2986
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2545
2987
|
if (byte_length) {
|
|
2988
|
+
byte_length >>>= 0;
|
|
2546
2989
|
HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
|
|
2547
2990
|
}
|
|
2548
|
-
var buffer;
|
|
2549
2991
|
if (data || arraybuffer) {
|
|
2550
|
-
buffer = v.buffer;
|
|
2551
2992
|
if (data) {
|
|
2993
|
+
data >>>= 0;
|
|
2552
2994
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2553
2995
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2554
2996
|
}
|
|
2555
2997
|
if (arraybuffer) {
|
|
2556
|
-
|
|
2998
|
+
arraybuffer >>>= 0;
|
|
2999
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2557
3000
|
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2558
3001
|
}
|
|
2559
3002
|
}
|
|
2560
3003
|
if (byte_offset) {
|
|
3004
|
+
byte_offset >>>= 0;
|
|
2561
3005
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2562
3006
|
}
|
|
2563
3007
|
return envObject.clearLastError();
|
|
@@ -2582,6 +3026,7 @@ function createNapiModule(options) {
|
|
|
2582
3026
|
if (!handle.isDate()) {
|
|
2583
3027
|
return envObject.setLastError(1);
|
|
2584
3028
|
}
|
|
3029
|
+
result >>>= 0;
|
|
2585
3030
|
v = handle.value.valueOf();
|
|
2586
3031
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2587
3032
|
HEAP_DATA_VIEW.setFloat64(result, v, true);
|
|
@@ -2605,6 +3050,7 @@ function createNapiModule(options) {
|
|
|
2605
3050
|
if (typeof handle.value !== 'boolean') {
|
|
2606
3051
|
return envObject.setLastError(7);
|
|
2607
3052
|
}
|
|
3053
|
+
result >>>= 0;
|
|
2608
3054
|
var r = handle.value ? 1 : 0;
|
|
2609
3055
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2610
3056
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -2623,6 +3069,7 @@ function createNapiModule(options) {
|
|
|
2623
3069
|
if (typeof handle.value !== 'number') {
|
|
2624
3070
|
return envObject.setLastError(6);
|
|
2625
3071
|
}
|
|
3072
|
+
result >>>= 0;
|
|
2626
3073
|
var r = handle.value;
|
|
2627
3074
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2628
3075
|
HEAP_DATA_VIEW.setFloat64(result, r, true);
|
|
@@ -2647,6 +3094,8 @@ function createNapiModule(options) {
|
|
|
2647
3094
|
if (typeof numberValue !== 'bigint') {
|
|
2648
3095
|
return envObject.setLastError(6);
|
|
2649
3096
|
}
|
|
3097
|
+
lossless >>>= 0;
|
|
3098
|
+
result >>>= 0;
|
|
2650
3099
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2651
3100
|
if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
|
|
2652
3101
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2683,6 +3132,8 @@ function createNapiModule(options) {
|
|
|
2683
3132
|
if (typeof numberValue !== 'bigint') {
|
|
2684
3133
|
return envObject.setLastError(6);
|
|
2685
3134
|
}
|
|
3135
|
+
lossless >>>= 0;
|
|
3136
|
+
result >>>= 0;
|
|
2686
3137
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2687
3138
|
if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
|
|
2688
3139
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2714,8 +3165,12 @@ function createNapiModule(options) {
|
|
|
2714
3165
|
return envObject.setLastError(17);
|
|
2715
3166
|
}
|
|
2716
3167
|
var isMinus = handle.value < BigInt(0);
|
|
3168
|
+
sign_bit >>>= 0;
|
|
3169
|
+
words >>>= 0;
|
|
3170
|
+
word_count >>>= 0;
|
|
2717
3171
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2718
3172
|
var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
|
|
3173
|
+
word_count_int >>>= 0;
|
|
2719
3174
|
var wordCount = 0;
|
|
2720
3175
|
var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
|
|
2721
3176
|
while (bigintValue !== BigInt(0)) {
|
|
@@ -2763,6 +3218,7 @@ function createNapiModule(options) {
|
|
|
2763
3218
|
if (!handle.isExternal()) {
|
|
2764
3219
|
return envObject.setLastError(1);
|
|
2765
3220
|
}
|
|
3221
|
+
result >>>= 0;
|
|
2766
3222
|
var p = handle.data();
|
|
2767
3223
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2768
3224
|
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
@@ -2781,6 +3237,7 @@ function createNapiModule(options) {
|
|
|
2781
3237
|
if (typeof handle.value !== 'number') {
|
|
2782
3238
|
return envObject.setLastError(6);
|
|
2783
3239
|
}
|
|
3240
|
+
result >>>= 0;
|
|
2784
3241
|
var v = new Int32Array([handle.value])[0];
|
|
2785
3242
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2786
3243
|
HEAP_DATA_VIEW.setInt32(result, v, true);
|
|
@@ -2800,6 +3257,7 @@ function createNapiModule(options) {
|
|
|
2800
3257
|
return envObject.setLastError(6);
|
|
2801
3258
|
}
|
|
2802
3259
|
var numberValue = handle.value;
|
|
3260
|
+
result >>>= 0;
|
|
2803
3261
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2804
3262
|
if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
|
|
2805
3263
|
HEAP_DATA_VIEW.setInt32(result, 0, true);
|
|
@@ -2825,6 +3283,9 @@ function createNapiModule(options) {
|
|
|
2825
3283
|
envObject.checkGCAccess();
|
|
2826
3284
|
if (!value)
|
|
2827
3285
|
return envObject.setLastError(1);
|
|
3286
|
+
result >>>= 0;
|
|
3287
|
+
buf >>>= 0;
|
|
3288
|
+
buf_size >>>= 0;
|
|
2828
3289
|
buf_size = buf_size >>> 0;
|
|
2829
3290
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2830
3291
|
if (typeof handle.value !== 'string') {
|
|
@@ -2861,6 +3322,9 @@ function createNapiModule(options) {
|
|
|
2861
3322
|
envObject.checkGCAccess();
|
|
2862
3323
|
if (!value)
|
|
2863
3324
|
return envObject.setLastError(1);
|
|
3325
|
+
result >>>= 0;
|
|
3326
|
+
buf >>>= 0;
|
|
3327
|
+
buf_size >>>= 0;
|
|
2864
3328
|
buf_size = buf_size >>> 0;
|
|
2865
3329
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2866
3330
|
if (typeof handle.value !== 'string') {
|
|
@@ -2891,6 +3355,9 @@ function createNapiModule(options) {
|
|
|
2891
3355
|
envObject.checkGCAccess();
|
|
2892
3356
|
if (!value)
|
|
2893
3357
|
return envObject.setLastError(1);
|
|
3358
|
+
result >>>= 0;
|
|
3359
|
+
buf >>>= 0;
|
|
3360
|
+
buf_size >>>= 0;
|
|
2894
3361
|
buf_size = buf_size >>> 0;
|
|
2895
3362
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2896
3363
|
if (typeof handle.value !== 'string') {
|
|
@@ -2926,6 +3393,7 @@ function createNapiModule(options) {
|
|
|
2926
3393
|
if (typeof handle.value !== 'number') {
|
|
2927
3394
|
return envObject.setLastError(6);
|
|
2928
3395
|
}
|
|
3396
|
+
result >>>= 0;
|
|
2929
3397
|
var v = new Uint32Array([handle.value])[0];
|
|
2930
3398
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2931
3399
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2961,6 +3429,7 @@ function createNapiModule(options) {
|
|
|
2961
3429
|
envObject.checkGCAccess();
|
|
2962
3430
|
if (!result)
|
|
2963
3431
|
return envObject.setLastError(1);
|
|
3432
|
+
result >>>= 0;
|
|
2964
3433
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2965
3434
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2966
3435
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2973,6 +3442,7 @@ function createNapiModule(options) {
|
|
|
2973
3442
|
envObject.checkGCAccess();
|
|
2974
3443
|
if (!result)
|
|
2975
3444
|
return envObject.setLastError(1);
|
|
3445
|
+
result >>>= 0;
|
|
2976
3446
|
var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
|
|
2977
3447
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2978
3448
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2988,6 +3458,7 @@ function createNapiModule(options) {
|
|
|
2988
3458
|
return envObject.setLastError(1);
|
|
2989
3459
|
value = Number(low);
|
|
2990
3460
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3461
|
+
high >>>= 0;
|
|
2991
3462
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2992
3463
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
2993
3464
|
return envObject.clearLastError();
|
|
@@ -2999,6 +3470,7 @@ function createNapiModule(options) {
|
|
|
2999
3470
|
envObject.checkGCAccess();
|
|
3000
3471
|
if (!result)
|
|
3001
3472
|
return envObject.setLastError(1);
|
|
3473
|
+
result >>>= 0;
|
|
3002
3474
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
3003
3475
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3004
3476
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -3069,6 +3541,7 @@ function createNapiModule(options) {
|
|
|
3069
3541
|
return envObject.setLastError(1);
|
|
3070
3542
|
value = low;
|
|
3071
3543
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3544
|
+
high >>>= 0;
|
|
3072
3545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3073
3546
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3074
3547
|
return envObject.clearLastError();
|
|
@@ -3086,6 +3559,7 @@ function createNapiModule(options) {
|
|
|
3086
3559
|
return envObject.setLastError(1);
|
|
3087
3560
|
value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
|
|
3088
3561
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3562
|
+
high >>>= 0;
|
|
3089
3563
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3090
3564
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3091
3565
|
return envObject.clearLastError();
|
|
@@ -3107,6 +3581,8 @@ function createNapiModule(options) {
|
|
|
3107
3581
|
}
|
|
3108
3582
|
if (!result)
|
|
3109
3583
|
return envObject.setLastError(1);
|
|
3584
|
+
words >>>= 0;
|
|
3585
|
+
word_count >>>= 0;
|
|
3110
3586
|
word_count = word_count >>> 0;
|
|
3111
3587
|
if (word_count > 2147483647) {
|
|
3112
3588
|
return envObject.setLastError(1);
|
|
@@ -3123,6 +3599,7 @@ function createNapiModule(options) {
|
|
|
3123
3599
|
value += wordi << BigInt(64 * i);
|
|
3124
3600
|
}
|
|
3125
3601
|
value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
|
|
3602
|
+
result >>>= 0;
|
|
3126
3603
|
v = emnapiCtx.addToCurrentScope(value).id;
|
|
3127
3604
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3128
3605
|
return envObject.getReturnStatus();
|
|
@@ -3151,6 +3628,7 @@ function createNapiModule(options) {
|
|
|
3151
3628
|
node_api_create_property_key_utf8: node_api_create_property_key_utf8
|
|
3152
3629
|
});
|
|
3153
3630
|
function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
|
|
3631
|
+
utf8name >>>= 0;
|
|
3154
3632
|
var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
|
|
3155
3633
|
var f;
|
|
3156
3634
|
var napiCallback = (wasmTable.get(cb));
|
|
@@ -3291,6 +3769,7 @@ function createNapiModule(options) {
|
|
|
3291
3769
|
if (!finalize_cb)
|
|
3292
3770
|
return envObject.setLastError(1);
|
|
3293
3771
|
reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
|
|
3772
|
+
result >>>= 0;
|
|
3294
3773
|
referenceId = reference.id;
|
|
3295
3774
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3296
3775
|
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
@@ -3339,6 +3818,7 @@ function createNapiModule(options) {
|
|
|
3339
3818
|
if (!ref)
|
|
3340
3819
|
return envObject.setLastError(1);
|
|
3341
3820
|
if (result) {
|
|
3821
|
+
result >>>= 0;
|
|
3342
3822
|
data = ref.data();
|
|
3343
3823
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3344
3824
|
HEAP_DATA_VIEW.setUint32(result, data, true);
|
|
@@ -3375,12 +3855,15 @@ function createNapiModule(options) {
|
|
|
3375
3855
|
return envObject.setLastError(1);
|
|
3376
3856
|
if (!constructor)
|
|
3377
3857
|
return envObject.setLastError(1);
|
|
3858
|
+
length >>>= 0;
|
|
3859
|
+
properties >>>= 0;
|
|
3860
|
+
property_count >>>= 0;
|
|
3378
3861
|
property_count = property_count >>> 0;
|
|
3379
3862
|
if (property_count > 0) {
|
|
3380
3863
|
if (!properties)
|
|
3381
3864
|
return envObject.setLastError(1);
|
|
3382
3865
|
}
|
|
3383
|
-
if ((length
|
|
3866
|
+
if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
|
|
3384
3867
|
return envObject.setLastError(1);
|
|
3385
3868
|
}
|
|
3386
3869
|
var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
|
|
@@ -3398,6 +3881,7 @@ function createNapiModule(options) {
|
|
|
3398
3881
|
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
3399
3882
|
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
3400
3883
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
3884
|
+
attributes >>>= 0;
|
|
3401
3885
|
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
3402
3886
|
if (utf8Name) {
|
|
3403
3887
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
@@ -3419,6 +3903,7 @@ function createNapiModule(options) {
|
|
|
3419
3903
|
}
|
|
3420
3904
|
var valueHandle = emnapiCtx.addToCurrentScope(F);
|
|
3421
3905
|
valueHandleId = valueHandle.id;
|
|
3906
|
+
result >>>= 0;
|
|
3422
3907
|
HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
|
|
3423
3908
|
return envObject.getReturnStatus();
|
|
3424
3909
|
}
|
|
@@ -3454,6 +3939,7 @@ function createNapiModule(options) {
|
|
|
3454
3939
|
if (!(value.isObject() || value.isFunction())) {
|
|
3455
3940
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
|
|
3456
3941
|
}
|
|
3942
|
+
type_tag >>>= 0;
|
|
3457
3943
|
if (!type_tag) {
|
|
3458
3944
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
|
|
3459
3945
|
}
|
|
@@ -3498,6 +3984,7 @@ function createNapiModule(options) {
|
|
|
3498
3984
|
}
|
|
3499
3985
|
var binding = envObject.getObjectBinding(value.value);
|
|
3500
3986
|
if (binding.tag !== null) {
|
|
3987
|
+
type_tag >>>= 0;
|
|
3501
3988
|
var tag = binding.tag;
|
|
3502
3989
|
var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
|
|
3503
3990
|
ret = (tag[0] === typeTag[0] &&
|
|
@@ -3508,6 +3995,7 @@ function createNapiModule(options) {
|
|
|
3508
3995
|
else {
|
|
3509
3996
|
ret = false;
|
|
3510
3997
|
}
|
|
3998
|
+
result >>>= 0;
|
|
3511
3999
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3512
4000
|
HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
|
|
3513
4001
|
return envObject.getReturnStatus();
|
|
@@ -3535,8 +4023,12 @@ function createNapiModule(options) {
|
|
|
3535
4023
|
}
|
|
3536
4024
|
var handle = handleResult.handle;
|
|
3537
4025
|
var ownership = !result ? 0 : 1;
|
|
4026
|
+
finalize_data >>>= 0;
|
|
4027
|
+
finalize_cb >>>= 0;
|
|
4028
|
+
finalize_hint >>>= 0;
|
|
3538
4029
|
var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
|
|
3539
4030
|
if (result) {
|
|
4031
|
+
result >>>= 0;
|
|
3540
4032
|
var referenceId = reference.id;
|
|
3541
4033
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3542
4034
|
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
@@ -3575,6 +4067,9 @@ function createNapiModule(options) {
|
|
|
3575
4067
|
try {
|
|
3576
4068
|
if (!result)
|
|
3577
4069
|
return envObject.setLastError(1);
|
|
4070
|
+
byte_length >>>= 0;
|
|
4071
|
+
external_data >>>= 0;
|
|
4072
|
+
result >>>= 0;
|
|
3578
4073
|
byte_length = byte_length >>> 0;
|
|
3579
4074
|
if (!external_data) {
|
|
3580
4075
|
byte_length = 0;
|
|
@@ -3685,7 +4180,7 @@ function createNapiModule(options) {
|
|
|
3685
4180
|
var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
|
|
3686
4181
|
if (!pointer)
|
|
3687
4182
|
throw new Error('Unknown ArrayBuffer address');
|
|
3688
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4183
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3689
4184
|
len = arrayBufferOrView.byteLength - offset;
|
|
3690
4185
|
}
|
|
3691
4186
|
len = len >>> 0;
|
|
@@ -3707,7 +4202,7 @@ function createNapiModule(options) {
|
|
|
3707
4202
|
var pointer = viewPointerInfo.address;
|
|
3708
4203
|
if (!pointer)
|
|
3709
4204
|
throw new Error('Unknown ArrayBuffer address');
|
|
3710
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4205
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3711
4206
|
len = latestView.byteLength - offset;
|
|
3712
4207
|
}
|
|
3713
4208
|
len = len >>> 0;
|
|
@@ -3739,6 +4234,9 @@ function createNapiModule(options) {
|
|
|
3739
4234
|
try {
|
|
3740
4235
|
if (!arraybuffer_or_view)
|
|
3741
4236
|
return envObject.setLastError(1);
|
|
4237
|
+
arraybuffer_or_view >>>= 0;
|
|
4238
|
+
offset >>>= 0;
|
|
4239
|
+
len >>>= 0;
|
|
3742
4240
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3743
4241
|
var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
|
|
3744
4242
|
var handle = envObject.ctx.handleStore.get(handleId);
|
|
@@ -3747,6 +4245,7 @@ function createNapiModule(options) {
|
|
|
3747
4245
|
}
|
|
3748
4246
|
var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
|
|
3749
4247
|
if (handle.value !== ret) {
|
|
4248
|
+
arraybuffer_or_view >>>= 0;
|
|
3750
4249
|
v = envObject.ensureHandleId(ret);
|
|
3751
4250
|
HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
|
|
3752
4251
|
}
|
|
@@ -3800,13 +4299,16 @@ function createNapiModule(options) {
|
|
|
3800
4299
|
p = info.address;
|
|
3801
4300
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3802
4301
|
if (address) {
|
|
4302
|
+
address >>>= 0;
|
|
3803
4303
|
HEAP_DATA_VIEW.setUint32(address, p, true);
|
|
3804
4304
|
}
|
|
3805
4305
|
if (ownership) {
|
|
4306
|
+
ownership >>>= 0;
|
|
3806
4307
|
ownershipOut = info.ownership;
|
|
3807
4308
|
HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
|
|
3808
4309
|
}
|
|
3809
4310
|
if (runtime_allocated) {
|
|
4311
|
+
runtime_allocated >>>= 0;
|
|
3810
4312
|
runtimeAllocated = info.runtimeAllocated;
|
|
3811
4313
|
HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
|
|
3812
4314
|
}
|
|
@@ -3832,22 +4334,102 @@ function createNapiModule(options) {
|
|
|
3832
4334
|
}
|
|
3833
4335
|
var versions = runtimeVersion.split('.')
|
|
3834
4336
|
.map(function (n) { return Number(n); });
|
|
4337
|
+
version >>>= 0;
|
|
3835
4338
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3836
4339
|
HEAP_DATA_VIEW.setUint32(version, versions[0], true);
|
|
3837
4340
|
HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
|
|
3838
4341
|
HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
|
|
3839
4342
|
return envObject.clearLastError();
|
|
3840
4343
|
}
|
|
4344
|
+
function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
|
|
4345
|
+
if (!env)
|
|
4346
|
+
return 1;
|
|
4347
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4348
|
+
envObject.checkGCAccess();
|
|
4349
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4350
|
+
return envObject.setLastError(10);
|
|
4351
|
+
if (!envObject.canCallIntoJs())
|
|
4352
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4353
|
+
envObject.clearLastError();
|
|
4354
|
+
try {
|
|
4355
|
+
if (!sharedarraybuffer)
|
|
4356
|
+
return envObject.setLastError(1);
|
|
4357
|
+
if (!handle)
|
|
4358
|
+
return envObject.setLastError(1);
|
|
4359
|
+
handle >>>= 0;
|
|
4360
|
+
var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
|
|
4361
|
+
if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
|
|
4362
|
+
return envObject.setLastError(1);
|
|
4363
|
+
}
|
|
4364
|
+
var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
|
|
4365
|
+
if (metaPtr === undefined) {
|
|
4366
|
+
return envObject.setLastError(1);
|
|
4367
|
+
}
|
|
4368
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4369
|
+
HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
|
|
4370
|
+
return envObject.getReturnStatus();
|
|
4371
|
+
}
|
|
4372
|
+
catch (err) {
|
|
4373
|
+
envObject.tryCatch.setError(err);
|
|
4374
|
+
return envObject.setLastError(10);
|
|
4375
|
+
}
|
|
4376
|
+
}
|
|
4377
|
+
function emnapi_acquire_external_sharedarraybuffer(handle) {
|
|
4378
|
+
handle >>>= 0;
|
|
4379
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4380
|
+
}
|
|
4381
|
+
function emnapi_release_external_sharedarraybuffer(handle) {
|
|
4382
|
+
handle >>>= 0;
|
|
4383
|
+
emnapiExternalSAB.release(handle);
|
|
4384
|
+
}
|
|
4385
|
+
function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
|
|
4386
|
+
if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
|
|
4387
|
+
throw new TypeError('Expected a SharedArrayBuffer');
|
|
4388
|
+
}
|
|
4389
|
+
if (!emnapiExternalSAB.registry) {
|
|
4390
|
+
throw new Error('FinalizationRegistry is not supported in this environment');
|
|
4391
|
+
}
|
|
4392
|
+
handle >>>= 0;
|
|
4393
|
+
var meta = emnapiExternalSAB.readMeta(handle);
|
|
4394
|
+
var external_data = meta.external_data;
|
|
4395
|
+
external_data >>>= 0;
|
|
4396
|
+
if (sab == null) {
|
|
4397
|
+
sab = new SharedArrayBuffer(meta.byte_length);
|
|
4398
|
+
new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
|
|
4399
|
+
}
|
|
4400
|
+
else {
|
|
4401
|
+
if (emnapiExternalSAB.handleTable.has(sab)) {
|
|
4402
|
+
return sab;
|
|
4403
|
+
}
|
|
4404
|
+
}
|
|
4405
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4406
|
+
if (!emnapiExternalMemory.table.has(sab)) {
|
|
4407
|
+
if (external_data) {
|
|
4408
|
+
emnapiExternalMemory.table.set(sab, {
|
|
4409
|
+
address: external_data,
|
|
4410
|
+
ownership: 1,
|
|
4411
|
+
runtimeAllocated: 0
|
|
4412
|
+
});
|
|
4413
|
+
}
|
|
4414
|
+
}
|
|
4415
|
+
emnapiExternalSAB.handleTable.set(sab, handle);
|
|
4416
|
+
emnapiExternalSAB.registry.register(sab, handle);
|
|
4417
|
+
return sab;
|
|
4418
|
+
}
|
|
3841
4419
|
var emnapiMod = Object.freeze({
|
|
3842
4420
|
__proto__: null,
|
|
4421
|
+
$emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
|
|
3843
4422
|
$emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
|
|
3844
4423
|
$emnapiSyncMemory: $emnapiSyncMemory,
|
|
4424
|
+
emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
|
|
3845
4425
|
emnapi_create_memory_view: emnapi_create_memory_view,
|
|
4426
|
+
emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
|
|
3846
4427
|
emnapi_get_memory_address: emnapi_get_memory_address,
|
|
3847
4428
|
emnapi_get_runtime_version: emnapi_get_runtime_version,
|
|
3848
4429
|
emnapi_is_node_binding_available: emnapi_is_node_binding_available,
|
|
3849
4430
|
emnapi_is_support_bigint: emnapi_is_support_bigint,
|
|
3850
4431
|
emnapi_is_support_weakref: emnapi_is_support_weakref,
|
|
4432
|
+
emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
|
|
3851
4433
|
emnapi_sync_memory: emnapi_sync_memory
|
|
3852
4434
|
});
|
|
3853
4435
|
function napi_create_array(env, result) {
|
|
@@ -3857,6 +4439,7 @@ function createNapiModule(options) {
|
|
|
3857
4439
|
envObject.checkGCAccess();
|
|
3858
4440
|
if (!result)
|
|
3859
4441
|
return envObject.setLastError(1);
|
|
4442
|
+
result >>>= 0;
|
|
3860
4443
|
var value = emnapiCtx.addToCurrentScope([]).id;
|
|
3861
4444
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3862
4445
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3869,6 +4452,8 @@ function createNapiModule(options) {
|
|
|
3869
4452
|
envObject.checkGCAccess();
|
|
3870
4453
|
if (!result)
|
|
3871
4454
|
return envObject.setLastError(1);
|
|
4455
|
+
length >>>= 0;
|
|
4456
|
+
result >>>= 0;
|
|
3872
4457
|
length = length >>> 0;
|
|
3873
4458
|
var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
|
|
3874
4459
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3876,9 +4461,11 @@ function createNapiModule(options) {
|
|
|
3876
4461
|
return envObject.clearLastError();
|
|
3877
4462
|
}
|
|
3878
4463
|
function emnapiCreateArrayBuffer(byte_length, data, shared) {
|
|
4464
|
+
byte_length >>>= 0;
|
|
3879
4465
|
byte_length = byte_length >>> 0;
|
|
3880
4466
|
var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
|
|
3881
4467
|
if (data) {
|
|
4468
|
+
data >>>= 0;
|
|
3882
4469
|
var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
|
|
3883
4470
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3884
4471
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
@@ -3899,6 +4486,7 @@ function createNapiModule(options) {
|
|
|
3899
4486
|
try {
|
|
3900
4487
|
if (!result)
|
|
3901
4488
|
return envObject.setLastError(1);
|
|
4489
|
+
result >>>= 0;
|
|
3902
4490
|
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
|
|
3903
4491
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
3904
4492
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3924,6 +4512,7 @@ function createNapiModule(options) {
|
|
|
3924
4512
|
try {
|
|
3925
4513
|
if (!result)
|
|
3926
4514
|
return envObject.setLastError(1);
|
|
4515
|
+
result >>>= 0;
|
|
3927
4516
|
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
|
|
3928
4517
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
3929
4518
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3949,6 +4538,7 @@ function createNapiModule(options) {
|
|
|
3949
4538
|
try {
|
|
3950
4539
|
if (!result)
|
|
3951
4540
|
return envObject.setLastError(1);
|
|
4541
|
+
result >>>= 0;
|
|
3952
4542
|
value = emnapiCtx.addToCurrentScope(new Date(time)).id;
|
|
3953
4543
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3954
4544
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3980,6 +4570,7 @@ function createNapiModule(options) {
|
|
|
3980
4570
|
if (finalize_cb) {
|
|
3981
4571
|
emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
|
|
3982
4572
|
}
|
|
4573
|
+
result >>>= 0;
|
|
3983
4574
|
value = externalHandle.id;
|
|
3984
4575
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3985
4576
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4004,6 +4595,9 @@ function createNapiModule(options) {
|
|
|
4004
4595
|
try {
|
|
4005
4596
|
if (!result)
|
|
4006
4597
|
return envObject.setLastError(1);
|
|
4598
|
+
byte_length >>>= 0;
|
|
4599
|
+
external_data >>>= 0;
|
|
4600
|
+
result >>>= 0;
|
|
4007
4601
|
byte_length = byte_length >>> 0;
|
|
4008
4602
|
if (!external_data) {
|
|
4009
4603
|
byte_length = 0;
|
|
@@ -4054,6 +4648,60 @@ function createNapiModule(options) {
|
|
|
4054
4648
|
return envObject.setLastError(10);
|
|
4055
4649
|
}
|
|
4056
4650
|
}
|
|
4651
|
+
function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
|
|
4652
|
+
var value;
|
|
4653
|
+
if (!env)
|
|
4654
|
+
return 1;
|
|
4655
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4656
|
+
envObject.checkGCAccess();
|
|
4657
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4658
|
+
return envObject.setLastError(10);
|
|
4659
|
+
if (!envObject.canCallIntoJs())
|
|
4660
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4661
|
+
envObject.clearLastError();
|
|
4662
|
+
try {
|
|
4663
|
+
if (!result)
|
|
4664
|
+
return envObject.setLastError(1);
|
|
4665
|
+
byte_length >>>= 0;
|
|
4666
|
+
external_data >>>= 0;
|
|
4667
|
+
result >>>= 0;
|
|
4668
|
+
byte_length = byte_length >>> 0;
|
|
4669
|
+
if (!external_data) {
|
|
4670
|
+
byte_length = 0;
|
|
4671
|
+
}
|
|
4672
|
+
if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
|
|
4673
|
+
throw new RangeError('Memory out of range');
|
|
4674
|
+
}
|
|
4675
|
+
if (!emnapiExternalSAB.registry && finalize_cb) {
|
|
4676
|
+
throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
|
|
4677
|
+
}
|
|
4678
|
+
var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
|
|
4679
|
+
if (byte_length !== 0) {
|
|
4680
|
+
var u8arr = new Uint8Array(sharedArrayBuffer);
|
|
4681
|
+
u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
|
|
4682
|
+
emnapiExternalMemory.table.set(sharedArrayBuffer, {
|
|
4683
|
+
address: external_data,
|
|
4684
|
+
ownership: 1,
|
|
4685
|
+
runtimeAllocated: 0
|
|
4686
|
+
});
|
|
4687
|
+
}
|
|
4688
|
+
value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
|
|
4689
|
+
if (finalize_cb) {
|
|
4690
|
+
finalize_cb >>>= 0;
|
|
4691
|
+
finalize_hint >>>= 0;
|
|
4692
|
+
var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
|
|
4693
|
+
emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
|
|
4694
|
+
emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
|
|
4695
|
+
}
|
|
4696
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4697
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4698
|
+
return envObject.getReturnStatus();
|
|
4699
|
+
}
|
|
4700
|
+
catch (err) {
|
|
4701
|
+
envObject.tryCatch.setError(err);
|
|
4702
|
+
return envObject.setLastError(10);
|
|
4703
|
+
}
|
|
4704
|
+
}
|
|
4057
4705
|
function napi_create_object(env, result) {
|
|
4058
4706
|
if (!env)
|
|
4059
4707
|
return 1;
|
|
@@ -4061,18 +4709,20 @@ function createNapiModule(options) {
|
|
|
4061
4709
|
envObject.checkGCAccess();
|
|
4062
4710
|
if (!result)
|
|
4063
4711
|
return envObject.setLastError(1);
|
|
4712
|
+
result >>>= 0;
|
|
4064
4713
|
var value = emnapiCtx.addToCurrentScope({}).id;
|
|
4065
4714
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4066
4715
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4067
4716
|
return envObject.clearLastError();
|
|
4068
4717
|
}
|
|
4069
|
-
function
|
|
4718
|
+
function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
|
|
4070
4719
|
if (!env)
|
|
4071
4720
|
return 1;
|
|
4072
4721
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4073
4722
|
envObject.checkGCAccess();
|
|
4074
4723
|
if (!result)
|
|
4075
4724
|
return envObject.setLastError(1);
|
|
4725
|
+
property_count >>>= 0;
|
|
4076
4726
|
property_count = property_count >>> 0;
|
|
4077
4727
|
if (property_count > 0) {
|
|
4078
4728
|
if (!property_names)
|
|
@@ -4084,6 +4734,8 @@ function createNapiModule(options) {
|
|
|
4084
4734
|
? emnapiCtx.handleStore.get(prototype_or_null).value
|
|
4085
4735
|
: null;
|
|
4086
4736
|
var properties = {};
|
|
4737
|
+
property_names >>>= 0;
|
|
4738
|
+
property_values >>>= 0;
|
|
4087
4739
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4088
4740
|
for (var i = 0; i < property_count; i++) {
|
|
4089
4741
|
var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
|
|
@@ -4104,6 +4756,7 @@ function createNapiModule(options) {
|
|
|
4104
4756
|
return envObject.setLastError(9);
|
|
4105
4757
|
}
|
|
4106
4758
|
var value = emnapiCtx.addToCurrentScope(obj).id;
|
|
4759
|
+
result >>>= 0;
|
|
4107
4760
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4108
4761
|
return envObject.clearLastError();
|
|
4109
4762
|
}
|
|
@@ -4114,6 +4767,7 @@ function createNapiModule(options) {
|
|
|
4114
4767
|
envObject.checkGCAccess();
|
|
4115
4768
|
if (!result)
|
|
4116
4769
|
return envObject.setLastError(1);
|
|
4770
|
+
result >>>= 0;
|
|
4117
4771
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4118
4772
|
if (!description) {
|
|
4119
4773
|
var value = emnapiCtx.addToCurrentScope(Symbol()).id;
|
|
@@ -4147,10 +4801,9 @@ function createNapiModule(options) {
|
|
|
4147
4801
|
if (!result)
|
|
4148
4802
|
return envObject.setLastError(1);
|
|
4149
4803
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
4150
|
-
if (!handle.isArrayBuffer()) {
|
|
4151
|
-
return envObject.setLastError(1);
|
|
4152
|
-
}
|
|
4153
4804
|
var buffer = handle.value;
|
|
4805
|
+
byte_offset >>>= 0;
|
|
4806
|
+
length >>>= 0;
|
|
4154
4807
|
var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
|
|
4155
4808
|
var _a;
|
|
4156
4809
|
byte_offset = byte_offset >>> 0;
|
|
@@ -4181,41 +4834,47 @@ function createNapiModule(options) {
|
|
|
4181
4834
|
});
|
|
4182
4835
|
}
|
|
4183
4836
|
}
|
|
4837
|
+
result >>>= 0;
|
|
4184
4838
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4185
4839
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4186
4840
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4187
4841
|
return envObject.getReturnStatus();
|
|
4188
4842
|
};
|
|
4189
|
-
|
|
4190
|
-
|
|
4191
|
-
|
|
4192
|
-
|
|
4193
|
-
|
|
4194
|
-
|
|
4195
|
-
|
|
4196
|
-
|
|
4197
|
-
|
|
4198
|
-
|
|
4199
|
-
|
|
4200
|
-
|
|
4201
|
-
|
|
4202
|
-
|
|
4203
|
-
|
|
4204
|
-
|
|
4205
|
-
|
|
4206
|
-
|
|
4207
|
-
|
|
4208
|
-
|
|
4209
|
-
|
|
4210
|
-
|
|
4211
|
-
|
|
4212
|
-
|
|
4213
|
-
|
|
4843
|
+
if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
|
|
4844
|
+
switch (type) {
|
|
4845
|
+
case 0:
|
|
4846
|
+
return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
|
|
4847
|
+
case 1:
|
|
4848
|
+
return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
|
|
4849
|
+
case 2:
|
|
4850
|
+
return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
|
|
4851
|
+
case 3:
|
|
4852
|
+
return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
|
|
4853
|
+
case 4:
|
|
4854
|
+
return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
|
|
4855
|
+
case 5:
|
|
4856
|
+
return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
|
|
4857
|
+
case 6:
|
|
4858
|
+
return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
|
|
4859
|
+
case 7:
|
|
4860
|
+
return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
|
|
4861
|
+
case 8:
|
|
4862
|
+
return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
|
|
4863
|
+
case 9:
|
|
4864
|
+
return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
|
|
4865
|
+
case 10:
|
|
4866
|
+
return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
|
|
4867
|
+
case 11:
|
|
4868
|
+
if (typeof Float16Array !== 'function') {
|
|
4869
|
+
return envObject.setLastError(1);
|
|
4870
|
+
}
|
|
4871
|
+
return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
|
|
4872
|
+
default:
|
|
4214
4873
|
return envObject.setLastError(1);
|
|
4215
|
-
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4874
|
+
}
|
|
4875
|
+
}
|
|
4876
|
+
else {
|
|
4877
|
+
return envObject.setLastError(1);
|
|
4219
4878
|
}
|
|
4220
4879
|
}
|
|
4221
4880
|
catch (err) {
|
|
@@ -4242,7 +4901,9 @@ function createNapiModule(options) {
|
|
|
4242
4901
|
if (!Buffer) {
|
|
4243
4902
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
|
|
4244
4903
|
}
|
|
4904
|
+
result >>>= 0;
|
|
4245
4905
|
var buffer = void 0;
|
|
4906
|
+
size >>>= 0;
|
|
4246
4907
|
size = size >>> 0;
|
|
4247
4908
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4248
4909
|
if (!data || (size === 0)) {
|
|
@@ -4254,6 +4915,7 @@ function createNapiModule(options) {
|
|
|
4254
4915
|
pointer = _malloc(size);
|
|
4255
4916
|
if (!pointer)
|
|
4256
4917
|
throw new Error('Out of memory');
|
|
4918
|
+
pointer >>>= 0;
|
|
4257
4919
|
new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
|
|
4258
4920
|
var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
|
|
4259
4921
|
var viewDescriptor = {
|
|
@@ -4267,6 +4929,7 @@ function createNapiModule(options) {
|
|
|
4267
4929
|
(_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
|
|
4268
4930
|
value = emnapiCtx.addToCurrentScope(buffer_1).id;
|
|
4269
4931
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4932
|
+
data >>>= 0;
|
|
4270
4933
|
HEAP_DATA_VIEW.setUint32(data, pointer, true);
|
|
4271
4934
|
}
|
|
4272
4935
|
return envObject.getReturnStatus();
|
|
@@ -4296,8 +4959,11 @@ function createNapiModule(options) {
|
|
|
4296
4959
|
}
|
|
4297
4960
|
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
|
|
4298
4961
|
var buffer = Buffer.from(arrayBuffer);
|
|
4962
|
+
data >>>= 0;
|
|
4963
|
+
length >>>= 0;
|
|
4299
4964
|
buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
|
|
4300
4965
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4966
|
+
result >>>= 0;
|
|
4301
4967
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4302
4968
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4303
4969
|
return envObject.getReturnStatus();
|
|
@@ -4326,6 +4992,8 @@ function createNapiModule(options) {
|
|
|
4326
4992
|
return envObject.setLastError(1);
|
|
4327
4993
|
if (!result)
|
|
4328
4994
|
return envObject.setLastError(1);
|
|
4995
|
+
byte_offset >>>= 0;
|
|
4996
|
+
byte_length >>>= 0;
|
|
4329
4997
|
byte_offset = byte_offset >>> 0;
|
|
4330
4998
|
byte_length = byte_length >>> 0;
|
|
4331
4999
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
@@ -4354,6 +5022,7 @@ function createNapiModule(options) {
|
|
|
4354
5022
|
});
|
|
4355
5023
|
}
|
|
4356
5024
|
}
|
|
5025
|
+
result >>>= 0;
|
|
4357
5026
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4358
5027
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4359
5028
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4379,6 +5048,8 @@ function createNapiModule(options) {
|
|
|
4379
5048
|
return envObject.setLastError(1);
|
|
4380
5049
|
if (!result)
|
|
4381
5050
|
return envObject.setLastError(1);
|
|
5051
|
+
byte_length >>>= 0;
|
|
5052
|
+
byte_offset >>>= 0;
|
|
4382
5053
|
byte_length = byte_length >>> 0;
|
|
4383
5054
|
byte_offset = byte_offset >>> 0;
|
|
4384
5055
|
var value = emnapiCtx.handleStore.get(arraybuffer).value;
|
|
@@ -4400,6 +5071,7 @@ function createNapiModule(options) {
|
|
|
4400
5071
|
});
|
|
4401
5072
|
}
|
|
4402
5073
|
}
|
|
5074
|
+
result >>>= 0;
|
|
4403
5075
|
var v = emnapiCtx.addToCurrentScope(dataview).id;
|
|
4404
5076
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4405
5077
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -4424,7 +5096,10 @@ function createNapiModule(options) {
|
|
|
4424
5096
|
envObject.checkGCAccess();
|
|
4425
5097
|
if (!result)
|
|
4426
5098
|
return envObject.setLastError(1);
|
|
4427
|
-
|
|
5099
|
+
length >>>= 0;
|
|
5100
|
+
utf8description >>>= 0;
|
|
5101
|
+
result >>>= 0;
|
|
5102
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
4428
5103
|
var sizelength = length >>> 0;
|
|
4429
5104
|
if (length !== 0) {
|
|
4430
5105
|
if (!utf8description)
|
|
@@ -4452,10 +5127,11 @@ function createNapiModule(options) {
|
|
|
4452
5127
|
napi_create_external_arraybuffer: napi_create_external_arraybuffer,
|
|
4453
5128
|
napi_create_external_buffer: napi_create_external_buffer,
|
|
4454
5129
|
napi_create_object: napi_create_object,
|
|
4455
|
-
napi_create_object_with_properties: napi_create_object_with_properties,
|
|
4456
5130
|
napi_create_symbol: napi_create_symbol,
|
|
4457
5131
|
napi_create_typedarray: napi_create_typedarray,
|
|
4458
5132
|
node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
|
|
5133
|
+
node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
|
|
5134
|
+
node_api_create_object_with_properties: node_api_create_object_with_properties,
|
|
4459
5135
|
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
4460
5136
|
node_api_symbol_for: node_api_symbol_for
|
|
4461
5137
|
});
|
|
@@ -4466,6 +5142,7 @@ function createNapiModule(options) {
|
|
|
4466
5142
|
envObject.checkGCAccess();
|
|
4467
5143
|
if (!result)
|
|
4468
5144
|
return envObject.setLastError(1);
|
|
5145
|
+
result >>>= 0;
|
|
4469
5146
|
var v = value === 0 ? 3 : 4;
|
|
4470
5147
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4471
5148
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -4478,6 +5155,7 @@ function createNapiModule(options) {
|
|
|
4478
5155
|
envObject.checkGCAccess();
|
|
4479
5156
|
if (!result)
|
|
4480
5157
|
return envObject.setLastError(1);
|
|
5158
|
+
result >>>= 0;
|
|
4481
5159
|
var value = 5;
|
|
4482
5160
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4483
5161
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4490,6 +5168,7 @@ function createNapiModule(options) {
|
|
|
4490
5168
|
envObject.checkGCAccess();
|
|
4491
5169
|
if (!result)
|
|
4492
5170
|
return envObject.setLastError(1);
|
|
5171
|
+
result >>>= 0;
|
|
4493
5172
|
var value = 2;
|
|
4494
5173
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4495
5174
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4502,6 +5181,7 @@ function createNapiModule(options) {
|
|
|
4502
5181
|
envObject.checkGCAccess();
|
|
4503
5182
|
if (!result)
|
|
4504
5183
|
return envObject.setLastError(1);
|
|
5184
|
+
result >>>= 0;
|
|
4505
5185
|
var value = 1;
|
|
4506
5186
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4507
5187
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4518,6 +5198,9 @@ function createNapiModule(options) {
|
|
|
4518
5198
|
if (!env)
|
|
4519
5199
|
return 1;
|
|
4520
5200
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5201
|
+
data >>>= 0;
|
|
5202
|
+
finalize_cb >>>= 0;
|
|
5203
|
+
finalize_hint >>>= 0;
|
|
4521
5204
|
envObject.setInstanceData(data, finalize_cb, finalize_hint);
|
|
4522
5205
|
return envObject.clearLastError();
|
|
4523
5206
|
}
|
|
@@ -4527,6 +5210,7 @@ function createNapiModule(options) {
|
|
|
4527
5210
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4528
5211
|
if (!data)
|
|
4529
5212
|
return envObject.setLastError(1);
|
|
5213
|
+
data >>>= 0;
|
|
4530
5214
|
var value = envObject.getInstanceData();
|
|
4531
5215
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4532
5216
|
HEAP_DATA_VIEW.setUint32(data, value, true);
|
|
@@ -4538,11 +5222,15 @@ function createNapiModule(options) {
|
|
|
4538
5222
|
napi_set_instance_data: napi_set_instance_data
|
|
4539
5223
|
});
|
|
4540
5224
|
function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
|
|
5225
|
+
error_code >>>= 0;
|
|
5226
|
+
engine_error_code >>>= 0;
|
|
5227
|
+
engine_reserved >>>= 0;
|
|
4541
5228
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4542
5229
|
var lastError = envObject.lastError;
|
|
4543
5230
|
var errorCode = lastError.errorCode;
|
|
4544
5231
|
var engineErrorCode = lastError.engineErrorCode >>> 0;
|
|
4545
5232
|
var engineReserved = lastError.engineReserved;
|
|
5233
|
+
engineReserved >>>= 0;
|
|
4546
5234
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4547
5235
|
HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
|
|
4548
5236
|
HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
|
|
@@ -4582,6 +5270,8 @@ function createNapiModule(options) {
|
|
|
4582
5270
|
try {
|
|
4583
5271
|
if (!msg)
|
|
4584
5272
|
return envObject.setLastError(1);
|
|
5273
|
+
code >>>= 0;
|
|
5274
|
+
msg >>>= 0;
|
|
4585
5275
|
var error = new Error(emnapiString.UTF8ToString(msg, -1));
|
|
4586
5276
|
if (code)
|
|
4587
5277
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4606,6 +5296,8 @@ function createNapiModule(options) {
|
|
|
4606
5296
|
try {
|
|
4607
5297
|
if (!msg)
|
|
4608
5298
|
return envObject.setLastError(1);
|
|
5299
|
+
code >>>= 0;
|
|
5300
|
+
msg >>>= 0;
|
|
4609
5301
|
var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
|
|
4610
5302
|
if (code)
|
|
4611
5303
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4630,6 +5322,8 @@ function createNapiModule(options) {
|
|
|
4630
5322
|
try {
|
|
4631
5323
|
if (!msg)
|
|
4632
5324
|
return envObject.setLastError(1);
|
|
5325
|
+
code >>>= 0;
|
|
5326
|
+
msg >>>= 0;
|
|
4633
5327
|
var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
|
|
4634
5328
|
if (code)
|
|
4635
5329
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4654,6 +5348,8 @@ function createNapiModule(options) {
|
|
|
4654
5348
|
try {
|
|
4655
5349
|
if (!msg)
|
|
4656
5350
|
return envObject.setLastError(1);
|
|
5351
|
+
code >>>= 0;
|
|
5352
|
+
msg >>>= 0;
|
|
4657
5353
|
var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
|
|
4658
5354
|
if (code)
|
|
4659
5355
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4673,6 +5369,7 @@ function createNapiModule(options) {
|
|
|
4673
5369
|
if (!result)
|
|
4674
5370
|
return envObject.setLastError(1);
|
|
4675
5371
|
var r = envObject.tryCatch.hasCaught();
|
|
5372
|
+
result >>>= 0;
|
|
4676
5373
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4677
5374
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
4678
5375
|
return envObject.clearLastError();
|
|
@@ -4698,6 +5395,7 @@ function createNapiModule(options) {
|
|
|
4698
5395
|
}
|
|
4699
5396
|
error.code = codeValue;
|
|
4700
5397
|
}
|
|
5398
|
+
result >>>= 0;
|
|
4701
5399
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4702
5400
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4703
5401
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4724,6 +5422,7 @@ function createNapiModule(options) {
|
|
|
4724
5422
|
}
|
|
4725
5423
|
error.code = codeValue;
|
|
4726
5424
|
}
|
|
5425
|
+
result >>>= 0;
|
|
4727
5426
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4728
5427
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4729
5428
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4750,6 +5449,7 @@ function createNapiModule(options) {
|
|
|
4750
5449
|
}
|
|
4751
5450
|
error.code = codeValue;
|
|
4752
5451
|
}
|
|
5452
|
+
result >>>= 0;
|
|
4753
5453
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4754
5454
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4755
5455
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4776,6 +5476,7 @@ function createNapiModule(options) {
|
|
|
4776
5476
|
}
|
|
4777
5477
|
error.code = codeValue;
|
|
4778
5478
|
}
|
|
5479
|
+
result >>>= 0;
|
|
4779
5480
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4780
5481
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4781
5482
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4788,6 +5489,7 @@ function createNapiModule(options) {
|
|
|
4788
5489
|
envObject.checkGCAccess();
|
|
4789
5490
|
if (!result)
|
|
4790
5491
|
return envObject.setLastError(1);
|
|
5492
|
+
result >>>= 0;
|
|
4791
5493
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4792
5494
|
if (!envObject.tryCatch.hasCaught()) {
|
|
4793
5495
|
HEAP_DATA_VIEW.setUint32(result, 1, true);
|
|
@@ -4802,6 +5504,10 @@ function createNapiModule(options) {
|
|
|
4802
5504
|
return envObject.clearLastError();
|
|
4803
5505
|
}
|
|
4804
5506
|
function napi_fatal_error(location, location_len, message, message_len) {
|
|
5507
|
+
location >>>= 0;
|
|
5508
|
+
location_len >>>= 0;
|
|
5509
|
+
message >>>= 0;
|
|
5510
|
+
message_len >>>= 0;
|
|
4805
5511
|
var locationStr = emnapiString.UTF8ToString(location, location_len);
|
|
4806
5512
|
var messageStr = emnapiString.UTF8ToString(message, message_len);
|
|
4807
5513
|
if (emnapiNodeBinding) {
|
|
@@ -4855,8 +5561,21 @@ function createNapiModule(options) {
|
|
|
4855
5561
|
node_api_create_syntax_error: node_api_create_syntax_error,
|
|
4856
5562
|
node_api_throw_syntax_error: node_api_throw_syntax_error
|
|
4857
5563
|
});
|
|
5564
|
+
function _emnapi_create_function(env, utf8name, length, cb, data, result) {
|
|
5565
|
+
length >>>= 0;
|
|
5566
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5567
|
+
var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
|
|
5568
|
+
if (fresult.status !== 0)
|
|
5569
|
+
return envObject.setLastError(fresult.status);
|
|
5570
|
+
var f = fresult.f;
|
|
5571
|
+
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
5572
|
+
result >>>= 0;
|
|
5573
|
+
var value = valueHandle.id;
|
|
5574
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5575
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5576
|
+
return envObject.getReturnStatus();
|
|
5577
|
+
}
|
|
4858
5578
|
function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
4859
|
-
var value;
|
|
4860
5579
|
if (!env)
|
|
4861
5580
|
return 1;
|
|
4862
5581
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4871,15 +5590,7 @@ function createNapiModule(options) {
|
|
|
4871
5590
|
return envObject.setLastError(1);
|
|
4872
5591
|
if (!cb)
|
|
4873
5592
|
return envObject.setLastError(1);
|
|
4874
|
-
|
|
4875
|
-
if (fresult.status !== 0)
|
|
4876
|
-
return envObject.setLastError(fresult.status);
|
|
4877
|
-
var f = fresult.f;
|
|
4878
|
-
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
4879
|
-
value = valueHandle.id;
|
|
4880
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4881
|
-
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4882
|
-
return envObject.getReturnStatus();
|
|
5593
|
+
return _emnapi_create_function(env, utf8name, length, cb, data, result);
|
|
4883
5594
|
}
|
|
4884
5595
|
catch (err) {
|
|
4885
5596
|
envObject.tryCatch.setError(err);
|
|
@@ -4893,11 +5604,14 @@ function createNapiModule(options) {
|
|
|
4893
5604
|
if (!cbinfo)
|
|
4894
5605
|
return envObject.setLastError(1);
|
|
4895
5606
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
5607
|
+
argc >>>= 0;
|
|
5608
|
+
argv >>>= 0;
|
|
4896
5609
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4897
5610
|
if (argv) {
|
|
4898
5611
|
if (!argc)
|
|
4899
5612
|
return envObject.setLastError(1);
|
|
4900
5613
|
var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
|
|
5614
|
+
argcValue >>>= 0;
|
|
4901
5615
|
var len = cbinfoValue.args.length;
|
|
4902
5616
|
var arrlen = argcValue < len ? argcValue : len;
|
|
4903
5617
|
var i = 0;
|
|
@@ -4915,10 +5629,12 @@ function createNapiModule(options) {
|
|
|
4915
5629
|
HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
|
|
4916
5630
|
}
|
|
4917
5631
|
if (this_arg) {
|
|
5632
|
+
this_arg >>>= 0;
|
|
4918
5633
|
var v = envObject.ensureHandleId(cbinfoValue.thiz);
|
|
4919
5634
|
HEAP_DATA_VIEW.setUint32(this_arg, v, true);
|
|
4920
5635
|
}
|
|
4921
5636
|
if (data) {
|
|
5637
|
+
data >>>= 0;
|
|
4922
5638
|
HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
|
|
4923
5639
|
}
|
|
4924
5640
|
return envObject.clearLastError();
|
|
@@ -4938,6 +5654,9 @@ function createNapiModule(options) {
|
|
|
4938
5654
|
try {
|
|
4939
5655
|
if (!recv)
|
|
4940
5656
|
return envObject.setLastError(1);
|
|
5657
|
+
argc >>>= 0;
|
|
5658
|
+
argv >>>= 0;
|
|
5659
|
+
result >>>= 0;
|
|
4941
5660
|
argc = argc >>> 0;
|
|
4942
5661
|
if (argc > 0) {
|
|
4943
5662
|
if (!argv)
|
|
@@ -4982,6 +5701,9 @@ function createNapiModule(options) {
|
|
|
4982
5701
|
try {
|
|
4983
5702
|
if (!constructor)
|
|
4984
5703
|
return envObject.setLastError(1);
|
|
5704
|
+
argc >>>= 0;
|
|
5705
|
+
argv >>>= 0;
|
|
5706
|
+
result >>>= 0;
|
|
4985
5707
|
argc = argc >>> 0;
|
|
4986
5708
|
if (argc > 0) {
|
|
4987
5709
|
if (!argv)
|
|
@@ -5032,6 +5754,7 @@ function createNapiModule(options) {
|
|
|
5032
5754
|
return envObject.setLastError(1);
|
|
5033
5755
|
if (!result)
|
|
5034
5756
|
return envObject.setLastError(1);
|
|
5757
|
+
result >>>= 0;
|
|
5035
5758
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
5036
5759
|
var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
|
|
5037
5760
|
var value = thiz == null || thiz.constructor == null
|
|
@@ -5045,6 +5768,7 @@ function createNapiModule(options) {
|
|
|
5045
5768
|
}
|
|
5046
5769
|
var functionMod = Object.freeze({
|
|
5047
5770
|
__proto__: null,
|
|
5771
|
+
_emnapi_create_function: _emnapi_create_function,
|
|
5048
5772
|
napi_call_function: napi_call_function,
|
|
5049
5773
|
napi_create_function: napi_create_function,
|
|
5050
5774
|
napi_get_cb_info: napi_get_cb_info,
|
|
@@ -5059,6 +5783,7 @@ function createNapiModule(options) {
|
|
|
5059
5783
|
if (!result)
|
|
5060
5784
|
return envObject.setLastError(1);
|
|
5061
5785
|
var scope = emnapiCtx.openScope(envObject);
|
|
5786
|
+
result >>>= 0;
|
|
5062
5787
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5063
5788
|
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
5064
5789
|
return envObject.clearLastError();
|
|
@@ -5084,6 +5809,7 @@ function createNapiModule(options) {
|
|
|
5084
5809
|
if (!result)
|
|
5085
5810
|
return envObject.setLastError(1);
|
|
5086
5811
|
var scope = emnapiCtx.openScope(envObject);
|
|
5812
|
+
result >>>= 0;
|
|
5087
5813
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5088
5814
|
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
5089
5815
|
return envObject.clearLastError();
|
|
@@ -5114,6 +5840,8 @@ function createNapiModule(options) {
|
|
|
5114
5840
|
return envObject.setLastError(1);
|
|
5115
5841
|
var scopeObject = emnapiCtx.scopeStore.get(scope);
|
|
5116
5842
|
if (!scopeObject.escapeCalled()) {
|
|
5843
|
+
escapee >>>= 0;
|
|
5844
|
+
result >>>= 0;
|
|
5117
5845
|
var newHandle = scopeObject.escape(escapee);
|
|
5118
5846
|
var value = newHandle ? newHandle.id : 0;
|
|
5119
5847
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -5138,6 +5866,7 @@ function createNapiModule(options) {
|
|
|
5138
5866
|
}
|
|
5139
5867
|
}
|
|
5140
5868
|
var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
|
|
5869
|
+
result >>>= 0;
|
|
5141
5870
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5142
5871
|
HEAP_DATA_VIEW.setUint32(result, ref.id, true);
|
|
5143
5872
|
return envObject.clearLastError();
|
|
@@ -5160,6 +5889,7 @@ function createNapiModule(options) {
|
|
|
5160
5889
|
return envObject.setLastError(1);
|
|
5161
5890
|
var count = emnapiCtx.refStore.get(ref).ref();
|
|
5162
5891
|
if (result) {
|
|
5892
|
+
result >>>= 0;
|
|
5163
5893
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5164
5894
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5165
5895
|
}
|
|
@@ -5179,6 +5909,7 @@ function createNapiModule(options) {
|
|
|
5179
5909
|
}
|
|
5180
5910
|
var count = reference.unref();
|
|
5181
5911
|
if (result) {
|
|
5912
|
+
result >>>= 0;
|
|
5182
5913
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5183
5914
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5184
5915
|
}
|
|
@@ -5195,6 +5926,7 @@ function createNapiModule(options) {
|
|
|
5195
5926
|
return envObject.setLastError(1);
|
|
5196
5927
|
var reference = emnapiCtx.refStore.get(ref);
|
|
5197
5928
|
var handleId = reference.get(envObject);
|
|
5929
|
+
result >>>= 0;
|
|
5198
5930
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5199
5931
|
HEAP_DATA_VIEW.setUint32(result, handleId, true);
|
|
5200
5932
|
return envObject.clearLastError();
|
|
@@ -5205,6 +5937,8 @@ function createNapiModule(options) {
|
|
|
5205
5937
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5206
5938
|
if (!fun)
|
|
5207
5939
|
return envObject.setLastError(1);
|
|
5940
|
+
fun >>>= 0;
|
|
5941
|
+
arg >>>= 0;
|
|
5208
5942
|
emnapiCtx.addCleanupHook(envObject, fun, arg);
|
|
5209
5943
|
return 0;
|
|
5210
5944
|
}
|
|
@@ -5214,6 +5948,8 @@ function createNapiModule(options) {
|
|
|
5214
5948
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5215
5949
|
if (!fun)
|
|
5216
5950
|
return envObject.setLastError(1);
|
|
5951
|
+
fun >>>= 0;
|
|
5952
|
+
arg >>>= 0;
|
|
5217
5953
|
emnapiCtx.removeCleanupHook(envObject, fun, arg);
|
|
5218
5954
|
return 0;
|
|
5219
5955
|
}
|
|
@@ -5274,8 +6010,10 @@ function createNapiModule(options) {
|
|
|
5274
6010
|
var p = new Promise(function (resolve, reject) {
|
|
5275
6011
|
var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
|
|
5276
6012
|
deferredObjectId = deferredObject.id;
|
|
6013
|
+
deferred >>>= 0;
|
|
5277
6014
|
HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
|
|
5278
6015
|
});
|
|
6016
|
+
promise >>>= 0;
|
|
5279
6017
|
value = emnapiCtx.addToCurrentScope(p).id;
|
|
5280
6018
|
HEAP_DATA_VIEW.setUint32(promise, value, true);
|
|
5281
6019
|
return envObject.getReturnStatus();
|
|
@@ -5343,6 +6081,7 @@ function createNapiModule(options) {
|
|
|
5343
6081
|
if (!is_promise)
|
|
5344
6082
|
return envObject.setLastError(1);
|
|
5345
6083
|
var h = emnapiCtx.handleStore.get(value);
|
|
6084
|
+
is_promise >>>= 0;
|
|
5346
6085
|
var r = h.isPromise() ? 1 : 0;
|
|
5347
6086
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5348
6087
|
HEAP_DATA_VIEW.setInt8(is_promise, r, true);
|
|
@@ -5486,6 +6225,7 @@ function createNapiModule(options) {
|
|
|
5486
6225
|
}
|
|
5487
6226
|
}
|
|
5488
6227
|
}
|
|
6228
|
+
result >>>= 0;
|
|
5489
6229
|
value = emnapiCtx.addToCurrentScope(ret).id;
|
|
5490
6230
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5491
6231
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5557,6 +6297,7 @@ function createNapiModule(options) {
|
|
|
5557
6297
|
catch (_) {
|
|
5558
6298
|
return envObject.setLastError(2);
|
|
5559
6299
|
}
|
|
6300
|
+
result >>>= 0;
|
|
5560
6301
|
r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
|
|
5561
6302
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5562
6303
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5596,6 +6337,7 @@ function createNapiModule(options) {
|
|
|
5596
6337
|
catch (_) {
|
|
5597
6338
|
return envObject.setLastError(2);
|
|
5598
6339
|
}
|
|
6340
|
+
result >>>= 0;
|
|
5599
6341
|
value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
|
|
5600
6342
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5601
6343
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5639,6 +6381,7 @@ function createNapiModule(options) {
|
|
|
5639
6381
|
}
|
|
5640
6382
|
}
|
|
5641
6383
|
if (result) {
|
|
6384
|
+
result >>>= 0;
|
|
5642
6385
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5643
6386
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5644
6387
|
}
|
|
@@ -5683,6 +6426,7 @@ function createNapiModule(options) {
|
|
|
5683
6426
|
return envObject.setLastError(4);
|
|
5684
6427
|
}
|
|
5685
6428
|
r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
|
|
6429
|
+
result >>>= 0;
|
|
5686
6430
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5687
6431
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5688
6432
|
return envObject.getReturnStatus();
|
|
@@ -5714,6 +6458,7 @@ function createNapiModule(options) {
|
|
|
5714
6458
|
if (!cname) {
|
|
5715
6459
|
return envObject.setLastError(1);
|
|
5716
6460
|
}
|
|
6461
|
+
cname >>>= 0;
|
|
5717
6462
|
emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
|
|
5718
6463
|
return envObject.getReturnStatus();
|
|
5719
6464
|
}
|
|
@@ -5752,6 +6497,8 @@ function createNapiModule(options) {
|
|
|
5752
6497
|
catch (_) {
|
|
5753
6498
|
return envObject.setLastError(2);
|
|
5754
6499
|
}
|
|
6500
|
+
utf8name >>>= 0;
|
|
6501
|
+
result >>>= 0;
|
|
5755
6502
|
r = emnapiString.UTF8ToString(utf8name, -1) in v;
|
|
5756
6503
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5757
6504
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
@@ -5792,6 +6539,8 @@ function createNapiModule(options) {
|
|
|
5792
6539
|
catch (_) {
|
|
5793
6540
|
return envObject.setLastError(2);
|
|
5794
6541
|
}
|
|
6542
|
+
utf8name >>>= 0;
|
|
6543
|
+
result >>>= 0;
|
|
5795
6544
|
value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
|
|
5796
6545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5797
6546
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5856,6 +6605,7 @@ function createNapiModule(options) {
|
|
|
5856
6605
|
catch (_) {
|
|
5857
6606
|
return envObject.setLastError(2);
|
|
5858
6607
|
}
|
|
6608
|
+
result >>>= 0;
|
|
5859
6609
|
r = ((index >>> 0) in v) ? 1 : 0;
|
|
5860
6610
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5861
6611
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5893,6 +6643,7 @@ function createNapiModule(options) {
|
|
|
5893
6643
|
catch (_) {
|
|
5894
6644
|
return envObject.setLastError(2);
|
|
5895
6645
|
}
|
|
6646
|
+
result >>>= 0;
|
|
5896
6647
|
value = envObject.ensureHandleId(v[index >>> 0]);
|
|
5897
6648
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5898
6649
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5933,6 +6684,7 @@ function createNapiModule(options) {
|
|
|
5933
6684
|
}
|
|
5934
6685
|
}
|
|
5935
6686
|
if (result) {
|
|
6687
|
+
result >>>= 0;
|
|
5936
6688
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5937
6689
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5938
6690
|
}
|
|
@@ -5955,6 +6707,8 @@ function createNapiModule(options) {
|
|
|
5955
6707
|
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
5956
6708
|
envObject.clearLastError();
|
|
5957
6709
|
try {
|
|
6710
|
+
properties >>>= 0;
|
|
6711
|
+
property_count >>>= 0;
|
|
5958
6712
|
property_count = property_count >>> 0;
|
|
5959
6713
|
if (property_count > 0) {
|
|
5960
6714
|
if (!properties)
|
|
@@ -5978,6 +6732,7 @@ function createNapiModule(options) {
|
|
|
5978
6732
|
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
5979
6733
|
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
5980
6734
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
6735
|
+
attributes >>>= 0;
|
|
5981
6736
|
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
5982
6737
|
if (utf8Name) {
|
|
5983
6738
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
@@ -6095,6 +6850,7 @@ function createNapiModule(options) {
|
|
|
6095
6850
|
}
|
|
6096
6851
|
var g = emnapiCtx.handleStore.get(5).value;
|
|
6097
6852
|
var ret = g.eval(v8Script.value);
|
|
6853
|
+
result >>>= 0;
|
|
6098
6854
|
value = envObject.ensureHandleId(ret);
|
|
6099
6855
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6100
6856
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -6120,6 +6876,7 @@ function createNapiModule(options) {
|
|
|
6120
6876
|
if (!result)
|
|
6121
6877
|
return envObject.setLastError(1);
|
|
6122
6878
|
var v = emnapiCtx.handleStore.get(value);
|
|
6879
|
+
result >>>= 0;
|
|
6123
6880
|
var r;
|
|
6124
6881
|
if (v.isNumber()) {
|
|
6125
6882
|
r = 3;
|
|
@@ -6175,6 +6932,7 @@ function createNapiModule(options) {
|
|
|
6175
6932
|
if (!result)
|
|
6176
6933
|
return envObject.setLastError(1);
|
|
6177
6934
|
var handle = emnapiCtx.handleStore.get(value);
|
|
6935
|
+
result >>>= 0;
|
|
6178
6936
|
v = handle.value ? 4 : 3;
|
|
6179
6937
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6180
6938
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6205,6 +6963,7 @@ function createNapiModule(options) {
|
|
|
6205
6963
|
if (handle.isBigInt()) {
|
|
6206
6964
|
throw new TypeError('Cannot convert a BigInt value to a number');
|
|
6207
6965
|
}
|
|
6966
|
+
result >>>= 0;
|
|
6208
6967
|
v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
|
|
6209
6968
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6210
6969
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6235,6 +6994,7 @@ function createNapiModule(options) {
|
|
|
6235
6994
|
if (handle.value == null) {
|
|
6236
6995
|
throw new TypeError('Cannot convert undefined or null to object');
|
|
6237
6996
|
}
|
|
6997
|
+
result >>>= 0;
|
|
6238
6998
|
v = envObject.ensureHandleId(Object(handle.value));
|
|
6239
6999
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6240
7000
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6265,6 +7025,7 @@ function createNapiModule(options) {
|
|
|
6265
7025
|
if (handle.isSymbol()) {
|
|
6266
7026
|
throw new TypeError('Cannot convert a Symbol value to a string');
|
|
6267
7027
|
}
|
|
7028
|
+
result >>>= 0;
|
|
6268
7029
|
v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
|
|
6269
7030
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6270
7031
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6293,6 +7054,7 @@ function createNapiModule(options) {
|
|
|
6293
7054
|
return envObject.setLastError(1);
|
|
6294
7055
|
if (!constructor)
|
|
6295
7056
|
return envObject.setLastError(1);
|
|
7057
|
+
result >>>= 0;
|
|
6296
7058
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6297
7059
|
HEAP_DATA_VIEW.setInt8(result, 0, true);
|
|
6298
7060
|
var ctor = emnapiCtx.handleStore.get(constructor);
|
|
@@ -6320,6 +7082,7 @@ function createNapiModule(options) {
|
|
|
6320
7082
|
if (!result)
|
|
6321
7083
|
return envObject.setLastError(1);
|
|
6322
7084
|
var h = emnapiCtx.handleStore.get(value);
|
|
7085
|
+
result >>>= 0;
|
|
6323
7086
|
var r = h.isArray() ? 1 : 0;
|
|
6324
7087
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6325
7088
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6335,6 +7098,7 @@ function createNapiModule(options) {
|
|
|
6335
7098
|
if (!result)
|
|
6336
7099
|
return envObject.setLastError(1);
|
|
6337
7100
|
var h = emnapiCtx.handleStore.get(value);
|
|
7101
|
+
result >>>= 0;
|
|
6338
7102
|
var r = h.isArrayBuffer() ? 1 : 0;
|
|
6339
7103
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6340
7104
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6350,6 +7114,7 @@ function createNapiModule(options) {
|
|
|
6350
7114
|
if (!result)
|
|
6351
7115
|
return envObject.setLastError(1);
|
|
6352
7116
|
var h = emnapiCtx.handleStore.get(value);
|
|
7117
|
+
result >>>= 0;
|
|
6353
7118
|
var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
|
|
6354
7119
|
(Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
|
|
6355
7120
|
? 1
|
|
@@ -6368,6 +7133,7 @@ function createNapiModule(options) {
|
|
|
6368
7133
|
if (!result)
|
|
6369
7134
|
return envObject.setLastError(1);
|
|
6370
7135
|
var h = emnapiCtx.handleStore.get(value);
|
|
7136
|
+
result >>>= 0;
|
|
6371
7137
|
var r = h.isDate() ? 1 : 0;
|
|
6372
7138
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6373
7139
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6383,6 +7149,7 @@ function createNapiModule(options) {
|
|
|
6383
7149
|
if (!result)
|
|
6384
7150
|
return envObject.setLastError(1);
|
|
6385
7151
|
var val = emnapiCtx.handleStore.get(value).value;
|
|
7152
|
+
result >>>= 0;
|
|
6386
7153
|
var r = (val instanceof Error) ? 1 : 0;
|
|
6387
7154
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6388
7155
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6398,6 +7165,7 @@ function createNapiModule(options) {
|
|
|
6398
7165
|
if (!result)
|
|
6399
7166
|
return envObject.setLastError(1);
|
|
6400
7167
|
var h = emnapiCtx.handleStore.get(value);
|
|
7168
|
+
result >>>= 0;
|
|
6401
7169
|
var r = h.isTypedArray() ? 1 : 0;
|
|
6402
7170
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6403
7171
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6413,6 +7181,7 @@ function createNapiModule(options) {
|
|
|
6413
7181
|
if (!result)
|
|
6414
7182
|
return envObject.setLastError(1);
|
|
6415
7183
|
var h = emnapiCtx.handleStore.get(value);
|
|
7184
|
+
result >>>= 0;
|
|
6416
7185
|
var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
|
|
6417
7186
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6418
7187
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6428,6 +7197,7 @@ function createNapiModule(options) {
|
|
|
6428
7197
|
if (!result)
|
|
6429
7198
|
return envObject.setLastError(1);
|
|
6430
7199
|
var h = emnapiCtx.handleStore.get(value);
|
|
7200
|
+
result >>>= 0;
|
|
6431
7201
|
var r = h.isDataView() ? 1 : 0;
|
|
6432
7202
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6433
7203
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6453,6 +7223,7 @@ function createNapiModule(options) {
|
|
|
6453
7223
|
return envObject.setLastError(1);
|
|
6454
7224
|
var lv = emnapiCtx.handleStore.get(lhs).value;
|
|
6455
7225
|
var rv = emnapiCtx.handleStore.get(rhs).value;
|
|
7226
|
+
result >>>= 0;
|
|
6456
7227
|
r = (lv === rv) ? 1 : 0;
|
|
6457
7228
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6458
7229
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6503,6 +7274,7 @@ function createNapiModule(options) {
|
|
|
6503
7274
|
if (!result)
|
|
6504
7275
|
return envObject.setLastError(1);
|
|
6505
7276
|
var h = emnapiCtx.handleStore.get(arraybuffer);
|
|
7277
|
+
result >>>= 0;
|
|
6506
7278
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6507
7279
|
if (h.isArrayBuffer() && h.value.byteLength === 0) {
|
|
6508
7280
|
try {
|
|
@@ -6558,11 +7330,13 @@ function createNapiModule(options) {
|
|
|
6558
7330
|
});
|
|
6559
7331
|
emnapiAWST.init();
|
|
6560
7332
|
emnapiExternalMemory.init();
|
|
7333
|
+
emnapiExternalSAB.init();
|
|
6561
7334
|
emnapiString.init();
|
|
6562
7335
|
emnapiTSFN.init();
|
|
6563
7336
|
PThread.init();
|
|
6564
7337
|
napiModule.emnapi.syncMemory = $emnapiSyncMemory;
|
|
6565
7338
|
napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
|
|
7339
|
+
napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
|
|
6566
7340
|
function addImports(mod) {
|
|
6567
7341
|
var keys = Object.keys(mod);
|
|
6568
7342
|
for (var i = 0; i < keys.length; ++i) {
|
|
@@ -6690,9 +7464,9 @@ function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) {
|
|
|
6690
7464
|
}
|
|
6691
7465
|
const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table;
|
|
6692
7466
|
if (wasi && !exportMemory) {
|
|
6693
|
-
const exports
|
|
6694
|
-
Object.assign(exports
|
|
6695
|
-
instance = { exports
|
|
7467
|
+
const exports = Object.create(null);
|
|
7468
|
+
Object.assign(exports, originalExports, { memory });
|
|
7469
|
+
instance = { exports };
|
|
6696
7470
|
}
|
|
6697
7471
|
const module = source.module;
|
|
6698
7472
|
if (wasi) {
|
|
@@ -6817,12 +7591,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6817
7591
|
try {
|
|
6818
7592
|
if (type === 'async-worker-init') {
|
|
6819
7593
|
this.handleAfterLoad(e, () => {
|
|
6820
|
-
this.napiModule.initWorker(payload.arg);
|
|
6821
|
-
});
|
|
6822
|
-
}
|
|
6823
|
-
else if (type === 'async-work-execute') {
|
|
6824
|
-
this.handleAfterLoad(e, () => {
|
|
6825
|
-
this.napiModule.executeAsyncWork(payload.work);
|
|
7594
|
+
this.napiModule.initWorker(payload.arg, payload.func);
|
|
6826
7595
|
});
|
|
6827
7596
|
}
|
|
6828
7597
|
}
|
|
@@ -6833,7 +7602,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6833
7602
|
}
|
|
6834
7603
|
}
|
|
6835
7604
|
|
|
6836
|
-
const version = "1.
|
|
7605
|
+
const version = "1.11.1";
|
|
6837
7606
|
|
|
6838
7607
|
exports.MessageHandler = MessageHandler;
|
|
6839
7608
|
exports.createNapiModule = createNapiModule;
|