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