@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.b4f3d17 → 0.0.0-insiders.b53fa09
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 +1188 -370
- 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 +1295 -375
- package/node_modules/@emnapi/core/dist/emnapi-core.js +1321 -413
- 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 +1188 -370
- package/node_modules/@emnapi/core/package.json +2 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +32 -5
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +11 -3
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +11 -3
- package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +11 -3
- package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +33 -5
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +8 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +33 -5
- package/node_modules/@emnapi/runtime/dist/emnapi.js +33 -5
- package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +11 -3
- package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.mjs +32 -5
- package/node_modules/@emnapi/runtime/package.json +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +21 -33
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +21 -33
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +21 -33
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +2 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +21 -33
- package/node_modules/@emnapi/wasi-threads/package.json +1 -1
- package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +47 -12
- package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +9665 -5416
- package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +47 -12
- package/node_modules/@napi-rs/wasm-runtime/package.json +18 -11
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
- package/node_modules/@tybys/wasm-util/dist/wasm-util.js +164 -2
- package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +22 -2
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +22 -2
- package/node_modules/@tybys/wasm-util/package.json +1 -1
- package/package.json +7 -7
- package/tailwindcss-oxide.wasi-browser.js +1 -0
- package/tailwindcss-oxide.wasi.cjs +1 -1
- package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
- package/wasi-worker-browser.mjs +2 -0
|
@@ -108,7 +108,6 @@ function createNapiModule(options) {
|
|
|
108
108
|
filename: '',
|
|
109
109
|
childThread: ENVIRONMENT_IS_PTHREAD,
|
|
110
110
|
initWorker: undefined,
|
|
111
|
-
executeAsyncWork: undefined,
|
|
112
111
|
waitThreadStart: waitThreadStart,
|
|
113
112
|
PThread: undefined,
|
|
114
113
|
init: function (options) {
|
|
@@ -120,10 +119,10 @@ function createNapiModule(options) {
|
|
|
120
119
|
if (!(instance === null || instance === void 0 ? void 0 : instance.exports))
|
|
121
120
|
throw new TypeError('Invalid wasm instance');
|
|
122
121
|
wasmInstance = instance;
|
|
123
|
-
var exports
|
|
122
|
+
var exports = instance.exports;
|
|
124
123
|
var module = options.module;
|
|
125
|
-
var memory = options.memory || exports
|
|
126
|
-
var table = options.table || exports
|
|
124
|
+
var memory = options.memory || exports.memory;
|
|
125
|
+
var table = options.table || exports.__indirect_function_table;
|
|
127
126
|
if (!(module instanceof _WebAssembly.Module))
|
|
128
127
|
throw new TypeError('Invalid wasm module');
|
|
129
128
|
if (!(memory instanceof _WebAssembly.Memory))
|
|
@@ -132,12 +131,12 @@ function createNapiModule(options) {
|
|
|
132
131
|
throw new TypeError('Invalid wasm table');
|
|
133
132
|
wasmMemory = memory;
|
|
134
133
|
wasmTable = table;
|
|
135
|
-
if (typeof exports
|
|
134
|
+
if (typeof exports.malloc !== 'function')
|
|
136
135
|
throw new TypeError('malloc is not exported');
|
|
137
|
-
if (typeof exports
|
|
136
|
+
if (typeof exports.free !== 'function')
|
|
138
137
|
throw new TypeError('free is not exported');
|
|
139
|
-
_malloc = exports
|
|
140
|
-
_free = exports
|
|
138
|
+
_malloc = exports.malloc;
|
|
139
|
+
_free = exports.free;
|
|
141
140
|
if (!napiModule.childThread) {
|
|
142
141
|
var moduleApiVersion = 8;
|
|
143
142
|
var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1;
|
|
@@ -148,11 +147,11 @@ function createNapiModule(options) {
|
|
|
148
147
|
var scope_1 = emnapiCtx.openScope(envObject);
|
|
149
148
|
try {
|
|
150
149
|
envObject.callIntoModule(function (_envObject) {
|
|
151
|
-
var exports
|
|
152
|
-
var exportsHandle = scope_1.add(exports
|
|
150
|
+
var exports = napiModule.exports;
|
|
151
|
+
var exportsHandle = scope_1.add(exports);
|
|
153
152
|
var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1;
|
|
154
153
|
var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id);
|
|
155
|
-
napiModule.exports = (!napiValue) ? exports
|
|
154
|
+
napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
|
|
156
155
|
});
|
|
157
156
|
}
|
|
158
157
|
catch (e) {
|
|
@@ -296,6 +295,9 @@ function createNapiModule(options) {
|
|
|
296
295
|
return envObject.clearLastError();
|
|
297
296
|
}
|
|
298
297
|
function _emnapi_get_node_version(major, minor, patch) {
|
|
298
|
+
major >>>= 0;
|
|
299
|
+
minor >>>= 0;
|
|
300
|
+
patch >>>= 0;
|
|
299
301
|
var versions = (typeof process === 'object' && process !== null &&
|
|
300
302
|
typeof process.versions === 'object' && process.versions !== null &&
|
|
301
303
|
typeof process.versions.node === 'string')
|
|
@@ -339,6 +341,7 @@ function createNapiModule(options) {
|
|
|
339
341
|
}
|
|
340
342
|
function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
|
|
341
343
|
var envObject = emnapiCtx.envStore.get(env);
|
|
344
|
+
callback >>>= 0;
|
|
342
345
|
envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
|
|
343
346
|
}
|
|
344
347
|
function _emnapi_ctx_increase_waiting_request_counter() {
|
|
@@ -403,9 +406,19 @@ function createNapiModule(options) {
|
|
|
403
406
|
var worker = PThread.pthreads[tid];
|
|
404
407
|
return worker;
|
|
405
408
|
}
|
|
409
|
+
function _emnapi_worker_ref(pthreadPtr) {
|
|
410
|
+
if (ENVIRONMENT_IS_PTHREAD)
|
|
411
|
+
return;
|
|
412
|
+
pthreadPtr >>>= 0;
|
|
413
|
+
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
414
|
+
if (worker && typeof worker.ref === 'function') {
|
|
415
|
+
worker.ref();
|
|
416
|
+
}
|
|
417
|
+
}
|
|
406
418
|
function _emnapi_worker_unref(pthreadPtr) {
|
|
407
419
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
408
420
|
return;
|
|
421
|
+
pthreadPtr >>>= 0;
|
|
409
422
|
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
410
423
|
if (worker && typeof worker.unref === 'function') {
|
|
411
424
|
worker.unref();
|
|
@@ -506,6 +519,7 @@ function createNapiModule(options) {
|
|
|
506
519
|
_emnapi_async_send_js: _emnapi_async_send_js,
|
|
507
520
|
_emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
|
|
508
521
|
_emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
|
|
522
|
+
_emnapi_worker_ref: _emnapi_worker_ref,
|
|
509
523
|
_emnapi_worker_unref: _emnapi_worker_unref
|
|
510
524
|
});
|
|
511
525
|
function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
|
|
@@ -514,22 +528,14 @@ function createNapiModule(options) {
|
|
|
514
528
|
var envObject = emnapiCtx.envStore.get(env);
|
|
515
529
|
if (!adjusted_value)
|
|
516
530
|
return envObject.setLastError(1);
|
|
517
|
-
var
|
|
518
|
-
|
|
519
|
-
return envObject.setLastError(1);
|
|
520
|
-
}
|
|
521
|
-
var old_size = wasmMemory.buffer.byteLength;
|
|
522
|
-
var new_size = old_size + change_in_bytes_number;
|
|
523
|
-
new_size = new_size + ((65536 - new_size % 65536) % 65536);
|
|
524
|
-
if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
|
|
525
|
-
return envObject.setLastError(9);
|
|
526
|
-
}
|
|
531
|
+
var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
|
|
532
|
+
adjusted_value >>>= 0;
|
|
527
533
|
if (emnapiCtx.feature.supportBigInt) {
|
|
528
534
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
529
|
-
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(
|
|
535
|
+
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
|
|
530
536
|
}
|
|
531
537
|
else {
|
|
532
|
-
$emnapiSetValueI64(adjusted_value,
|
|
538
|
+
$emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
|
|
533
539
|
}
|
|
534
540
|
return envObject.clearLastError();
|
|
535
541
|
}
|
|
@@ -687,6 +693,7 @@ function createNapiModule(options) {
|
|
|
687
693
|
var asyncId = asyncContext.asyncId;
|
|
688
694
|
var triggerAsyncId = asyncContext.triggerAsyncId;
|
|
689
695
|
if (result) {
|
|
696
|
+
result >>>= 0;
|
|
690
697
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
691
698
|
HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
|
|
692
699
|
HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
|
|
@@ -707,6 +714,8 @@ function createNapiModule(options) {
|
|
|
707
714
|
return;
|
|
708
715
|
var resource = emnapiCtx.handleStore.get(async_resource).value;
|
|
709
716
|
var callback = emnapiCtx.handleStore.get(cb).value;
|
|
717
|
+
argv >>>= 0;
|
|
718
|
+
size >>>= 0;
|
|
710
719
|
size = size >>> 0;
|
|
711
720
|
var arr = Array(size);
|
|
712
721
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -719,6 +728,7 @@ function createNapiModule(options) {
|
|
|
719
728
|
triggerAsyncId: trigger_async_id
|
|
720
729
|
});
|
|
721
730
|
if (result) {
|
|
731
|
+
result >>>= 0;
|
|
722
732
|
var envObject = emnapiCtx.envStore.get(env);
|
|
723
733
|
v = envObject.ensureHandleId(ret);
|
|
724
734
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -745,6 +755,7 @@ function createNapiModule(options) {
|
|
|
745
755
|
}
|
|
746
756
|
var low = Number(numberValue & BigInt(0xffffffff));
|
|
747
757
|
var high = Number(numberValue >> BigInt(32));
|
|
758
|
+
result >>>= 0;
|
|
748
759
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
749
760
|
HEAP_DATA_VIEW.setInt32(result, low, true);
|
|
750
761
|
HEAP_DATA_VIEW.setInt32(result + 4, high, true);
|
|
@@ -754,6 +765,7 @@ function createNapiModule(options) {
|
|
|
754
765
|
if (!emnapiNodeBinding) {
|
|
755
766
|
return 9;
|
|
756
767
|
}
|
|
768
|
+
async_context >>>= 0;
|
|
757
769
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
758
770
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
759
771
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
@@ -796,10 +808,13 @@ function createNapiModule(options) {
|
|
|
796
808
|
if (typeof v8func !== 'function') {
|
|
797
809
|
return envObject.setLastError(1);
|
|
798
810
|
}
|
|
811
|
+
async_context >>>= 0;
|
|
799
812
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
800
813
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
801
814
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
802
815
|
var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
|
|
816
|
+
argv >>>= 0;
|
|
817
|
+
argc >>>= 0;
|
|
803
818
|
argc = argc >>> 0;
|
|
804
819
|
var arr = Array(argc);
|
|
805
820
|
for (; i < argc; i++) {
|
|
@@ -813,6 +828,7 @@ function createNapiModule(options) {
|
|
|
813
828
|
if (ret.status !== 0)
|
|
814
829
|
return envObject.setLastError(ret.status);
|
|
815
830
|
if (result) {
|
|
831
|
+
result >>>= 0;
|
|
816
832
|
v = envObject.ensureHandleId(ret.value);
|
|
817
833
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
818
834
|
}
|
|
@@ -840,32 +856,61 @@ function createNapiModule(options) {
|
|
|
840
856
|
napi_open_callback_scope: napi_open_callback_scope
|
|
841
857
|
});
|
|
842
858
|
var emnapiTSFN = {
|
|
859
|
+
_liveSet: {},
|
|
843
860
|
offset: {
|
|
861
|
+
__size__: 0,
|
|
844
862
|
resource: 0,
|
|
845
|
-
async_id:
|
|
846
|
-
trigger_async_id:
|
|
847
|
-
queue_size:
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
863
|
+
async_id: 0,
|
|
864
|
+
trigger_async_id: 0,
|
|
865
|
+
queue_size: 0,
|
|
866
|
+
is_some: 0,
|
|
867
|
+
queue: 0,
|
|
868
|
+
async_pending: 0,
|
|
869
|
+
async_u_fd: 0,
|
|
870
|
+
thread_count: 0,
|
|
871
|
+
state: 0,
|
|
872
|
+
dispatch_state: 0,
|
|
873
|
+
context: 0,
|
|
874
|
+
max_queue_size: 0,
|
|
875
|
+
ref: 0,
|
|
876
|
+
env: 0,
|
|
877
|
+
finalize_data: 0,
|
|
878
|
+
finalize_cb: 0,
|
|
879
|
+
call_js_cb: 0,
|
|
880
|
+
handles_closing: 0,
|
|
881
|
+
async_ref: 0,
|
|
882
|
+
mutex: 0,
|
|
883
|
+
cond: 0
|
|
864
884
|
},
|
|
865
885
|
init: function () {
|
|
886
|
+
emnapiTSFN._liveSet = new Set();
|
|
887
|
+
emnapiTSFN.offset.__size__ = 184;
|
|
888
|
+
emnapiTSFN.offset.resource = 0;
|
|
889
|
+
emnapiTSFN.offset.async_id = 8;
|
|
890
|
+
emnapiTSFN.offset.trigger_async_id = 16;
|
|
891
|
+
emnapiTSFN.offset.queue_size = 60;
|
|
892
|
+
emnapiTSFN.offset.is_some = 24;
|
|
893
|
+
emnapiTSFN.offset.queue = 64;
|
|
894
|
+
emnapiTSFN.offset.async_pending = 132;
|
|
895
|
+
emnapiTSFN.offset.async_u_fd = 96;
|
|
896
|
+
emnapiTSFN.offset.thread_count = 136;
|
|
897
|
+
emnapiTSFN.offset.state = 140;
|
|
898
|
+
emnapiTSFN.offset.dispatch_state = 144;
|
|
899
|
+
emnapiTSFN.offset.context = 148;
|
|
900
|
+
emnapiTSFN.offset.max_queue_size = 152;
|
|
901
|
+
emnapiTSFN.offset.ref = 156;
|
|
902
|
+
emnapiTSFN.offset.env = 160;
|
|
903
|
+
emnapiTSFN.offset.finalize_data = 164;
|
|
904
|
+
emnapiTSFN.offset.finalize_cb = 168;
|
|
905
|
+
emnapiTSFN.offset.call_js_cb = 172;
|
|
906
|
+
emnapiTSFN.offset.handles_closing = 176;
|
|
907
|
+
emnapiTSFN.offset.async_ref = 180;
|
|
908
|
+
emnapiTSFN.offset.mutex = 32;
|
|
909
|
+
emnapiTSFN.offset.cond = 56;
|
|
910
|
+
emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
|
|
866
911
|
if (typeof PThread !== 'undefined') {
|
|
867
912
|
PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
|
|
868
|
-
PThread.
|
|
913
|
+
Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
|
|
869
914
|
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
870
915
|
PThread.getNewWorker = function () {
|
|
871
916
|
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
@@ -886,7 +931,10 @@ function createNapiModule(options) {
|
|
|
886
931
|
var type = __emnapi__.type;
|
|
887
932
|
var payload = __emnapi__.payload;
|
|
888
933
|
if (type === 'tsfn-send') {
|
|
889
|
-
emnapiTSFN.
|
|
934
|
+
var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
|
|
935
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
936
|
+
emnapiTSFN.enqueue(payload.tsfn);
|
|
937
|
+
}
|
|
890
938
|
}
|
|
891
939
|
}
|
|
892
940
|
};
|
|
@@ -908,18 +956,33 @@ function createNapiModule(options) {
|
|
|
908
956
|
}
|
|
909
957
|
return true;
|
|
910
958
|
},
|
|
959
|
+
ensureBufferFor: function (end) {
|
|
960
|
+
var buffer = wasmMemory.buffer;
|
|
961
|
+
if (end > buffer.byteLength) {
|
|
962
|
+
wasmMemory.grow(0);
|
|
963
|
+
buffer = wasmMemory.buffer;
|
|
964
|
+
}
|
|
965
|
+
return buffer;
|
|
966
|
+
},
|
|
911
967
|
initQueue: function (func) {
|
|
912
968
|
var size = 2 * 4;
|
|
913
969
|
var queue = _malloc(size);
|
|
914
970
|
if (!queue)
|
|
915
971
|
return false;
|
|
916
|
-
|
|
972
|
+
queue >>>= 0;
|
|
973
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
|
|
917
974
|
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
918
975
|
return true;
|
|
919
976
|
},
|
|
920
977
|
destroyQueue: function (func) {
|
|
921
978
|
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
922
979
|
if (queue) {
|
|
980
|
+
var node = emnapiTSFN.loadSizeTypeValue(queue, false);
|
|
981
|
+
while (node !== 0) {
|
|
982
|
+
var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
|
|
983
|
+
_free(node);
|
|
984
|
+
node = next;
|
|
985
|
+
}
|
|
923
986
|
_free(queue);
|
|
924
987
|
}
|
|
925
988
|
},
|
|
@@ -931,6 +994,7 @@ function createNapiModule(options) {
|
|
|
931
994
|
var node = _malloc(size);
|
|
932
995
|
if (!node)
|
|
933
996
|
throw new Error('OOM');
|
|
997
|
+
node >>>= 0;
|
|
934
998
|
emnapiTSFN.storeSizeTypeValue(node, data, false);
|
|
935
999
|
emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
|
|
936
1000
|
if (head === 0 && tail === 0) {
|
|
@@ -966,11 +1030,11 @@ function createNapiModule(options) {
|
|
|
966
1030
|
var waitCondition = function () {
|
|
967
1031
|
var queueSize = emnapiTSFN.getQueueSize(func);
|
|
968
1032
|
var maxSize = emnapiTSFN.getMaxQueueSize(func);
|
|
969
|
-
|
|
970
|
-
return queueSize >= maxSize && maxSize > 0 && !isClosing;
|
|
1033
|
+
return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
|
|
971
1034
|
};
|
|
972
1035
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
973
|
-
|
|
1036
|
+
var shouldDelete = false;
|
|
1037
|
+
var ret = mutex.execute(function () {
|
|
974
1038
|
while (waitCondition()) {
|
|
975
1039
|
if (mode === 0) {
|
|
976
1040
|
return 15;
|
|
@@ -980,31 +1044,35 @@ function createNapiModule(options) {
|
|
|
980
1044
|
}
|
|
981
1045
|
cond.wait();
|
|
982
1046
|
}
|
|
983
|
-
if (emnapiTSFN.
|
|
984
|
-
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
985
|
-
return 1;
|
|
986
|
-
}
|
|
987
|
-
else {
|
|
988
|
-
emnapiTSFN.subThreadCount(func);
|
|
989
|
-
return 16;
|
|
990
|
-
}
|
|
991
|
-
}
|
|
992
|
-
else {
|
|
1047
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
993
1048
|
emnapiTSFN.pushQueue(func, data);
|
|
994
1049
|
emnapiTSFN.send(func);
|
|
995
1050
|
return 0;
|
|
996
1051
|
}
|
|
1052
|
+
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1053
|
+
return 1;
|
|
1054
|
+
}
|
|
1055
|
+
emnapiTSFN.subThreadCount(func);
|
|
1056
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1057
|
+
return 16;
|
|
1058
|
+
}
|
|
1059
|
+
shouldDelete = true;
|
|
1060
|
+
return 16;
|
|
997
1061
|
});
|
|
1062
|
+
if (shouldDelete) {
|
|
1063
|
+
emnapiTSFN.destroy(func);
|
|
1064
|
+
}
|
|
1065
|
+
return ret;
|
|
998
1066
|
},
|
|
999
1067
|
getMutex: function (func) {
|
|
1000
1068
|
var index = func + emnapiTSFN.offset.mutex;
|
|
1001
1069
|
var mutex = {
|
|
1002
1070
|
lock: function () {
|
|
1003
1071
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1004
|
-
var i32a = new Int32Array(
|
|
1072
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1005
1073
|
if (isBrowserMain) {
|
|
1006
1074
|
while (true) {
|
|
1007
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1075
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1008
1076
|
if (oldValue === 0) {
|
|
1009
1077
|
return;
|
|
1010
1078
|
}
|
|
@@ -1012,18 +1080,18 @@ function createNapiModule(options) {
|
|
|
1012
1080
|
}
|
|
1013
1081
|
else {
|
|
1014
1082
|
while (true) {
|
|
1015
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1083
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1016
1084
|
if (oldValue === 0) {
|
|
1017
1085
|
return;
|
|
1018
1086
|
}
|
|
1019
|
-
Atomics.wait(i32a, 0,
|
|
1087
|
+
Atomics.wait(i32a, 0, 10);
|
|
1020
1088
|
}
|
|
1021
1089
|
}
|
|
1022
1090
|
},
|
|
1023
1091
|
unlock: function () {
|
|
1024
|
-
var i32a = new Int32Array(
|
|
1025
|
-
var oldValue = Atomics.compareExchange(i32a, 0,
|
|
1026
|
-
if (oldValue !==
|
|
1092
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1093
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1094
|
+
if (oldValue !== 10) {
|
|
1027
1095
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
1028
1096
|
}
|
|
1029
1097
|
Atomics.notify(i32a, 0, 1);
|
|
@@ -1045,14 +1113,14 @@ function createNapiModule(options) {
|
|
|
1045
1113
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1046
1114
|
var cond = {
|
|
1047
1115
|
wait: function () {
|
|
1048
|
-
var i32a = new Int32Array(
|
|
1116
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1049
1117
|
var value = Atomics.load(i32a, 0);
|
|
1050
1118
|
mutex.unlock();
|
|
1051
1119
|
Atomics.wait(i32a, 0, value);
|
|
1052
1120
|
mutex.lock();
|
|
1053
1121
|
},
|
|
1054
1122
|
signal: function () {
|
|
1055
|
-
var i32a = new Int32Array(
|
|
1123
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1056
1124
|
Atomics.add(i32a, 0, 1);
|
|
1057
1125
|
Atomics.notify(i32a, 0, 1);
|
|
1058
1126
|
}
|
|
@@ -1065,15 +1133,15 @@ function createNapiModule(options) {
|
|
|
1065
1133
|
addQueueSize: function (func) {
|
|
1066
1134
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1067
1135
|
var arr, index;
|
|
1068
|
-
arr = new Uint32Array(
|
|
1069
|
-
index = (func + offset)
|
|
1136
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1137
|
+
index = (func + offset) >>> 2;
|
|
1070
1138
|
Atomics.add(arr, index, 1);
|
|
1071
1139
|
},
|
|
1072
1140
|
subQueueSize: function (func) {
|
|
1073
1141
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1074
1142
|
var arr, index;
|
|
1075
|
-
arr = new Uint32Array(
|
|
1076
|
-
index = (func + offset)
|
|
1143
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1144
|
+
index = (func + offset) >>> 2;
|
|
1077
1145
|
Atomics.sub(arr, index, 1);
|
|
1078
1146
|
},
|
|
1079
1147
|
getThreadCount: function (func) {
|
|
@@ -1082,31 +1150,31 @@ function createNapiModule(options) {
|
|
|
1082
1150
|
addThreadCount: function (func) {
|
|
1083
1151
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1084
1152
|
var arr, index;
|
|
1085
|
-
arr = new Uint32Array(
|
|
1086
|
-
index = (func + offset)
|
|
1153
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1154
|
+
index = (func + offset) >>> 2;
|
|
1087
1155
|
Atomics.add(arr, index, 1);
|
|
1088
1156
|
},
|
|
1089
1157
|
subThreadCount: function (func) {
|
|
1090
1158
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1091
1159
|
var arr, index;
|
|
1092
|
-
arr = new Uint32Array(
|
|
1093
|
-
index = (func + offset)
|
|
1160
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1161
|
+
index = (func + offset) >>> 2;
|
|
1094
1162
|
Atomics.sub(arr, index, 1);
|
|
1095
1163
|
},
|
|
1096
|
-
|
|
1097
|
-
return Atomics.load(new Int32Array(
|
|
1164
|
+
getState: function (func) {
|
|
1165
|
+
return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
|
|
1098
1166
|
},
|
|
1099
|
-
|
|
1100
|
-
Atomics.store(new Int32Array(
|
|
1167
|
+
setState: function (func, value) {
|
|
1168
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
|
|
1101
1169
|
},
|
|
1102
1170
|
getHandlesClosing: function (func) {
|
|
1103
|
-
return Atomics.load(new
|
|
1171
|
+
return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
|
|
1104
1172
|
},
|
|
1105
1173
|
setHandlesClosing: function (func, value) {
|
|
1106
|
-
Atomics.store(new
|
|
1174
|
+
Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
|
|
1107
1175
|
},
|
|
1108
1176
|
getDispatchState: function (func) {
|
|
1109
|
-
return Atomics.load(new Uint32Array(
|
|
1177
|
+
return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
|
|
1110
1178
|
},
|
|
1111
1179
|
getContext: function (func) {
|
|
1112
1180
|
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
@@ -1136,66 +1204,96 @@ function createNapiModule(options) {
|
|
|
1136
1204
|
var ret;
|
|
1137
1205
|
var arr;
|
|
1138
1206
|
if (unsigned) {
|
|
1139
|
-
arr = new Uint32Array(
|
|
1140
|
-
ret = Atomics.load(arr, offset
|
|
1207
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1208
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1141
1209
|
return ret;
|
|
1142
1210
|
}
|
|
1143
1211
|
else {
|
|
1144
|
-
arr = new Int32Array(
|
|
1145
|
-
ret = Atomics.load(arr, offset
|
|
1212
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1213
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1146
1214
|
return ret;
|
|
1147
1215
|
}
|
|
1148
1216
|
},
|
|
1149
1217
|
storeSizeTypeValue: function (offset, value, unsigned) {
|
|
1150
1218
|
var arr;
|
|
1151
1219
|
if (unsigned) {
|
|
1152
|
-
arr = new Uint32Array(
|
|
1153
|
-
Atomics.store(arr, offset
|
|
1220
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1221
|
+
Atomics.store(arr, offset >>> 2, value);
|
|
1154
1222
|
return undefined;
|
|
1155
1223
|
}
|
|
1156
1224
|
else {
|
|
1157
|
-
arr = new Int32Array(
|
|
1158
|
-
Atomics.store(arr, offset
|
|
1225
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1226
|
+
Atomics.store(arr, offset >>> 2, value >>> 0);
|
|
1159
1227
|
return undefined;
|
|
1160
1228
|
}
|
|
1161
1229
|
},
|
|
1230
|
+
releaseResources: function (func) {
|
|
1231
|
+
if (emnapiTSFN.getState(func) !== 2) {
|
|
1232
|
+
emnapiTSFN.setState(func, 2);
|
|
1233
|
+
var env = emnapiTSFN.getEnv(func);
|
|
1234
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
1235
|
+
var ref = emnapiTSFN.getRef(func);
|
|
1236
|
+
if (ref) {
|
|
1237
|
+
emnapiCtx.refStore.get(ref).dispose();
|
|
1238
|
+
}
|
|
1239
|
+
var resource = emnapiTSFN.getResource(func);
|
|
1240
|
+
emnapiCtx.refStore.get(resource).dispose();
|
|
1241
|
+
emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
|
|
1242
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1243
|
+
HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
|
|
1244
|
+
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1245
|
+
envObject.unref();
|
|
1246
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1247
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1248
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1249
|
+
if (Atomics.load(arr, asyncRefOffset) > 0) {
|
|
1250
|
+
Atomics.store(arr, asyncRefOffset, 0);
|
|
1251
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1252
|
+
}
|
|
1253
|
+
if (emnapiNodeBinding) {
|
|
1254
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1255
|
+
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1256
|
+
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1257
|
+
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
},
|
|
1162
1261
|
destroy: function (func) {
|
|
1262
|
+
emnapiTSFN._liveSet.delete(func);
|
|
1163
1263
|
emnapiTSFN.destroyQueue(func);
|
|
1164
|
-
|
|
1165
|
-
var envObject = emnapiCtx.envStore.get(env);
|
|
1166
|
-
var ref = emnapiTSFN.getRef(func);
|
|
1167
|
-
if (ref) {
|
|
1168
|
-
emnapiCtx.refStore.get(ref).dispose();
|
|
1169
|
-
}
|
|
1170
|
-
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1171
|
-
envObject.unref();
|
|
1172
|
-
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
|
|
1173
|
-
var arr = new Int32Array(wasmMemory.buffer);
|
|
1174
|
-
if (Atomics.load(arr, asyncRefOffset)) {
|
|
1175
|
-
Atomics.store(arr, asyncRefOffset, 0);
|
|
1176
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1177
|
-
}
|
|
1178
|
-
var resource = emnapiTSFN.getResource(func);
|
|
1179
|
-
emnapiCtx.refStore.get(resource).dispose();
|
|
1180
|
-
if (emnapiNodeBinding) {
|
|
1181
|
-
var view = new DataView(wasmMemory.buffer);
|
|
1182
|
-
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1183
|
-
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1184
|
-
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1185
|
-
}
|
|
1264
|
+
emnapiTSFN.releaseResources(func);
|
|
1186
1265
|
_free(func);
|
|
1187
1266
|
},
|
|
1188
|
-
|
|
1267
|
+
emptyQueue: function (func) {
|
|
1268
|
+
var drainQueue = [];
|
|
1269
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1270
|
+
while (emnapiTSFN.getQueueSize(func) > 0) {
|
|
1271
|
+
drainQueue.push(emnapiTSFN.shiftQueue(func));
|
|
1272
|
+
}
|
|
1273
|
+
});
|
|
1189
1274
|
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
1190
1275
|
var context = emnapiTSFN.getContext(func);
|
|
1191
1276
|
var data;
|
|
1192
|
-
|
|
1193
|
-
data =
|
|
1277
|
+
for (var i = 0; i < drainQueue.length; i++) {
|
|
1278
|
+
data = drainQueue[i];
|
|
1194
1279
|
if (callJsCb) {
|
|
1195
1280
|
(wasmTable.get(callJsCb))(0, 0, context, data);
|
|
1196
1281
|
}
|
|
1197
1282
|
}
|
|
1198
|
-
|
|
1283
|
+
},
|
|
1284
|
+
maybeDelete: function (func) {
|
|
1285
|
+
var shouldDelete = false;
|
|
1286
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1287
|
+
if (emnapiTSFN.getThreadCount(func) > 0) {
|
|
1288
|
+
emnapiTSFN.releaseResources(func);
|
|
1289
|
+
}
|
|
1290
|
+
else {
|
|
1291
|
+
shouldDelete = true;
|
|
1292
|
+
}
|
|
1293
|
+
});
|
|
1294
|
+
if (shouldDelete) {
|
|
1295
|
+
emnapiTSFN.destroy(func);
|
|
1296
|
+
}
|
|
1199
1297
|
},
|
|
1200
1298
|
finalize: function (func) {
|
|
1201
1299
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1208,12 +1306,13 @@ function createNapiModule(options) {
|
|
|
1208
1306
|
envObject.callFinalizerInternal(0, finalize, data, context);
|
|
1209
1307
|
};
|
|
1210
1308
|
try {
|
|
1309
|
+
emnapiTSFN.emptyQueue(func);
|
|
1211
1310
|
if (finalize) {
|
|
1212
1311
|
if (emnapiNodeBinding) {
|
|
1213
1312
|
var resource = emnapiTSFN.getResource(func);
|
|
1214
1313
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1215
1314
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1216
|
-
var view = new DataView(
|
|
1315
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1217
1316
|
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1218
1317
|
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1219
1318
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
@@ -1225,7 +1324,7 @@ function createNapiModule(options) {
|
|
|
1225
1324
|
f();
|
|
1226
1325
|
}
|
|
1227
1326
|
}
|
|
1228
|
-
emnapiTSFN.
|
|
1327
|
+
emnapiTSFN.maybeDelete(func);
|
|
1229
1328
|
}
|
|
1230
1329
|
finally {
|
|
1231
1330
|
emnapiCtx.closeScope(envObject);
|
|
@@ -1241,7 +1340,7 @@ function createNapiModule(options) {
|
|
|
1241
1340
|
try {
|
|
1242
1341
|
if (set_closing) {
|
|
1243
1342
|
emnapiTSFN.getMutex(func).execute(function () {
|
|
1244
|
-
emnapiTSFN.
|
|
1343
|
+
emnapiTSFN.setState(func, 1);
|
|
1245
1344
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1246
1345
|
emnapiTSFN.getCond(func).signal();
|
|
1247
1346
|
}
|
|
@@ -1251,6 +1350,7 @@ function createNapiModule(options) {
|
|
|
1251
1350
|
return;
|
|
1252
1351
|
}
|
|
1253
1352
|
emnapiTSFN.setHandlesClosing(func, 1);
|
|
1353
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
|
|
1254
1354
|
emnapiCtx.feature.setImmediate(function () {
|
|
1255
1355
|
emnapiTSFN.finalize(func);
|
|
1256
1356
|
});
|
|
@@ -1266,10 +1366,7 @@ function createNapiModule(options) {
|
|
|
1266
1366
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1267
1367
|
var cond = emnapiTSFN.getCond(func);
|
|
1268
1368
|
mutex.execute(function () {
|
|
1269
|
-
if (emnapiTSFN.
|
|
1270
|
-
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1271
|
-
}
|
|
1272
|
-
else {
|
|
1369
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1273
1370
|
var size = emnapiTSFN.getQueueSize(func);
|
|
1274
1371
|
if (size > 0) {
|
|
1275
1372
|
data = emnapiTSFN.shiftQueue(func);
|
|
@@ -1282,7 +1379,7 @@ function createNapiModule(options) {
|
|
|
1282
1379
|
}
|
|
1283
1380
|
if (size === 0) {
|
|
1284
1381
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1285
|
-
emnapiTSFN.
|
|
1382
|
+
emnapiTSFN.setState(func, 1);
|
|
1286
1383
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1287
1384
|
cond.signal();
|
|
1288
1385
|
}
|
|
@@ -1293,6 +1390,9 @@ function createNapiModule(options) {
|
|
|
1293
1390
|
has_more = true;
|
|
1294
1391
|
}
|
|
1295
1392
|
}
|
|
1393
|
+
else {
|
|
1394
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1395
|
+
}
|
|
1296
1396
|
});
|
|
1297
1397
|
if (popped_value) {
|
|
1298
1398
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1320,7 +1420,7 @@ function createNapiModule(options) {
|
|
|
1320
1420
|
var resource = emnapiTSFN.getResource(func);
|
|
1321
1421
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1322
1422
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1323
|
-
var view = new DataView(
|
|
1423
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1324
1424
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
1325
1425
|
asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
|
|
1326
1426
|
triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
|
|
@@ -1339,8 +1439,9 @@ function createNapiModule(options) {
|
|
|
1339
1439
|
dispatch: function (func) {
|
|
1340
1440
|
var has_more = true;
|
|
1341
1441
|
var iterations_left = 1000;
|
|
1342
|
-
var
|
|
1343
|
-
var
|
|
1442
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1443
|
+
var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
|
|
1444
|
+
var index = dispatchStateAddress >>> 2;
|
|
1344
1445
|
while (has_more && --iterations_left !== 0) {
|
|
1345
1446
|
Atomics.store(ui32a, index, 1);
|
|
1346
1447
|
has_more = emnapiTSFN.dispatchOne(func);
|
|
@@ -1352,25 +1453,66 @@ function createNapiModule(options) {
|
|
|
1352
1453
|
emnapiTSFN.send(func);
|
|
1353
1454
|
}
|
|
1354
1455
|
},
|
|
1355
|
-
|
|
1356
|
-
var
|
|
1357
|
-
|
|
1456
|
+
enqueue: function (func) {
|
|
1457
|
+
var pending = func + emnapiTSFN.offset.async_pending;
|
|
1458
|
+
var scheduled = func + emnapiTSFN.offset.async_u_fd;
|
|
1459
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
|
|
1460
|
+
if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
|
|
1358
1461
|
return;
|
|
1359
1462
|
}
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1463
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1464
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1465
|
+
return;
|
|
1466
|
+
}
|
|
1467
|
+
if (Atomics.load(i32a, pending >>> 2) === 0) {
|
|
1468
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1469
|
+
return;
|
|
1470
|
+
}
|
|
1471
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1472
|
+
try {
|
|
1473
|
+
if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
|
|
1474
|
+
return;
|
|
1475
|
+
}
|
|
1476
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1477
|
+
return;
|
|
1478
|
+
}
|
|
1479
|
+
emnapiTSFN.dispatch(func);
|
|
1480
|
+
}
|
|
1481
|
+
finally {
|
|
1482
|
+
if (emnapiTSFN._liveSet.has(func)) {
|
|
1483
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1484
|
+
if (Atomics.load(i32a, pending >>> 2) !== 0) {
|
|
1485
|
+
emnapiTSFN.enqueue(func);
|
|
1486
|
+
}
|
|
1366
1487
|
}
|
|
1367
1488
|
}
|
|
1368
1489
|
});
|
|
1490
|
+
});
|
|
1491
|
+
},
|
|
1492
|
+
send: function (func) {
|
|
1493
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1494
|
+
var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
|
|
1495
|
+
if ((current_state & 1) === 1) {
|
|
1496
|
+
return;
|
|
1369
1497
|
}
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1498
|
+
var pendng = func + emnapiTSFN.offset.async_pending;
|
|
1499
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
1500
|
+
return;
|
|
1501
|
+
}
|
|
1502
|
+
if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
|
|
1503
|
+
if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
|
|
1504
|
+
postMessage({
|
|
1505
|
+
__emnapi__: {
|
|
1506
|
+
type: 'tsfn-send',
|
|
1507
|
+
payload: {
|
|
1508
|
+
tsfn: func
|
|
1509
|
+
}
|
|
1510
|
+
}
|
|
1511
|
+
});
|
|
1512
|
+
}
|
|
1513
|
+
else {
|
|
1514
|
+
emnapiTSFN.enqueue(func);
|
|
1515
|
+
}
|
|
1374
1516
|
}
|
|
1375
1517
|
}
|
|
1376
1518
|
};
|
|
@@ -1381,6 +1523,13 @@ function createNapiModule(options) {
|
|
|
1381
1523
|
envObject.checkGCAccess();
|
|
1382
1524
|
if (!async_resource_name)
|
|
1383
1525
|
return envObject.setLastError(1);
|
|
1526
|
+
max_queue_size >>>= 0;
|
|
1527
|
+
initial_thread_count >>>= 0;
|
|
1528
|
+
env >>>= 0;
|
|
1529
|
+
thread_finalize_data >>>= 0;
|
|
1530
|
+
thread_finalize_cb >>>= 0;
|
|
1531
|
+
context >>>= 0;
|
|
1532
|
+
call_js_cb >>>= 0;
|
|
1384
1533
|
max_queue_size = max_queue_size >>> 0;
|
|
1385
1534
|
initial_thread_count = initial_thread_count >>> 0;
|
|
1386
1535
|
if (initial_thread_count === 0) {
|
|
@@ -1389,6 +1538,7 @@ function createNapiModule(options) {
|
|
|
1389
1538
|
if (!result)
|
|
1390
1539
|
return envObject.setLastError(1);
|
|
1391
1540
|
var ref = 0;
|
|
1541
|
+
func >>>= 0;
|
|
1392
1542
|
if (!func) {
|
|
1393
1543
|
if (!call_js_cb)
|
|
1394
1544
|
return envObject.setLastError(1);
|
|
@@ -1418,21 +1568,23 @@ function createNapiModule(options) {
|
|
|
1418
1568
|
}
|
|
1419
1569
|
asyncResourceName = String(asyncResourceName);
|
|
1420
1570
|
var resource_name = envObject.ensureHandleId(asyncResourceName);
|
|
1421
|
-
var sizeofTSFN = emnapiTSFN.offset.
|
|
1571
|
+
var sizeofTSFN = emnapiTSFN.offset.__size__;
|
|
1422
1572
|
var tsfn = _malloc(sizeofTSFN);
|
|
1423
1573
|
if (!tsfn)
|
|
1424
1574
|
return envObject.setLastError(9);
|
|
1425
|
-
|
|
1575
|
+
tsfn >>>= 0;
|
|
1576
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
1426
1577
|
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
|
|
1427
1578
|
var resource_ = resourceRef.id;
|
|
1428
1579
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1429
|
-
HEAP_DATA_VIEW.setUint32(tsfn, resource_, true);
|
|
1580
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
|
|
1430
1581
|
if (!emnapiTSFN.initQueue(tsfn)) {
|
|
1431
1582
|
_free(tsfn);
|
|
1432
1583
|
resourceRef.dispose();
|
|
1433
1584
|
return envObject.setLastError(9);
|
|
1434
1585
|
}
|
|
1435
1586
|
_emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
|
|
1587
|
+
HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
|
|
1436
1588
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
|
|
1437
1589
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
|
|
1438
1590
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
|
|
@@ -1442,9 +1594,11 @@ function createNapiModule(options) {
|
|
|
1442
1594
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
|
|
1443
1595
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
|
|
1444
1596
|
emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
|
|
1597
|
+
emnapiTSFN._liveSet.add(tsfn);
|
|
1445
1598
|
envObject.ref();
|
|
1446
1599
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1447
|
-
HEAP_DATA_VIEW.
|
|
1600
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
|
|
1601
|
+
result >>>= 0;
|
|
1448
1602
|
HEAP_DATA_VIEW.setUint32(result, tsfn, true);
|
|
1449
1603
|
return envObject.clearLastError();
|
|
1450
1604
|
}
|
|
@@ -1453,6 +1607,8 @@ function createNapiModule(options) {
|
|
|
1453
1607
|
abort();
|
|
1454
1608
|
return 1;
|
|
1455
1609
|
}
|
|
1610
|
+
func >>>= 0;
|
|
1611
|
+
result >>>= 0;
|
|
1456
1612
|
var context = emnapiTSFN.getContext(func);
|
|
1457
1613
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1458
1614
|
HEAP_DATA_VIEW.setUint32(result, context, true);
|
|
@@ -1463,6 +1619,8 @@ function createNapiModule(options) {
|
|
|
1463
1619
|
abort();
|
|
1464
1620
|
return 1;
|
|
1465
1621
|
}
|
|
1622
|
+
func >>>= 0;
|
|
1623
|
+
data >>>= 0;
|
|
1466
1624
|
return emnapiTSFN.push(func, data, mode);
|
|
1467
1625
|
}
|
|
1468
1626
|
function napi_acquire_threadsafe_function(func) {
|
|
@@ -1470,13 +1628,14 @@ function createNapiModule(options) {
|
|
|
1470
1628
|
abort();
|
|
1471
1629
|
return 1;
|
|
1472
1630
|
}
|
|
1631
|
+
func >>>= 0;
|
|
1473
1632
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1474
1633
|
return mutex.execute(function () {
|
|
1475
|
-
if (emnapiTSFN.
|
|
1476
|
-
|
|
1634
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1635
|
+
emnapiTSFN.addThreadCount(func);
|
|
1636
|
+
return 0;
|
|
1477
1637
|
}
|
|
1478
|
-
|
|
1479
|
-
return 0;
|
|
1638
|
+
return 16;
|
|
1480
1639
|
});
|
|
1481
1640
|
}
|
|
1482
1641
|
function napi_release_threadsafe_function(func, mode) {
|
|
@@ -1484,37 +1643,52 @@ function createNapiModule(options) {
|
|
|
1484
1643
|
abort();
|
|
1485
1644
|
return 1;
|
|
1486
1645
|
}
|
|
1646
|
+
func >>>= 0;
|
|
1487
1647
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1488
1648
|
var cond = emnapiTSFN.getCond(func);
|
|
1489
|
-
|
|
1649
|
+
var shouldDelete = false;
|
|
1650
|
+
var ret = mutex.execute(function () {
|
|
1490
1651
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1491
1652
|
return 1;
|
|
1492
1653
|
}
|
|
1493
1654
|
emnapiTSFN.subThreadCount(func);
|
|
1494
1655
|
if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
if (
|
|
1656
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1657
|
+
if (mode === 1) {
|
|
1658
|
+
emnapiTSFN.setState(func, 1);
|
|
1659
|
+
}
|
|
1660
|
+
if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1500
1661
|
cond.signal();
|
|
1501
1662
|
}
|
|
1502
1663
|
emnapiTSFN.send(func);
|
|
1503
1664
|
}
|
|
1504
1665
|
}
|
|
1666
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1667
|
+
return 0;
|
|
1668
|
+
}
|
|
1669
|
+
shouldDelete = true;
|
|
1505
1670
|
return 0;
|
|
1506
1671
|
});
|
|
1672
|
+
if (shouldDelete) {
|
|
1673
|
+
emnapiTSFN.destroy(func);
|
|
1674
|
+
}
|
|
1675
|
+
return ret;
|
|
1507
1676
|
}
|
|
1508
1677
|
function napi_unref_threadsafe_function(env, func) {
|
|
1509
1678
|
if (!func) {
|
|
1510
1679
|
abort();
|
|
1511
1680
|
return 1;
|
|
1512
1681
|
}
|
|
1513
|
-
|
|
1514
|
-
var
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1682
|
+
func >>>= 0;
|
|
1683
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1684
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1685
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1686
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1687
|
+
if (currentValue > 0) {
|
|
1688
|
+
Atomics.store(arr, asyncRefOffset, currentValue - 1);
|
|
1689
|
+
if (currentValue === 1) {
|
|
1690
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1691
|
+
}
|
|
1518
1692
|
}
|
|
1519
1693
|
return 0;
|
|
1520
1694
|
}
|
|
@@ -1523,34 +1697,66 @@ function createNapiModule(options) {
|
|
|
1523
1697
|
abort();
|
|
1524
1698
|
return 1;
|
|
1525
1699
|
}
|
|
1526
|
-
|
|
1527
|
-
var
|
|
1528
|
-
|
|
1529
|
-
|
|
1700
|
+
func >>>= 0;
|
|
1701
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1702
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1703
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1704
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1705
|
+
if (!currentValue) {
|
|
1530
1706
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1531
1707
|
}
|
|
1708
|
+
Atomics.store(arr, asyncRefOffset, currentValue + 1);
|
|
1532
1709
|
return 0;
|
|
1533
1710
|
}
|
|
1534
1711
|
var emnapiAWMT = {
|
|
1535
|
-
|
|
1536
|
-
runningWorkers: [],
|
|
1537
|
-
workQueue: [],
|
|
1712
|
+
pool: [],
|
|
1538
1713
|
workerReady: null,
|
|
1714
|
+
globalAddress: 0,
|
|
1715
|
+
globalOffset: {
|
|
1716
|
+
idle_threads: 0,
|
|
1717
|
+
q: 1 * 4,
|
|
1718
|
+
next: 1 * 4,
|
|
1719
|
+
prev: 2 * 4,
|
|
1720
|
+
mutex: 3 * 4,
|
|
1721
|
+
cond: 4 * 4,
|
|
1722
|
+
exit_message: 5 * 4,
|
|
1723
|
+
end: 7 * 4
|
|
1724
|
+
},
|
|
1539
1725
|
offset: {
|
|
1540
1726
|
resource: 0,
|
|
1541
1727
|
async_id: 8,
|
|
1542
1728
|
trigger_async_id: 16,
|
|
1543
1729
|
env: 24,
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1730
|
+
status: 1 * 4 + 24,
|
|
1731
|
+
queue: 2 * 4 + 24,
|
|
1732
|
+
queue_next: 2 * 4 + 24,
|
|
1733
|
+
queue_prev: 3 * 4 + 24,
|
|
1734
|
+
data: 4 * 4 + 24,
|
|
1735
|
+
execute: 5 * 4 + 24,
|
|
1736
|
+
complete: 6 * 4 + 24,
|
|
1737
|
+
end: 7 * 4 + 24
|
|
1738
|
+
},
|
|
1739
|
+
ensureBufferFor: function (end) {
|
|
1740
|
+
var buffer = wasmMemory.buffer;
|
|
1741
|
+
if (end > buffer.byteLength) {
|
|
1742
|
+
wasmMemory.grow(0);
|
|
1743
|
+
buffer = wasmMemory.buffer;
|
|
1744
|
+
}
|
|
1745
|
+
return buffer;
|
|
1548
1746
|
},
|
|
1549
1747
|
init: function () {
|
|
1550
|
-
emnapiAWMT.
|
|
1551
|
-
emnapiAWMT.runningWorkers = [];
|
|
1552
|
-
emnapiAWMT.workQueue = [];
|
|
1748
|
+
emnapiAWMT.pool = [];
|
|
1553
1749
|
emnapiAWMT.workerReady = null;
|
|
1750
|
+
if (typeof PThread !== 'undefined') {
|
|
1751
|
+
PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
|
|
1752
|
+
Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
|
|
1753
|
+
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
1754
|
+
PThread.getNewWorker = function () {
|
|
1755
|
+
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
1756
|
+
emnapiAWMT.addListener(r);
|
|
1757
|
+
return r;
|
|
1758
|
+
};
|
|
1759
|
+
}
|
|
1554
1760
|
},
|
|
1555
1761
|
addListener: function (worker) {
|
|
1556
1762
|
if (!worker)
|
|
@@ -1564,18 +1770,8 @@ function createNapiModule(options) {
|
|
|
1564
1770
|
var type = __emnapi__.type;
|
|
1565
1771
|
var payload = __emnapi__.payload;
|
|
1566
1772
|
if (type === 'async-work-complete') {
|
|
1567
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1568
|
-
emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
|
|
1569
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1570
|
-
emnapiAWMT.checkIdleWorker();
|
|
1571
1773
|
emnapiAWMT.callComplete(payload.work, 0);
|
|
1572
1774
|
}
|
|
1573
|
-
else if (type === 'async-work-queue') {
|
|
1574
|
-
emnapiAWMT.scheduleWork(payload.work);
|
|
1575
|
-
}
|
|
1576
|
-
else if (type === 'async-work-cancel') {
|
|
1577
|
-
emnapiAWMT.cancelWork(payload.work);
|
|
1578
|
-
}
|
|
1579
1775
|
}
|
|
1580
1776
|
};
|
|
1581
1777
|
var dispose = function () {
|
|
@@ -1596,142 +1792,233 @@ function createNapiModule(options) {
|
|
|
1596
1792
|
}
|
|
1597
1793
|
return true;
|
|
1598
1794
|
},
|
|
1795
|
+
initGlobal: function () {
|
|
1796
|
+
if (!emnapiAWMT.globalAddress) {
|
|
1797
|
+
emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
|
|
1798
|
+
emnapiAWMT.globalAddress >>>= 0;
|
|
1799
|
+
var size = emnapiAWMT.globalOffset.end;
|
|
1800
|
+
var addr = emnapiAWMT.globalAddress;
|
|
1801
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
|
|
1802
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
|
|
1803
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
|
|
1804
|
+
}
|
|
1805
|
+
},
|
|
1806
|
+
terminateWorkers: function () {
|
|
1807
|
+
emnapiAWMT.pool.forEach(function (w) {
|
|
1808
|
+
var _a, _b;
|
|
1809
|
+
(_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
1810
|
+
(_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
1811
|
+
w.terminate();
|
|
1812
|
+
});
|
|
1813
|
+
emnapiAWMT.pool.length = 0;
|
|
1814
|
+
},
|
|
1599
1815
|
initWorkers: function (n) {
|
|
1600
1816
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
1601
1817
|
return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
|
|
1602
1818
|
}
|
|
1603
1819
|
if (emnapiAWMT.workerReady)
|
|
1604
1820
|
return emnapiAWMT.workerReady;
|
|
1605
|
-
if (typeof onCreateWorker !== 'function') {
|
|
1606
|
-
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
1607
|
-
}
|
|
1608
|
-
var promises = [];
|
|
1609
|
-
var args = [];
|
|
1610
1821
|
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
1611
1822
|
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
1612
1823
|
}
|
|
1824
|
+
var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
|
|
1825
|
+
var args = [];
|
|
1826
|
+
emnapiAWMT.initGlobal();
|
|
1613
1827
|
for (var i = 0; i < n; ++i) {
|
|
1614
|
-
args.push(
|
|
1828
|
+
args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
|
|
1615
1829
|
}
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
var p = PThread.loadWasmModuleToWorker(worker);
|
|
1620
|
-
emnapiAWMT.addListener(worker);
|
|
1621
|
-
promises.push(p.then(function () {
|
|
1622
|
-
if (typeof worker.unref === 'function') {
|
|
1623
|
-
worker.unref();
|
|
1624
|
-
}
|
|
1625
|
-
}));
|
|
1626
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1627
|
-
var arg = args[i];
|
|
1628
|
-
worker.threadBlockBase = arg;
|
|
1629
|
-
worker.postMessage({
|
|
1630
|
-
__emnapi__: {
|
|
1631
|
-
type: 'async-worker-init',
|
|
1632
|
-
payload: { arg: arg }
|
|
1633
|
-
}
|
|
1634
|
-
});
|
|
1635
|
-
};
|
|
1636
|
-
for (var i = 0; i < n; ++i) {
|
|
1637
|
-
_loop_1(i);
|
|
1830
|
+
var promises = args.map(function (index) {
|
|
1831
|
+
if (index === 0) {
|
|
1832
|
+
return Promise.reject(new Error('Failed to create async worker'));
|
|
1638
1833
|
}
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1834
|
+
var worker;
|
|
1835
|
+
if (index < 0) {
|
|
1836
|
+
worker = emnapiAWMT.pool[-index - 1];
|
|
1837
|
+
if (worker)
|
|
1838
|
+
return worker.whenLoaded;
|
|
1644
1839
|
}
|
|
1645
|
-
|
|
1646
|
-
|
|
1840
|
+
index >>>= 0;
|
|
1841
|
+
var tidOffset = 20;
|
|
1842
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
|
|
1843
|
+
var tid = view.getInt32(index + tidOffset, true);
|
|
1844
|
+
worker = PThread.pthreads[tid];
|
|
1845
|
+
return worker.whenLoaded;
|
|
1846
|
+
});
|
|
1647
1847
|
emnapiAWMT.workerReady = Promise.all(promises);
|
|
1648
1848
|
return emnapiAWMT.workerReady;
|
|
1649
1849
|
},
|
|
1650
|
-
checkIdleWorker: function () {
|
|
1651
|
-
if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
|
|
1652
|
-
var worker = emnapiAWMT.unusedWorkers.shift();
|
|
1653
|
-
var work = emnapiAWMT.workQueue.shift();
|
|
1654
|
-
emnapiAWMT.runningWorkers.push(worker);
|
|
1655
|
-
worker.postMessage({
|
|
1656
|
-
__emnapi__: {
|
|
1657
|
-
type: 'async-work-execute',
|
|
1658
|
-
payload: { work: work }
|
|
1659
|
-
}
|
|
1660
|
-
});
|
|
1661
|
-
}
|
|
1662
|
-
},
|
|
1663
1850
|
getResource: function (work) {
|
|
1664
|
-
|
|
1851
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
|
|
1852
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1853
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
|
|
1665
1854
|
},
|
|
1666
1855
|
getExecute: function (work) {
|
|
1667
|
-
|
|
1856
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
|
|
1857
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1858
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
|
|
1668
1859
|
},
|
|
1669
1860
|
getComplete: function (work) {
|
|
1670
|
-
|
|
1861
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
|
|
1862
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1863
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
|
|
1671
1864
|
},
|
|
1672
1865
|
getEnv: function (work) {
|
|
1673
|
-
|
|
1866
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
|
|
1867
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1868
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
|
|
1674
1869
|
},
|
|
1675
1870
|
getData: function (work) {
|
|
1676
|
-
|
|
1871
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
|
|
1872
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1873
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
|
|
1874
|
+
},
|
|
1875
|
+
getMutex: function () {
|
|
1876
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
|
|
1877
|
+
var mutex = {
|
|
1878
|
+
lock: function () {
|
|
1879
|
+
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1880
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1881
|
+
if (isBrowserMain) {
|
|
1882
|
+
while (true) {
|
|
1883
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1884
|
+
if (oldValue === 0) {
|
|
1885
|
+
return;
|
|
1886
|
+
}
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
else {
|
|
1890
|
+
while (true) {
|
|
1891
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1892
|
+
if (oldValue === 0) {
|
|
1893
|
+
return;
|
|
1894
|
+
}
|
|
1895
|
+
Atomics.wait(i32a, 0, 10);
|
|
1896
|
+
}
|
|
1897
|
+
}
|
|
1898
|
+
},
|
|
1899
|
+
unlock: function () {
|
|
1900
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1901
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1902
|
+
if (oldValue !== 10) {
|
|
1903
|
+
throw new Error('Tried to unlock while not holding the mutex');
|
|
1904
|
+
}
|
|
1905
|
+
Atomics.notify(i32a, 0, 1);
|
|
1906
|
+
},
|
|
1907
|
+
execute: function (fn) {
|
|
1908
|
+
mutex.lock();
|
|
1909
|
+
try {
|
|
1910
|
+
return fn();
|
|
1911
|
+
}
|
|
1912
|
+
finally {
|
|
1913
|
+
mutex.unlock();
|
|
1914
|
+
}
|
|
1915
|
+
}
|
|
1916
|
+
};
|
|
1917
|
+
return mutex;
|
|
1918
|
+
},
|
|
1919
|
+
getCond: function () {
|
|
1920
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
|
|
1921
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1922
|
+
var cond = {
|
|
1923
|
+
wait: function () {
|
|
1924
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1925
|
+
var value = Atomics.load(i32a, 0);
|
|
1926
|
+
mutex.unlock();
|
|
1927
|
+
Atomics.wait(i32a, 0, value);
|
|
1928
|
+
mutex.lock();
|
|
1929
|
+
},
|
|
1930
|
+
signal: function () {
|
|
1931
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1932
|
+
Atomics.add(i32a, 0, 1);
|
|
1933
|
+
Atomics.notify(i32a, 0, 1);
|
|
1934
|
+
}
|
|
1935
|
+
};
|
|
1936
|
+
return cond;
|
|
1937
|
+
},
|
|
1938
|
+
queueInit: function (q) {
|
|
1939
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1940
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1941
|
+
HEAP_DATA_VIEW.setUint32(q, q, true);
|
|
1942
|
+
HEAP_DATA_VIEW.setUint32(q + 4, q, true);
|
|
1943
|
+
},
|
|
1944
|
+
queueInsertTail: function (h, q) {
|
|
1945
|
+
emnapiAWMT.ensureBufferFor(h + 4 + 4);
|
|
1946
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1947
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1948
|
+
HEAP_DATA_VIEW.setUint32(q, h, true);
|
|
1949
|
+
var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
|
|
1950
|
+
HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
|
|
1951
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1952
|
+
HEAP_DATA_VIEW.setUint32(qprev, q, true);
|
|
1953
|
+
HEAP_DATA_VIEW.setUint32(h + 4, q, true);
|
|
1954
|
+
},
|
|
1955
|
+
queueRemove: function (q) {
|
|
1956
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1957
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1958
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1959
|
+
var qnext = HEAP_DATA_VIEW.getUint32(q, true);
|
|
1960
|
+
HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
|
|
1961
|
+
HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
|
|
1962
|
+
},
|
|
1963
|
+
queueEmpty: function (q) {
|
|
1964
|
+
emnapiAWMT.ensureBufferFor(q + 4);
|
|
1965
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1966
|
+
return q == HEAP_DATA_VIEW.getUint32(q, true);
|
|
1677
1967
|
},
|
|
1678
1968
|
scheduleWork: function (work) {
|
|
1679
1969
|
var _a;
|
|
1680
|
-
if (
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
}
|
|
1970
|
+
if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
|
|
1971
|
+
emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
|
|
1972
|
+
emnapiAWMT.workerReady.ready = true;
|
|
1973
|
+
}).catch(function (err) {
|
|
1974
|
+
emnapiAWMT.workerReady = null;
|
|
1975
|
+
throw err;
|
|
1687
1976
|
});
|
|
1688
|
-
return;
|
|
1689
1977
|
}
|
|
1690
1978
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1691
|
-
emnapiAWMT.
|
|
1692
|
-
|
|
1693
|
-
|
|
1979
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
1980
|
+
Atomics.store(statusBuffer, 0, 0);
|
|
1981
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1982
|
+
var cond = emnapiAWMT.getCond();
|
|
1983
|
+
mutex.lock();
|
|
1984
|
+
try {
|
|
1985
|
+
emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
|
|
1694
1986
|
}
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
};
|
|
1700
|
-
try {
|
|
1701
|
-
emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
|
|
1702
|
-
emnapiAWMT.workerReady.ready = true;
|
|
1703
|
-
emnapiAWMT.checkIdleWorker();
|
|
1704
|
-
}, fail);
|
|
1705
|
-
}
|
|
1706
|
-
catch (err) {
|
|
1707
|
-
fail(err);
|
|
1708
|
-
}
|
|
1987
|
+
catch (err) {
|
|
1988
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1989
|
+
mutex.unlock();
|
|
1990
|
+
throw err;
|
|
1709
1991
|
}
|
|
1992
|
+
emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
|
|
1993
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1994
|
+
if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
|
|
1995
|
+
cond.signal();
|
|
1996
|
+
}
|
|
1997
|
+
mutex.unlock();
|
|
1710
1998
|
},
|
|
1711
1999
|
cancelWork: function (work) {
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
}
|
|
1720
|
-
|
|
2000
|
+
var cancelled = false;
|
|
2001
|
+
emnapiAWMT.getMutex().execute(function () {
|
|
2002
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
|
|
2003
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2004
|
+
cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
|
|
2005
|
+
if (cancelled) {
|
|
2006
|
+
emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
|
|
2007
|
+
}
|
|
2008
|
+
});
|
|
2009
|
+
if (!cancelled) {
|
|
2010
|
+
return 9;
|
|
1721
2011
|
}
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
emnapiAWMT.workQueue.splice(index, 1);
|
|
1725
|
-
emnapiCtx.feature.setImmediate(function () {
|
|
1726
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1727
|
-
emnapiAWMT.checkIdleWorker();
|
|
1728
|
-
emnapiAWMT.callComplete(work, 11);
|
|
1729
|
-
});
|
|
1730
|
-
return 0;
|
|
2012
|
+
if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
|
|
2013
|
+
return 9;
|
|
1731
2014
|
}
|
|
1732
|
-
|
|
2015
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
2016
|
+
emnapiAWMT.callComplete(work, 11);
|
|
2017
|
+
});
|
|
2018
|
+
return 0;
|
|
1733
2019
|
},
|
|
1734
2020
|
callComplete: function (work, status) {
|
|
2021
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1735
2022
|
var complete = emnapiAWMT.getComplete(work);
|
|
1736
2023
|
var env = emnapiAWMT.getEnv(work);
|
|
1737
2024
|
var data = emnapiAWMT.getData(work);
|
|
@@ -1749,7 +2036,7 @@ function createNapiModule(options) {
|
|
|
1749
2036
|
var resource = emnapiAWMT.getResource(work);
|
|
1750
2037
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1751
2038
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1752
|
-
var view = new DataView(
|
|
2039
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
1753
2040
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
1754
2041
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
1755
2042
|
emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
|
|
@@ -1766,6 +2053,7 @@ function createNapiModule(options) {
|
|
|
1766
2053
|
}
|
|
1767
2054
|
}
|
|
1768
2055
|
};
|
|
2056
|
+
emnapiAWMT.init();
|
|
1769
2057
|
var napi_create_async_work = singleThreadAsyncWork
|
|
1770
2058
|
? function (env, resource, resource_name, execute, complete, data, result) {
|
|
1771
2059
|
if (!env)
|
|
@@ -1787,6 +2075,7 @@ function createNapiModule(options) {
|
|
|
1787
2075
|
return envObject.setLastError(1);
|
|
1788
2076
|
var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
|
|
1789
2077
|
var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
|
|
2078
|
+
result >>>= 0;
|
|
1790
2079
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1791
2080
|
HEAP_DATA_VIEW.setUint32(result, id, true);
|
|
1792
2081
|
return envObject.clearLastError();
|
|
@@ -1813,7 +2102,8 @@ function createNapiModule(options) {
|
|
|
1813
2102
|
var aw = _malloc(sizeofAW);
|
|
1814
2103
|
if (!aw)
|
|
1815
2104
|
return envObject.setLastError(9);
|
|
1816
|
-
|
|
2105
|
+
aw >>>= 0;
|
|
2106
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
|
|
1817
2107
|
var s = envObject.ensureHandleId(resourceObject);
|
|
1818
2108
|
var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
|
|
1819
2109
|
var resource_ = resourceRef.id;
|
|
@@ -1824,6 +2114,8 @@ function createNapiModule(options) {
|
|
|
1824
2114
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
|
|
1825
2115
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
|
|
1826
2116
|
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
|
|
2117
|
+
emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
|
|
2118
|
+
result >>>= 0;
|
|
1827
2119
|
HEAP_DATA_VIEW.setUint32(result, aw, true);
|
|
1828
2120
|
return envObject.clearLastError();
|
|
1829
2121
|
};
|
|
@@ -1835,6 +2127,7 @@ function createNapiModule(options) {
|
|
|
1835
2127
|
envObject.checkGCAccess();
|
|
1836
2128
|
if (!work)
|
|
1837
2129
|
return envObject.setLastError(1);
|
|
2130
|
+
work >>>= 0;
|
|
1838
2131
|
emnapiAWST.remove(work);
|
|
1839
2132
|
return envObject.clearLastError();
|
|
1840
2133
|
}
|
|
@@ -1845,10 +2138,11 @@ function createNapiModule(options) {
|
|
|
1845
2138
|
envObject.checkGCAccess();
|
|
1846
2139
|
if (!work)
|
|
1847
2140
|
return envObject.setLastError(1);
|
|
2141
|
+
work >>>= 0;
|
|
1848
2142
|
var resource = emnapiAWMT.getResource(work);
|
|
1849
2143
|
emnapiCtx.refStore.get(resource).dispose();
|
|
1850
2144
|
if (emnapiNodeBinding) {
|
|
1851
|
-
var view = new DataView(
|
|
2145
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
1852
2146
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
1853
2147
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
1854
2148
|
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
@@ -1863,6 +2157,7 @@ function createNapiModule(options) {
|
|
|
1863
2157
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1864
2158
|
if (!work)
|
|
1865
2159
|
return envObject.setLastError(1);
|
|
2160
|
+
work >>>= 0;
|
|
1866
2161
|
emnapiAWST.queue(work);
|
|
1867
2162
|
return envObject.clearLastError();
|
|
1868
2163
|
}
|
|
@@ -1872,6 +2167,7 @@ function createNapiModule(options) {
|
|
|
1872
2167
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1873
2168
|
if (!work)
|
|
1874
2169
|
return envObject.setLastError(1);
|
|
2170
|
+
work >>>= 0;
|
|
1875
2171
|
emnapiAWMT.scheduleWork(work);
|
|
1876
2172
|
return envObject.clearLastError();
|
|
1877
2173
|
};
|
|
@@ -1882,6 +2178,7 @@ function createNapiModule(options) {
|
|
|
1882
2178
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1883
2179
|
if (!work)
|
|
1884
2180
|
return envObject.setLastError(1);
|
|
2181
|
+
work >>>= 0;
|
|
1885
2182
|
var status = emnapiAWST.cancel(work);
|
|
1886
2183
|
if (status === 0)
|
|
1887
2184
|
return envObject.clearLastError();
|
|
@@ -1893,41 +2190,125 @@ function createNapiModule(options) {
|
|
|
1893
2190
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1894
2191
|
if (!work)
|
|
1895
2192
|
return envObject.setLastError(1);
|
|
2193
|
+
work >>>= 0;
|
|
1896
2194
|
var status = emnapiAWMT.cancelWork(work);
|
|
1897
2195
|
if (status === 0)
|
|
1898
2196
|
return envObject.clearLastError();
|
|
1899
2197
|
return envObject.setLastError(status);
|
|
1900
2198
|
};
|
|
1901
|
-
function
|
|
2199
|
+
function _emnapi_async_worker(globalAddress) {
|
|
2200
|
+
globalAddress >>>= 0;
|
|
2201
|
+
emnapiAWMT.globalAddress = globalAddress;
|
|
2202
|
+
var mutex = emnapiAWMT.getMutex();
|
|
2203
|
+
var cond = emnapiAWMT.getCond();
|
|
2204
|
+
mutex.lock();
|
|
2205
|
+
var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
|
|
2206
|
+
var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
|
|
2207
|
+
var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
|
|
2208
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2209
|
+
for (;;) {
|
|
2210
|
+
emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
|
|
2211
|
+
while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
|
|
2212
|
+
Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2213
|
+
cond.wait();
|
|
2214
|
+
Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2215
|
+
}
|
|
2216
|
+
var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
|
|
2217
|
+
if (q === exitMessageAddr) {
|
|
2218
|
+
cond.signal();
|
|
2219
|
+
mutex.unlock();
|
|
2220
|
+
break;
|
|
2221
|
+
}
|
|
2222
|
+
var work = q - emnapiAWMT.offset.queue;
|
|
2223
|
+
emnapiAWMT.queueRemove(q);
|
|
2224
|
+
emnapiAWMT.queueInit(q);
|
|
2225
|
+
mutex.unlock();
|
|
2226
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
2227
|
+
if (Atomics.load(statusBuffer, 0) === 1) {
|
|
2228
|
+
abort('unreachable');
|
|
2229
|
+
}
|
|
2230
|
+
var execute = emnapiAWMT.getExecute(work);
|
|
2231
|
+
var env = emnapiAWMT.getEnv(work);
|
|
2232
|
+
var data = emnapiAWMT.getData(work);
|
|
2233
|
+
(wasmTable.get(execute))(env, data);
|
|
2234
|
+
Atomics.store(statusBuffer, 0, 2);
|
|
2235
|
+
var postMessage_1 = napiModule.postMessage;
|
|
2236
|
+
postMessage_1({
|
|
2237
|
+
__emnapi__: {
|
|
2238
|
+
type: 'async-work-complete',
|
|
2239
|
+
payload: { work: work }
|
|
2240
|
+
}
|
|
2241
|
+
});
|
|
2242
|
+
mutex.lock();
|
|
2243
|
+
}
|
|
2244
|
+
return 0;
|
|
2245
|
+
}
|
|
2246
|
+
function _emnapi_spawn_worker(f, globalAddress) {
|
|
2247
|
+
if (typeof onCreateWorker !== 'function') {
|
|
2248
|
+
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
2249
|
+
}
|
|
2250
|
+
var promises = [];
|
|
2251
|
+
var args = [];
|
|
2252
|
+
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
2253
|
+
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
2254
|
+
}
|
|
2255
|
+
args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
|
|
2256
|
+
var handleError = function (e) {
|
|
2257
|
+
if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
|
|
2258
|
+
emnapiAWMT.terminateWorkers();
|
|
2259
|
+
}
|
|
2260
|
+
};
|
|
2261
|
+
var ret;
|
|
2262
|
+
try {
|
|
2263
|
+
var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
|
|
2264
|
+
var p = PThread.loadWasmModuleToWorker(worker_1);
|
|
2265
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
2266
|
+
worker_1.on('error', handleError);
|
|
2267
|
+
}
|
|
2268
|
+
else {
|
|
2269
|
+
worker_1.addEventListener('error', handleError, false);
|
|
2270
|
+
}
|
|
2271
|
+
emnapiAWMT.addListener(worker_1);
|
|
2272
|
+
emnapiTSFN.addListener(worker_1);
|
|
2273
|
+
promises.push(p.then(function () {
|
|
2274
|
+
if (typeof worker_1.unref === 'function') {
|
|
2275
|
+
worker_1.unref();
|
|
2276
|
+
}
|
|
2277
|
+
}));
|
|
2278
|
+
ret = emnapiAWMT.pool.push(worker_1) - 1;
|
|
2279
|
+
var arg = args[0];
|
|
2280
|
+
worker_1.threadBlockBase = arg;
|
|
2281
|
+
worker_1.postMessage({
|
|
2282
|
+
__emnapi__: {
|
|
2283
|
+
type: 'async-worker-init',
|
|
2284
|
+
payload: { arg: arg, func: [f, globalAddress] }
|
|
2285
|
+
}
|
|
2286
|
+
});
|
|
2287
|
+
}
|
|
2288
|
+
catch (err) {
|
|
2289
|
+
var arg = args[0];
|
|
2290
|
+
_free(arg);
|
|
2291
|
+
throw err;
|
|
2292
|
+
}
|
|
2293
|
+
return ret;
|
|
2294
|
+
}
|
|
2295
|
+
function initWorker(startArg, func) {
|
|
1902
2296
|
if (napiModule.childThread) {
|
|
1903
2297
|
if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
|
|
1904
2298
|
throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
|
|
1905
2299
|
}
|
|
1906
2300
|
wasmInstance.exports.emnapi_async_worker_init(startArg);
|
|
2301
|
+
(wasmTable.get(func[0]))(func[1]);
|
|
1907
2302
|
}
|
|
1908
2303
|
else {
|
|
1909
2304
|
throw new Error('startThread is only available in child threads');
|
|
1910
2305
|
}
|
|
1911
2306
|
}
|
|
1912
|
-
function executeAsyncWork(work) {
|
|
1913
|
-
if (!ENVIRONMENT_IS_PTHREAD)
|
|
1914
|
-
return;
|
|
1915
|
-
var execute = emnapiAWMT.getExecute(work);
|
|
1916
|
-
var env = emnapiAWMT.getEnv(work);
|
|
1917
|
-
var data = emnapiAWMT.getData(work);
|
|
1918
|
-
(wasmTable.get(execute))(env, data);
|
|
1919
|
-
var postMessage = napiModule.postMessage;
|
|
1920
|
-
postMessage({
|
|
1921
|
-
__emnapi__: {
|
|
1922
|
-
type: 'async-work-complete',
|
|
1923
|
-
payload: { work: work }
|
|
1924
|
-
}
|
|
1925
|
-
});
|
|
1926
|
-
}
|
|
1927
2307
|
napiModule.initWorker = initWorker;
|
|
1928
|
-
napiModule.executeAsyncWork = executeAsyncWork;
|
|
1929
2308
|
var asyncWorkMod = Object.freeze({
|
|
1930
2309
|
__proto__: null,
|
|
2310
|
+
_emnapi_async_worker: _emnapi_async_worker,
|
|
2311
|
+
_emnapi_spawn_worker: _emnapi_spawn_worker,
|
|
1931
2312
|
napi_cancel_async_work: napi_cancel_async_work,
|
|
1932
2313
|
napi_create_async_work: napi_create_async_work,
|
|
1933
2314
|
napi_delete_async_work: napi_delete_async_work,
|
|
@@ -1988,6 +2369,7 @@ function createNapiModule(options) {
|
|
|
1988
2369
|
var pointer = _malloc(arrayBuffer.byteLength);
|
|
1989
2370
|
if (!pointer)
|
|
1990
2371
|
throw new Error('Out of memory');
|
|
2372
|
+
pointer >>>= 0;
|
|
1991
2373
|
new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
|
|
1992
2374
|
info.address = pointer;
|
|
1993
2375
|
info.ownership = emnapiExternalMemory.registry ? 0 : 1;
|
|
@@ -2009,8 +2391,7 @@ function createNapiModule(options) {
|
|
|
2009
2391
|
}
|
|
2010
2392
|
return view;
|
|
2011
2393
|
}
|
|
2012
|
-
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
|
|
2013
|
-
((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
|
|
2394
|
+
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
|
|
2014
2395
|
if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
|
|
2015
2396
|
var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
|
|
2016
2397
|
var Ctor = info.Ctor;
|
|
@@ -2040,6 +2421,55 @@ function createNapiModule(options) {
|
|
|
2040
2421
|
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
2041
2422
|
}
|
|
2042
2423
|
};
|
|
2424
|
+
var emnapiExternalSAB = {
|
|
2425
|
+
registry: undefined,
|
|
2426
|
+
handleTable: new WeakMap(),
|
|
2427
|
+
init: function () {
|
|
2428
|
+
emnapiExternalSAB.handleTable = new WeakMap();
|
|
2429
|
+
emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
|
|
2430
|
+
? new FinalizationRegistry(function (metaPtr) {
|
|
2431
|
+
emnapiExternalSAB.release(metaPtr);
|
|
2432
|
+
})
|
|
2433
|
+
: undefined;
|
|
2434
|
+
},
|
|
2435
|
+
allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
|
|
2436
|
+
var size = 4 * 6;
|
|
2437
|
+
var metaPtr = _malloc(size);
|
|
2438
|
+
if (!metaPtr)
|
|
2439
|
+
throw new Error('Out of memory');
|
|
2440
|
+
metaPtr >>>= 0;
|
|
2441
|
+
Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2442
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2443
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
|
|
2444
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
|
|
2445
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
|
|
2446
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
|
|
2447
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
|
|
2448
|
+
return metaPtr;
|
|
2449
|
+
},
|
|
2450
|
+
readMeta: function (metaPtr) {
|
|
2451
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2452
|
+
var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
|
|
2453
|
+
var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
|
|
2454
|
+
var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
|
|
2455
|
+
var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
|
|
2456
|
+
var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
|
|
2457
|
+
return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
|
|
2458
|
+
},
|
|
2459
|
+
release: function (metaPtr) {
|
|
2460
|
+
var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2461
|
+
if (oldRefcount === 1) {
|
|
2462
|
+
var info = emnapiExternalSAB.readMeta(metaPtr);
|
|
2463
|
+
var finalize_cb = info.finalize_cb;
|
|
2464
|
+
if (finalize_cb) {
|
|
2465
|
+
var finalize_data = info.finalize_data;
|
|
2466
|
+
var finalize_hint = info.finalize_hint;
|
|
2467
|
+
(wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
|
|
2468
|
+
}
|
|
2469
|
+
_free(metaPtr);
|
|
2470
|
+
}
|
|
2471
|
+
}
|
|
2472
|
+
};
|
|
2043
2473
|
var emnapiString = {
|
|
2044
2474
|
utf8Decoder: undefined,
|
|
2045
2475
|
utf16Decoder: undefined,
|
|
@@ -2143,7 +2573,7 @@ function createNapiModule(options) {
|
|
|
2143
2573
|
ptr >>>= 0;
|
|
2144
2574
|
var HEAPU8 = new Uint8Array(wasmMemory.buffer);
|
|
2145
2575
|
var end = ptr;
|
|
2146
|
-
if (length === -1) {
|
|
2576
|
+
if (length === -1 || length === 4294967295) {
|
|
2147
2577
|
for (; HEAPU8[end];)
|
|
2148
2578
|
++end;
|
|
2149
2579
|
}
|
|
@@ -2234,12 +2664,12 @@ function createNapiModule(options) {
|
|
|
2234
2664
|
return '';
|
|
2235
2665
|
ptr >>>= 0;
|
|
2236
2666
|
var end = ptr;
|
|
2237
|
-
if (length === -1) {
|
|
2238
|
-
var idx = end
|
|
2667
|
+
if (length === -1 || length === 4294967295) {
|
|
2668
|
+
var idx = end >>> 1;
|
|
2239
2669
|
var HEAPU16 = new Uint16Array(wasmMemory.buffer);
|
|
2240
2670
|
while (HEAPU16[idx])
|
|
2241
2671
|
++idx;
|
|
2242
|
-
end = idx << 1;
|
|
2672
|
+
end = (idx << 1) >>> 0;
|
|
2243
2673
|
}
|
|
2244
2674
|
else {
|
|
2245
2675
|
end = ptr + (length >>> 0) * 2;
|
|
@@ -2270,11 +2700,12 @@ function createNapiModule(options) {
|
|
|
2270
2700
|
return outPtr - startPtr;
|
|
2271
2701
|
},
|
|
2272
2702
|
newString: function (env, str, length, result, stringMaker) {
|
|
2703
|
+
length >>>= 0;
|
|
2273
2704
|
if (!env)
|
|
2274
2705
|
return 1;
|
|
2275
2706
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2276
2707
|
envObject.checkGCAccess();
|
|
2277
|
-
var autoLength = length === -1;
|
|
2708
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2278
2709
|
var sizelength = length >>> 0;
|
|
2279
2710
|
if (length !== 0) {
|
|
2280
2711
|
if (!str)
|
|
@@ -2284,18 +2715,21 @@ function createNapiModule(options) {
|
|
|
2284
2715
|
return envObject.setLastError(1);
|
|
2285
2716
|
if (!(autoLength || (sizelength <= 2147483647)))
|
|
2286
2717
|
return envObject.setLastError(1);
|
|
2718
|
+
str >>>= 0;
|
|
2287
2719
|
var strValue = stringMaker(str, autoLength, sizelength);
|
|
2720
|
+
result >>>= 0;
|
|
2288
2721
|
var value = emnapiCtx.addToCurrentScope(strValue).id;
|
|
2289
2722
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2290
2723
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
2291
2724
|
return envObject.clearLastError();
|
|
2292
2725
|
},
|
|
2293
2726
|
newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
|
|
2727
|
+
length >>>= 0;
|
|
2294
2728
|
if (!env)
|
|
2295
2729
|
return 1;
|
|
2296
2730
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2297
2731
|
envObject.checkGCAccess();
|
|
2298
|
-
var autoLength = length === -1;
|
|
2732
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2299
2733
|
var sizelength = length >>> 0;
|
|
2300
2734
|
if (length !== 0) {
|
|
2301
2735
|
if (!str)
|
|
@@ -2337,6 +2771,7 @@ function createNapiModule(options) {
|
|
|
2337
2771
|
if (!handle.isArray()) {
|
|
2338
2772
|
return envObject.setLastError(8);
|
|
2339
2773
|
}
|
|
2774
|
+
result >>>= 0;
|
|
2340
2775
|
var v = handle.value.length >>> 0;
|
|
2341
2776
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2342
2777
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2360,14 +2795,50 @@ function createNapiModule(options) {
|
|
|
2360
2795
|
}
|
|
2361
2796
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2362
2797
|
if (data) {
|
|
2798
|
+
data >>>= 0;
|
|
2363
2799
|
var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
|
|
2364
2800
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2365
2801
|
}
|
|
2366
2802
|
if (byte_length) {
|
|
2803
|
+
byte_length >>>= 0;
|
|
2367
2804
|
HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
|
|
2368
2805
|
}
|
|
2369
2806
|
return envObject.clearLastError();
|
|
2370
2807
|
}
|
|
2808
|
+
function node_api_set_prototype(env, object, value) {
|
|
2809
|
+
if (!env)
|
|
2810
|
+
return 1;
|
|
2811
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
2812
|
+
envObject.checkGCAccess();
|
|
2813
|
+
if (!envObject.tryCatch.isEmpty())
|
|
2814
|
+
return envObject.setLastError(10);
|
|
2815
|
+
if (!envObject.canCallIntoJs())
|
|
2816
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
2817
|
+
envObject.clearLastError();
|
|
2818
|
+
try {
|
|
2819
|
+
if (!value)
|
|
2820
|
+
return envObject.setLastError(1);
|
|
2821
|
+
var obj = emnapiCtx.handleStore.get(object).value;
|
|
2822
|
+
if (obj == null) {
|
|
2823
|
+
throw new TypeError('Cannot convert undefined or null to object');
|
|
2824
|
+
}
|
|
2825
|
+
var type = typeof obj;
|
|
2826
|
+
var v = void 0;
|
|
2827
|
+
try {
|
|
2828
|
+
v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
|
|
2829
|
+
}
|
|
2830
|
+
catch (_) {
|
|
2831
|
+
return envObject.setLastError(2);
|
|
2832
|
+
}
|
|
2833
|
+
var val = emnapiCtx.handleStore.get(value).value;
|
|
2834
|
+
Object.setPrototypeOf(v, val);
|
|
2835
|
+
return envObject.getReturnStatus();
|
|
2836
|
+
}
|
|
2837
|
+
catch (err) {
|
|
2838
|
+
envObject.tryCatch.setError(err);
|
|
2839
|
+
return envObject.setLastError(10);
|
|
2840
|
+
}
|
|
2841
|
+
}
|
|
2371
2842
|
function napi_get_prototype(env, value, result) {
|
|
2372
2843
|
if (!env)
|
|
2373
2844
|
return 1;
|
|
@@ -2394,6 +2865,7 @@ function createNapiModule(options) {
|
|
|
2394
2865
|
catch (_) {
|
|
2395
2866
|
return envObject.setLastError(2);
|
|
2396
2867
|
}
|
|
2868
|
+
result >>>= 0;
|
|
2397
2869
|
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
2398
2870
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2399
2871
|
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
@@ -2418,6 +2890,7 @@ function createNapiModule(options) {
|
|
|
2418
2890
|
var v = handle.value;
|
|
2419
2891
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2420
2892
|
if (type) {
|
|
2893
|
+
type >>>= 0;
|
|
2421
2894
|
var t = void 0;
|
|
2422
2895
|
if (v instanceof Int8Array) {
|
|
2423
2896
|
t = 0;
|
|
@@ -2440,6 +2913,9 @@ function createNapiModule(options) {
|
|
|
2440
2913
|
else if (v instanceof Uint32Array) {
|
|
2441
2914
|
t = 6;
|
|
2442
2915
|
}
|
|
2916
|
+
else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
|
|
2917
|
+
t = 11;
|
|
2918
|
+
}
|
|
2443
2919
|
else if (v instanceof Float32Array) {
|
|
2444
2920
|
t = 7;
|
|
2445
2921
|
}
|
|
@@ -2457,22 +2933,25 @@ function createNapiModule(options) {
|
|
|
2457
2933
|
}
|
|
2458
2934
|
HEAP_DATA_VIEW.setInt32(type, t, true);
|
|
2459
2935
|
}
|
|
2936
|
+
v = emnapiExternalMemory.getOrUpdateMemoryView(v);
|
|
2460
2937
|
if (length) {
|
|
2938
|
+
length >>>= 0;
|
|
2461
2939
|
HEAP_DATA_VIEW.setUint32(length, v.length, true);
|
|
2462
2940
|
}
|
|
2463
|
-
var buffer;
|
|
2464
2941
|
if (data || arraybuffer) {
|
|
2465
|
-
buffer = v.buffer;
|
|
2466
2942
|
if (data) {
|
|
2943
|
+
data >>>= 0;
|
|
2467
2944
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2468
2945
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2469
2946
|
}
|
|
2470
2947
|
if (arraybuffer) {
|
|
2471
|
-
|
|
2948
|
+
arraybuffer >>>= 0;
|
|
2949
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2472
2950
|
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2473
2951
|
}
|
|
2474
2952
|
}
|
|
2475
2953
|
if (byte_offset) {
|
|
2954
|
+
byte_offset >>>= 0;
|
|
2476
2955
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2477
2956
|
}
|
|
2478
2957
|
return envObject.clearLastError();
|
|
@@ -2503,24 +2982,26 @@ function createNapiModule(options) {
|
|
|
2503
2982
|
if (!handle.isDataView()) {
|
|
2504
2983
|
return envObject.setLastError(1);
|
|
2505
2984
|
}
|
|
2506
|
-
var v = handle.value;
|
|
2985
|
+
var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
|
|
2507
2986
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2508
2987
|
if (byte_length) {
|
|
2988
|
+
byte_length >>>= 0;
|
|
2509
2989
|
HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
|
|
2510
2990
|
}
|
|
2511
|
-
var buffer;
|
|
2512
2991
|
if (data || arraybuffer) {
|
|
2513
|
-
buffer = v.buffer;
|
|
2514
2992
|
if (data) {
|
|
2993
|
+
data >>>= 0;
|
|
2515
2994
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2516
2995
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2517
2996
|
}
|
|
2518
2997
|
if (arraybuffer) {
|
|
2519
|
-
|
|
2998
|
+
arraybuffer >>>= 0;
|
|
2999
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2520
3000
|
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2521
3001
|
}
|
|
2522
3002
|
}
|
|
2523
3003
|
if (byte_offset) {
|
|
3004
|
+
byte_offset >>>= 0;
|
|
2524
3005
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2525
3006
|
}
|
|
2526
3007
|
return envObject.clearLastError();
|
|
@@ -2545,6 +3026,7 @@ function createNapiModule(options) {
|
|
|
2545
3026
|
if (!handle.isDate()) {
|
|
2546
3027
|
return envObject.setLastError(1);
|
|
2547
3028
|
}
|
|
3029
|
+
result >>>= 0;
|
|
2548
3030
|
v = handle.value.valueOf();
|
|
2549
3031
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2550
3032
|
HEAP_DATA_VIEW.setFloat64(result, v, true);
|
|
@@ -2568,6 +3050,7 @@ function createNapiModule(options) {
|
|
|
2568
3050
|
if (typeof handle.value !== 'boolean') {
|
|
2569
3051
|
return envObject.setLastError(7);
|
|
2570
3052
|
}
|
|
3053
|
+
result >>>= 0;
|
|
2571
3054
|
var r = handle.value ? 1 : 0;
|
|
2572
3055
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2573
3056
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -2586,6 +3069,7 @@ function createNapiModule(options) {
|
|
|
2586
3069
|
if (typeof handle.value !== 'number') {
|
|
2587
3070
|
return envObject.setLastError(6);
|
|
2588
3071
|
}
|
|
3072
|
+
result >>>= 0;
|
|
2589
3073
|
var r = handle.value;
|
|
2590
3074
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2591
3075
|
HEAP_DATA_VIEW.setFloat64(result, r, true);
|
|
@@ -2610,6 +3094,8 @@ function createNapiModule(options) {
|
|
|
2610
3094
|
if (typeof numberValue !== 'bigint') {
|
|
2611
3095
|
return envObject.setLastError(6);
|
|
2612
3096
|
}
|
|
3097
|
+
lossless >>>= 0;
|
|
3098
|
+
result >>>= 0;
|
|
2613
3099
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2614
3100
|
if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
|
|
2615
3101
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2646,6 +3132,8 @@ function createNapiModule(options) {
|
|
|
2646
3132
|
if (typeof numberValue !== 'bigint') {
|
|
2647
3133
|
return envObject.setLastError(6);
|
|
2648
3134
|
}
|
|
3135
|
+
lossless >>>= 0;
|
|
3136
|
+
result >>>= 0;
|
|
2649
3137
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2650
3138
|
if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
|
|
2651
3139
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2677,8 +3165,12 @@ function createNapiModule(options) {
|
|
|
2677
3165
|
return envObject.setLastError(17);
|
|
2678
3166
|
}
|
|
2679
3167
|
var isMinus = handle.value < BigInt(0);
|
|
3168
|
+
sign_bit >>>= 0;
|
|
3169
|
+
words >>>= 0;
|
|
3170
|
+
word_count >>>= 0;
|
|
2680
3171
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2681
3172
|
var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
|
|
3173
|
+
word_count_int >>>= 0;
|
|
2682
3174
|
var wordCount = 0;
|
|
2683
3175
|
var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
|
|
2684
3176
|
while (bigintValue !== BigInt(0)) {
|
|
@@ -2726,6 +3218,7 @@ function createNapiModule(options) {
|
|
|
2726
3218
|
if (!handle.isExternal()) {
|
|
2727
3219
|
return envObject.setLastError(1);
|
|
2728
3220
|
}
|
|
3221
|
+
result >>>= 0;
|
|
2729
3222
|
var p = handle.data();
|
|
2730
3223
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2731
3224
|
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
@@ -2744,6 +3237,7 @@ function createNapiModule(options) {
|
|
|
2744
3237
|
if (typeof handle.value !== 'number') {
|
|
2745
3238
|
return envObject.setLastError(6);
|
|
2746
3239
|
}
|
|
3240
|
+
result >>>= 0;
|
|
2747
3241
|
var v = new Int32Array([handle.value])[0];
|
|
2748
3242
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2749
3243
|
HEAP_DATA_VIEW.setInt32(result, v, true);
|
|
@@ -2763,6 +3257,7 @@ function createNapiModule(options) {
|
|
|
2763
3257
|
return envObject.setLastError(6);
|
|
2764
3258
|
}
|
|
2765
3259
|
var numberValue = handle.value;
|
|
3260
|
+
result >>>= 0;
|
|
2766
3261
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2767
3262
|
if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
|
|
2768
3263
|
HEAP_DATA_VIEW.setInt32(result, 0, true);
|
|
@@ -2788,6 +3283,9 @@ function createNapiModule(options) {
|
|
|
2788
3283
|
envObject.checkGCAccess();
|
|
2789
3284
|
if (!value)
|
|
2790
3285
|
return envObject.setLastError(1);
|
|
3286
|
+
result >>>= 0;
|
|
3287
|
+
buf >>>= 0;
|
|
3288
|
+
buf_size >>>= 0;
|
|
2791
3289
|
buf_size = buf_size >>> 0;
|
|
2792
3290
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2793
3291
|
if (typeof handle.value !== 'string') {
|
|
@@ -2824,6 +3322,9 @@ function createNapiModule(options) {
|
|
|
2824
3322
|
envObject.checkGCAccess();
|
|
2825
3323
|
if (!value)
|
|
2826
3324
|
return envObject.setLastError(1);
|
|
3325
|
+
result >>>= 0;
|
|
3326
|
+
buf >>>= 0;
|
|
3327
|
+
buf_size >>>= 0;
|
|
2827
3328
|
buf_size = buf_size >>> 0;
|
|
2828
3329
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2829
3330
|
if (typeof handle.value !== 'string') {
|
|
@@ -2854,6 +3355,9 @@ function createNapiModule(options) {
|
|
|
2854
3355
|
envObject.checkGCAccess();
|
|
2855
3356
|
if (!value)
|
|
2856
3357
|
return envObject.setLastError(1);
|
|
3358
|
+
result >>>= 0;
|
|
3359
|
+
buf >>>= 0;
|
|
3360
|
+
buf_size >>>= 0;
|
|
2857
3361
|
buf_size = buf_size >>> 0;
|
|
2858
3362
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2859
3363
|
if (typeof handle.value !== 'string') {
|
|
@@ -2889,6 +3393,7 @@ function createNapiModule(options) {
|
|
|
2889
3393
|
if (typeof handle.value !== 'number') {
|
|
2890
3394
|
return envObject.setLastError(6);
|
|
2891
3395
|
}
|
|
3396
|
+
result >>>= 0;
|
|
2892
3397
|
var v = new Uint32Array([handle.value])[0];
|
|
2893
3398
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2894
3399
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2914,7 +3419,8 @@ function createNapiModule(options) {
|
|
|
2914
3419
|
napi_get_value_string_latin1: napi_get_value_string_latin1,
|
|
2915
3420
|
napi_get_value_string_utf16: napi_get_value_string_utf16,
|
|
2916
3421
|
napi_get_value_string_utf8: napi_get_value_string_utf8,
|
|
2917
|
-
napi_get_value_uint32: napi_get_value_uint32
|
|
3422
|
+
napi_get_value_uint32: napi_get_value_uint32,
|
|
3423
|
+
node_api_set_prototype: node_api_set_prototype
|
|
2918
3424
|
});
|
|
2919
3425
|
function napi_create_int32(env, value, result) {
|
|
2920
3426
|
if (!env)
|
|
@@ -2923,6 +3429,7 @@ function createNapiModule(options) {
|
|
|
2923
3429
|
envObject.checkGCAccess();
|
|
2924
3430
|
if (!result)
|
|
2925
3431
|
return envObject.setLastError(1);
|
|
3432
|
+
result >>>= 0;
|
|
2926
3433
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2927
3434
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2928
3435
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2935,6 +3442,7 @@ function createNapiModule(options) {
|
|
|
2935
3442
|
envObject.checkGCAccess();
|
|
2936
3443
|
if (!result)
|
|
2937
3444
|
return envObject.setLastError(1);
|
|
3445
|
+
result >>>= 0;
|
|
2938
3446
|
var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
|
|
2939
3447
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2940
3448
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2950,6 +3458,7 @@ function createNapiModule(options) {
|
|
|
2950
3458
|
return envObject.setLastError(1);
|
|
2951
3459
|
value = Number(low);
|
|
2952
3460
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3461
|
+
high >>>= 0;
|
|
2953
3462
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2954
3463
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
2955
3464
|
return envObject.clearLastError();
|
|
@@ -2961,6 +3470,7 @@ function createNapiModule(options) {
|
|
|
2961
3470
|
envObject.checkGCAccess();
|
|
2962
3471
|
if (!result)
|
|
2963
3472
|
return envObject.setLastError(1);
|
|
3473
|
+
result >>>= 0;
|
|
2964
3474
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2965
3475
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2966
3476
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -3031,6 +3541,7 @@ function createNapiModule(options) {
|
|
|
3031
3541
|
return envObject.setLastError(1);
|
|
3032
3542
|
value = low;
|
|
3033
3543
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3544
|
+
high >>>= 0;
|
|
3034
3545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3035
3546
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3036
3547
|
return envObject.clearLastError();
|
|
@@ -3048,6 +3559,7 @@ function createNapiModule(options) {
|
|
|
3048
3559
|
return envObject.setLastError(1);
|
|
3049
3560
|
value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
|
|
3050
3561
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3562
|
+
high >>>= 0;
|
|
3051
3563
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3052
3564
|
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3053
3565
|
return envObject.clearLastError();
|
|
@@ -3069,6 +3581,8 @@ function createNapiModule(options) {
|
|
|
3069
3581
|
}
|
|
3070
3582
|
if (!result)
|
|
3071
3583
|
return envObject.setLastError(1);
|
|
3584
|
+
words >>>= 0;
|
|
3585
|
+
word_count >>>= 0;
|
|
3072
3586
|
word_count = word_count >>> 0;
|
|
3073
3587
|
if (word_count > 2147483647) {
|
|
3074
3588
|
return envObject.setLastError(1);
|
|
@@ -3085,6 +3599,7 @@ function createNapiModule(options) {
|
|
|
3085
3599
|
value += wordi << BigInt(64 * i);
|
|
3086
3600
|
}
|
|
3087
3601
|
value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
|
|
3602
|
+
result >>>= 0;
|
|
3088
3603
|
v = emnapiCtx.addToCurrentScope(value).id;
|
|
3089
3604
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3090
3605
|
return envObject.getReturnStatus();
|
|
@@ -3113,6 +3628,7 @@ function createNapiModule(options) {
|
|
|
3113
3628
|
node_api_create_property_key_utf8: node_api_create_property_key_utf8
|
|
3114
3629
|
});
|
|
3115
3630
|
function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
|
|
3631
|
+
utf8name >>>= 0;
|
|
3116
3632
|
var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
|
|
3117
3633
|
var f;
|
|
3118
3634
|
var napiCallback = (wasmTable.get(cb));
|
|
@@ -3253,6 +3769,7 @@ function createNapiModule(options) {
|
|
|
3253
3769
|
if (!finalize_cb)
|
|
3254
3770
|
return envObject.setLastError(1);
|
|
3255
3771
|
reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
|
|
3772
|
+
result >>>= 0;
|
|
3256
3773
|
referenceId = reference.id;
|
|
3257
3774
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3258
3775
|
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
@@ -3301,6 +3818,7 @@ function createNapiModule(options) {
|
|
|
3301
3818
|
if (!ref)
|
|
3302
3819
|
return envObject.setLastError(1);
|
|
3303
3820
|
if (result) {
|
|
3821
|
+
result >>>= 0;
|
|
3304
3822
|
data = ref.data();
|
|
3305
3823
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3306
3824
|
HEAP_DATA_VIEW.setUint32(result, data, true);
|
|
@@ -3337,12 +3855,15 @@ function createNapiModule(options) {
|
|
|
3337
3855
|
return envObject.setLastError(1);
|
|
3338
3856
|
if (!constructor)
|
|
3339
3857
|
return envObject.setLastError(1);
|
|
3858
|
+
length >>>= 0;
|
|
3859
|
+
properties >>>= 0;
|
|
3860
|
+
property_count >>>= 0;
|
|
3340
3861
|
property_count = property_count >>> 0;
|
|
3341
3862
|
if (property_count > 0) {
|
|
3342
3863
|
if (!properties)
|
|
3343
3864
|
return envObject.setLastError(1);
|
|
3344
3865
|
}
|
|
3345
|
-
if ((length
|
|
3866
|
+
if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
|
|
3346
3867
|
return envObject.setLastError(1);
|
|
3347
3868
|
}
|
|
3348
3869
|
var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
|
|
@@ -3360,6 +3881,7 @@ function createNapiModule(options) {
|
|
|
3360
3881
|
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
3361
3882
|
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
3362
3883
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
3884
|
+
attributes >>>= 0;
|
|
3363
3885
|
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
3364
3886
|
if (utf8Name) {
|
|
3365
3887
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
@@ -3381,6 +3903,7 @@ function createNapiModule(options) {
|
|
|
3381
3903
|
}
|
|
3382
3904
|
var valueHandle = emnapiCtx.addToCurrentScope(F);
|
|
3383
3905
|
valueHandleId = valueHandle.id;
|
|
3906
|
+
result >>>= 0;
|
|
3384
3907
|
HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
|
|
3385
3908
|
return envObject.getReturnStatus();
|
|
3386
3909
|
}
|
|
@@ -3416,6 +3939,7 @@ function createNapiModule(options) {
|
|
|
3416
3939
|
if (!(value.isObject() || value.isFunction())) {
|
|
3417
3940
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
|
|
3418
3941
|
}
|
|
3942
|
+
type_tag >>>= 0;
|
|
3419
3943
|
if (!type_tag) {
|
|
3420
3944
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
|
|
3421
3945
|
}
|
|
@@ -3460,6 +3984,7 @@ function createNapiModule(options) {
|
|
|
3460
3984
|
}
|
|
3461
3985
|
var binding = envObject.getObjectBinding(value.value);
|
|
3462
3986
|
if (binding.tag !== null) {
|
|
3987
|
+
type_tag >>>= 0;
|
|
3463
3988
|
var tag = binding.tag;
|
|
3464
3989
|
var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
|
|
3465
3990
|
ret = (tag[0] === typeTag[0] &&
|
|
@@ -3470,6 +3995,7 @@ function createNapiModule(options) {
|
|
|
3470
3995
|
else {
|
|
3471
3996
|
ret = false;
|
|
3472
3997
|
}
|
|
3998
|
+
result >>>= 0;
|
|
3473
3999
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3474
4000
|
HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
|
|
3475
4001
|
return envObject.getReturnStatus();
|
|
@@ -3497,8 +4023,12 @@ function createNapiModule(options) {
|
|
|
3497
4023
|
}
|
|
3498
4024
|
var handle = handleResult.handle;
|
|
3499
4025
|
var ownership = !result ? 0 : 1;
|
|
4026
|
+
finalize_data >>>= 0;
|
|
4027
|
+
finalize_cb >>>= 0;
|
|
4028
|
+
finalize_hint >>>= 0;
|
|
3500
4029
|
var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
|
|
3501
4030
|
if (result) {
|
|
4031
|
+
result >>>= 0;
|
|
3502
4032
|
var referenceId = reference.id;
|
|
3503
4033
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3504
4034
|
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
@@ -3537,6 +4067,9 @@ function createNapiModule(options) {
|
|
|
3537
4067
|
try {
|
|
3538
4068
|
if (!result)
|
|
3539
4069
|
return envObject.setLastError(1);
|
|
4070
|
+
byte_length >>>= 0;
|
|
4071
|
+
external_data >>>= 0;
|
|
4072
|
+
result >>>= 0;
|
|
3540
4073
|
byte_length = byte_length >>> 0;
|
|
3541
4074
|
if (!external_data) {
|
|
3542
4075
|
byte_length = 0;
|
|
@@ -3588,6 +4121,12 @@ function createNapiModule(options) {
|
|
|
3588
4121
|
case -1:
|
|
3589
4122
|
viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 };
|
|
3590
4123
|
break;
|
|
4124
|
+
case 11:
|
|
4125
|
+
if (typeof Float16Array !== 'function') {
|
|
4126
|
+
return envObject.setLastError(1);
|
|
4127
|
+
}
|
|
4128
|
+
viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 };
|
|
4129
|
+
break;
|
|
3591
4130
|
case -2: {
|
|
3592
4131
|
if (!emnapiCtx.feature.Buffer) {
|
|
3593
4132
|
throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
|
|
@@ -3641,7 +4180,7 @@ function createNapiModule(options) {
|
|
|
3641
4180
|
var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
|
|
3642
4181
|
if (!pointer)
|
|
3643
4182
|
throw new Error('Unknown ArrayBuffer address');
|
|
3644
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4183
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3645
4184
|
len = arrayBufferOrView.byteLength - offset;
|
|
3646
4185
|
}
|
|
3647
4186
|
len = len >>> 0;
|
|
@@ -3663,7 +4202,7 @@ function createNapiModule(options) {
|
|
|
3663
4202
|
var pointer = viewPointerInfo.address;
|
|
3664
4203
|
if (!pointer)
|
|
3665
4204
|
throw new Error('Unknown ArrayBuffer address');
|
|
3666
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4205
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3667
4206
|
len = latestView.byteLength - offset;
|
|
3668
4207
|
}
|
|
3669
4208
|
len = len >>> 0;
|
|
@@ -3695,6 +4234,9 @@ function createNapiModule(options) {
|
|
|
3695
4234
|
try {
|
|
3696
4235
|
if (!arraybuffer_or_view)
|
|
3697
4236
|
return envObject.setLastError(1);
|
|
4237
|
+
arraybuffer_or_view >>>= 0;
|
|
4238
|
+
offset >>>= 0;
|
|
4239
|
+
len >>>= 0;
|
|
3698
4240
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3699
4241
|
var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
|
|
3700
4242
|
var handle = envObject.ctx.handleStore.get(handleId);
|
|
@@ -3703,6 +4245,7 @@ function createNapiModule(options) {
|
|
|
3703
4245
|
}
|
|
3704
4246
|
var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
|
|
3705
4247
|
if (handle.value !== ret) {
|
|
4248
|
+
arraybuffer_or_view >>>= 0;
|
|
3706
4249
|
v = envObject.ensureHandleId(ret);
|
|
3707
4250
|
HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
|
|
3708
4251
|
}
|
|
@@ -3756,13 +4299,16 @@ function createNapiModule(options) {
|
|
|
3756
4299
|
p = info.address;
|
|
3757
4300
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3758
4301
|
if (address) {
|
|
4302
|
+
address >>>= 0;
|
|
3759
4303
|
HEAP_DATA_VIEW.setUint32(address, p, true);
|
|
3760
4304
|
}
|
|
3761
4305
|
if (ownership) {
|
|
4306
|
+
ownership >>>= 0;
|
|
3762
4307
|
ownershipOut = info.ownership;
|
|
3763
4308
|
HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
|
|
3764
4309
|
}
|
|
3765
4310
|
if (runtime_allocated) {
|
|
4311
|
+
runtime_allocated >>>= 0;
|
|
3766
4312
|
runtimeAllocated = info.runtimeAllocated;
|
|
3767
4313
|
HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
|
|
3768
4314
|
}
|
|
@@ -3788,22 +4334,102 @@ function createNapiModule(options) {
|
|
|
3788
4334
|
}
|
|
3789
4335
|
var versions = runtimeVersion.split('.')
|
|
3790
4336
|
.map(function (n) { return Number(n); });
|
|
4337
|
+
version >>>= 0;
|
|
3791
4338
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3792
4339
|
HEAP_DATA_VIEW.setUint32(version, versions[0], true);
|
|
3793
4340
|
HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
|
|
3794
4341
|
HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
|
|
3795
4342
|
return envObject.clearLastError();
|
|
3796
4343
|
}
|
|
4344
|
+
function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
|
|
4345
|
+
if (!env)
|
|
4346
|
+
return 1;
|
|
4347
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4348
|
+
envObject.checkGCAccess();
|
|
4349
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4350
|
+
return envObject.setLastError(10);
|
|
4351
|
+
if (!envObject.canCallIntoJs())
|
|
4352
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4353
|
+
envObject.clearLastError();
|
|
4354
|
+
try {
|
|
4355
|
+
if (!sharedarraybuffer)
|
|
4356
|
+
return envObject.setLastError(1);
|
|
4357
|
+
if (!handle)
|
|
4358
|
+
return envObject.setLastError(1);
|
|
4359
|
+
handle >>>= 0;
|
|
4360
|
+
var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
|
|
4361
|
+
if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
|
|
4362
|
+
return envObject.setLastError(1);
|
|
4363
|
+
}
|
|
4364
|
+
var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
|
|
4365
|
+
if (metaPtr === undefined) {
|
|
4366
|
+
return envObject.setLastError(1);
|
|
4367
|
+
}
|
|
4368
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4369
|
+
HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
|
|
4370
|
+
return envObject.getReturnStatus();
|
|
4371
|
+
}
|
|
4372
|
+
catch (err) {
|
|
4373
|
+
envObject.tryCatch.setError(err);
|
|
4374
|
+
return envObject.setLastError(10);
|
|
4375
|
+
}
|
|
4376
|
+
}
|
|
4377
|
+
function emnapi_acquire_external_sharedarraybuffer(handle) {
|
|
4378
|
+
handle >>>= 0;
|
|
4379
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4380
|
+
}
|
|
4381
|
+
function emnapi_release_external_sharedarraybuffer(handle) {
|
|
4382
|
+
handle >>>= 0;
|
|
4383
|
+
emnapiExternalSAB.release(handle);
|
|
4384
|
+
}
|
|
4385
|
+
function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
|
|
4386
|
+
if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
|
|
4387
|
+
throw new TypeError('Expected a SharedArrayBuffer');
|
|
4388
|
+
}
|
|
4389
|
+
if (!emnapiExternalSAB.registry) {
|
|
4390
|
+
throw new Error('FinalizationRegistry is not supported in this environment');
|
|
4391
|
+
}
|
|
4392
|
+
handle >>>= 0;
|
|
4393
|
+
var meta = emnapiExternalSAB.readMeta(handle);
|
|
4394
|
+
var external_data = meta.external_data;
|
|
4395
|
+
external_data >>>= 0;
|
|
4396
|
+
if (sab == null) {
|
|
4397
|
+
sab = new SharedArrayBuffer(meta.byte_length);
|
|
4398
|
+
new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
|
|
4399
|
+
}
|
|
4400
|
+
else {
|
|
4401
|
+
if (emnapiExternalSAB.handleTable.has(sab)) {
|
|
4402
|
+
return sab;
|
|
4403
|
+
}
|
|
4404
|
+
}
|
|
4405
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4406
|
+
if (!emnapiExternalMemory.table.has(sab)) {
|
|
4407
|
+
if (external_data) {
|
|
4408
|
+
emnapiExternalMemory.table.set(sab, {
|
|
4409
|
+
address: external_data,
|
|
4410
|
+
ownership: 1,
|
|
4411
|
+
runtimeAllocated: 0
|
|
4412
|
+
});
|
|
4413
|
+
}
|
|
4414
|
+
}
|
|
4415
|
+
emnapiExternalSAB.handleTable.set(sab, handle);
|
|
4416
|
+
emnapiExternalSAB.registry.register(sab, handle);
|
|
4417
|
+
return sab;
|
|
4418
|
+
}
|
|
3797
4419
|
var emnapiMod = Object.freeze({
|
|
3798
4420
|
__proto__: null,
|
|
4421
|
+
$emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
|
|
3799
4422
|
$emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
|
|
3800
4423
|
$emnapiSyncMemory: $emnapiSyncMemory,
|
|
4424
|
+
emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
|
|
3801
4425
|
emnapi_create_memory_view: emnapi_create_memory_view,
|
|
4426
|
+
emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
|
|
3802
4427
|
emnapi_get_memory_address: emnapi_get_memory_address,
|
|
3803
4428
|
emnapi_get_runtime_version: emnapi_get_runtime_version,
|
|
3804
4429
|
emnapi_is_node_binding_available: emnapi_is_node_binding_available,
|
|
3805
4430
|
emnapi_is_support_bigint: emnapi_is_support_bigint,
|
|
3806
4431
|
emnapi_is_support_weakref: emnapi_is_support_weakref,
|
|
4432
|
+
emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
|
|
3807
4433
|
emnapi_sync_memory: emnapi_sync_memory
|
|
3808
4434
|
});
|
|
3809
4435
|
function napi_create_array(env, result) {
|
|
@@ -3813,6 +4439,7 @@ function createNapiModule(options) {
|
|
|
3813
4439
|
envObject.checkGCAccess();
|
|
3814
4440
|
if (!result)
|
|
3815
4441
|
return envObject.setLastError(1);
|
|
4442
|
+
result >>>= 0;
|
|
3816
4443
|
var value = emnapiCtx.addToCurrentScope([]).id;
|
|
3817
4444
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3818
4445
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3825,6 +4452,8 @@ function createNapiModule(options) {
|
|
|
3825
4452
|
envObject.checkGCAccess();
|
|
3826
4453
|
if (!result)
|
|
3827
4454
|
return envObject.setLastError(1);
|
|
4455
|
+
length >>>= 0;
|
|
4456
|
+
result >>>= 0;
|
|
3828
4457
|
length = length >>> 0;
|
|
3829
4458
|
var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
|
|
3830
4459
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3832,9 +4461,11 @@ function createNapiModule(options) {
|
|
|
3832
4461
|
return envObject.clearLastError();
|
|
3833
4462
|
}
|
|
3834
4463
|
function emnapiCreateArrayBuffer(byte_length, data, shared) {
|
|
4464
|
+
byte_length >>>= 0;
|
|
3835
4465
|
byte_length = byte_length >>> 0;
|
|
3836
4466
|
var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
|
|
3837
4467
|
if (data) {
|
|
4468
|
+
data >>>= 0;
|
|
3838
4469
|
var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
|
|
3839
4470
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3840
4471
|
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
@@ -3855,6 +4486,7 @@ function createNapiModule(options) {
|
|
|
3855
4486
|
try {
|
|
3856
4487
|
if (!result)
|
|
3857
4488
|
return envObject.setLastError(1);
|
|
4489
|
+
result >>>= 0;
|
|
3858
4490
|
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
|
|
3859
4491
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
3860
4492
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3880,6 +4512,7 @@ function createNapiModule(options) {
|
|
|
3880
4512
|
try {
|
|
3881
4513
|
if (!result)
|
|
3882
4514
|
return envObject.setLastError(1);
|
|
4515
|
+
result >>>= 0;
|
|
3883
4516
|
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
|
|
3884
4517
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
3885
4518
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -3905,6 +4538,7 @@ function createNapiModule(options) {
|
|
|
3905
4538
|
try {
|
|
3906
4539
|
if (!result)
|
|
3907
4540
|
return envObject.setLastError(1);
|
|
4541
|
+
result >>>= 0;
|
|
3908
4542
|
value = emnapiCtx.addToCurrentScope(new Date(time)).id;
|
|
3909
4543
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3910
4544
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3936,6 +4570,7 @@ function createNapiModule(options) {
|
|
|
3936
4570
|
if (finalize_cb) {
|
|
3937
4571
|
emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
|
|
3938
4572
|
}
|
|
4573
|
+
result >>>= 0;
|
|
3939
4574
|
value = externalHandle.id;
|
|
3940
4575
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3941
4576
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -3960,6 +4595,9 @@ function createNapiModule(options) {
|
|
|
3960
4595
|
try {
|
|
3961
4596
|
if (!result)
|
|
3962
4597
|
return envObject.setLastError(1);
|
|
4598
|
+
byte_length >>>= 0;
|
|
4599
|
+
external_data >>>= 0;
|
|
4600
|
+
result >>>= 0;
|
|
3963
4601
|
byte_length = byte_length >>> 0;
|
|
3964
4602
|
if (!external_data) {
|
|
3965
4603
|
byte_length = 0;
|
|
@@ -4010,6 +4648,60 @@ function createNapiModule(options) {
|
|
|
4010
4648
|
return envObject.setLastError(10);
|
|
4011
4649
|
}
|
|
4012
4650
|
}
|
|
4651
|
+
function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
|
|
4652
|
+
var value;
|
|
4653
|
+
if (!env)
|
|
4654
|
+
return 1;
|
|
4655
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4656
|
+
envObject.checkGCAccess();
|
|
4657
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4658
|
+
return envObject.setLastError(10);
|
|
4659
|
+
if (!envObject.canCallIntoJs())
|
|
4660
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4661
|
+
envObject.clearLastError();
|
|
4662
|
+
try {
|
|
4663
|
+
if (!result)
|
|
4664
|
+
return envObject.setLastError(1);
|
|
4665
|
+
byte_length >>>= 0;
|
|
4666
|
+
external_data >>>= 0;
|
|
4667
|
+
result >>>= 0;
|
|
4668
|
+
byte_length = byte_length >>> 0;
|
|
4669
|
+
if (!external_data) {
|
|
4670
|
+
byte_length = 0;
|
|
4671
|
+
}
|
|
4672
|
+
if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
|
|
4673
|
+
throw new RangeError('Memory out of range');
|
|
4674
|
+
}
|
|
4675
|
+
if (!emnapiExternalSAB.registry && finalize_cb) {
|
|
4676
|
+
throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
|
|
4677
|
+
}
|
|
4678
|
+
var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
|
|
4679
|
+
if (byte_length !== 0) {
|
|
4680
|
+
var u8arr = new Uint8Array(sharedArrayBuffer);
|
|
4681
|
+
u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
|
|
4682
|
+
emnapiExternalMemory.table.set(sharedArrayBuffer, {
|
|
4683
|
+
address: external_data,
|
|
4684
|
+
ownership: 1,
|
|
4685
|
+
runtimeAllocated: 0
|
|
4686
|
+
});
|
|
4687
|
+
}
|
|
4688
|
+
value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
|
|
4689
|
+
if (finalize_cb) {
|
|
4690
|
+
finalize_cb >>>= 0;
|
|
4691
|
+
finalize_hint >>>= 0;
|
|
4692
|
+
var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
|
|
4693
|
+
emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
|
|
4694
|
+
emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
|
|
4695
|
+
}
|
|
4696
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4697
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4698
|
+
return envObject.getReturnStatus();
|
|
4699
|
+
}
|
|
4700
|
+
catch (err) {
|
|
4701
|
+
envObject.tryCatch.setError(err);
|
|
4702
|
+
return envObject.setLastError(10);
|
|
4703
|
+
}
|
|
4704
|
+
}
|
|
4013
4705
|
function napi_create_object(env, result) {
|
|
4014
4706
|
if (!env)
|
|
4015
4707
|
return 1;
|
|
@@ -4017,18 +4709,20 @@ function createNapiModule(options) {
|
|
|
4017
4709
|
envObject.checkGCAccess();
|
|
4018
4710
|
if (!result)
|
|
4019
4711
|
return envObject.setLastError(1);
|
|
4712
|
+
result >>>= 0;
|
|
4020
4713
|
var value = emnapiCtx.addToCurrentScope({}).id;
|
|
4021
4714
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4022
4715
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4023
4716
|
return envObject.clearLastError();
|
|
4024
4717
|
}
|
|
4025
|
-
function
|
|
4718
|
+
function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
|
|
4026
4719
|
if (!env)
|
|
4027
4720
|
return 1;
|
|
4028
4721
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4029
4722
|
envObject.checkGCAccess();
|
|
4030
4723
|
if (!result)
|
|
4031
4724
|
return envObject.setLastError(1);
|
|
4725
|
+
property_count >>>= 0;
|
|
4032
4726
|
property_count = property_count >>> 0;
|
|
4033
4727
|
if (property_count > 0) {
|
|
4034
4728
|
if (!property_names)
|
|
@@ -4040,6 +4734,8 @@ function createNapiModule(options) {
|
|
|
4040
4734
|
? emnapiCtx.handleStore.get(prototype_or_null).value
|
|
4041
4735
|
: null;
|
|
4042
4736
|
var properties = {};
|
|
4737
|
+
property_names >>>= 0;
|
|
4738
|
+
property_values >>>= 0;
|
|
4043
4739
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4044
4740
|
for (var i = 0; i < property_count; i++) {
|
|
4045
4741
|
var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
|
|
@@ -4060,6 +4756,7 @@ function createNapiModule(options) {
|
|
|
4060
4756
|
return envObject.setLastError(9);
|
|
4061
4757
|
}
|
|
4062
4758
|
var value = emnapiCtx.addToCurrentScope(obj).id;
|
|
4759
|
+
result >>>= 0;
|
|
4063
4760
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4064
4761
|
return envObject.clearLastError();
|
|
4065
4762
|
}
|
|
@@ -4070,6 +4767,7 @@ function createNapiModule(options) {
|
|
|
4070
4767
|
envObject.checkGCAccess();
|
|
4071
4768
|
if (!result)
|
|
4072
4769
|
return envObject.setLastError(1);
|
|
4770
|
+
result >>>= 0;
|
|
4073
4771
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4074
4772
|
if (!description) {
|
|
4075
4773
|
var value = emnapiCtx.addToCurrentScope(Symbol()).id;
|
|
@@ -4103,10 +4801,9 @@ function createNapiModule(options) {
|
|
|
4103
4801
|
if (!result)
|
|
4104
4802
|
return envObject.setLastError(1);
|
|
4105
4803
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
4106
|
-
if (!handle.isArrayBuffer()) {
|
|
4107
|
-
return envObject.setLastError(1);
|
|
4108
|
-
}
|
|
4109
4804
|
var buffer = handle.value;
|
|
4805
|
+
byte_offset >>>= 0;
|
|
4806
|
+
length >>>= 0;
|
|
4110
4807
|
var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
|
|
4111
4808
|
var _a;
|
|
4112
4809
|
byte_offset = byte_offset >>> 0;
|
|
@@ -4137,36 +4834,47 @@ function createNapiModule(options) {
|
|
|
4137
4834
|
});
|
|
4138
4835
|
}
|
|
4139
4836
|
}
|
|
4837
|
+
result >>>= 0;
|
|
4140
4838
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4141
4839
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4142
4840
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4143
4841
|
return envObject.getReturnStatus();
|
|
4144
4842
|
};
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
|
|
4169
|
-
|
|
4843
|
+
if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
|
|
4844
|
+
switch (type) {
|
|
4845
|
+
case 0:
|
|
4846
|
+
return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
|
|
4847
|
+
case 1:
|
|
4848
|
+
return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
|
|
4849
|
+
case 2:
|
|
4850
|
+
return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
|
|
4851
|
+
case 3:
|
|
4852
|
+
return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
|
|
4853
|
+
case 4:
|
|
4854
|
+
return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
|
|
4855
|
+
case 5:
|
|
4856
|
+
return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
|
|
4857
|
+
case 6:
|
|
4858
|
+
return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
|
|
4859
|
+
case 7:
|
|
4860
|
+
return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
|
|
4861
|
+
case 8:
|
|
4862
|
+
return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
|
|
4863
|
+
case 9:
|
|
4864
|
+
return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
|
|
4865
|
+
case 10:
|
|
4866
|
+
return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
|
|
4867
|
+
case 11:
|
|
4868
|
+
if (typeof Float16Array !== 'function') {
|
|
4869
|
+
return envObject.setLastError(1);
|
|
4870
|
+
}
|
|
4871
|
+
return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
|
|
4872
|
+
default:
|
|
4873
|
+
return envObject.setLastError(1);
|
|
4874
|
+
}
|
|
4875
|
+
}
|
|
4876
|
+
else {
|
|
4877
|
+
return envObject.setLastError(1);
|
|
4170
4878
|
}
|
|
4171
4879
|
}
|
|
4172
4880
|
catch (err) {
|
|
@@ -4193,7 +4901,9 @@ function createNapiModule(options) {
|
|
|
4193
4901
|
if (!Buffer) {
|
|
4194
4902
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
|
|
4195
4903
|
}
|
|
4904
|
+
result >>>= 0;
|
|
4196
4905
|
var buffer = void 0;
|
|
4906
|
+
size >>>= 0;
|
|
4197
4907
|
size = size >>> 0;
|
|
4198
4908
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4199
4909
|
if (!data || (size === 0)) {
|
|
@@ -4205,6 +4915,7 @@ function createNapiModule(options) {
|
|
|
4205
4915
|
pointer = _malloc(size);
|
|
4206
4916
|
if (!pointer)
|
|
4207
4917
|
throw new Error('Out of memory');
|
|
4918
|
+
pointer >>>= 0;
|
|
4208
4919
|
new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
|
|
4209
4920
|
var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
|
|
4210
4921
|
var viewDescriptor = {
|
|
@@ -4218,6 +4929,7 @@ function createNapiModule(options) {
|
|
|
4218
4929
|
(_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
|
|
4219
4930
|
value = emnapiCtx.addToCurrentScope(buffer_1).id;
|
|
4220
4931
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4932
|
+
data >>>= 0;
|
|
4221
4933
|
HEAP_DATA_VIEW.setUint32(data, pointer, true);
|
|
4222
4934
|
}
|
|
4223
4935
|
return envObject.getReturnStatus();
|
|
@@ -4247,8 +4959,11 @@ function createNapiModule(options) {
|
|
|
4247
4959
|
}
|
|
4248
4960
|
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
|
|
4249
4961
|
var buffer = Buffer.from(arrayBuffer);
|
|
4962
|
+
data >>>= 0;
|
|
4963
|
+
length >>>= 0;
|
|
4250
4964
|
buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
|
|
4251
4965
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4966
|
+
result >>>= 0;
|
|
4252
4967
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4253
4968
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4254
4969
|
return envObject.getReturnStatus();
|
|
@@ -4277,6 +4992,8 @@ function createNapiModule(options) {
|
|
|
4277
4992
|
return envObject.setLastError(1);
|
|
4278
4993
|
if (!result)
|
|
4279
4994
|
return envObject.setLastError(1);
|
|
4995
|
+
byte_offset >>>= 0;
|
|
4996
|
+
byte_length >>>= 0;
|
|
4280
4997
|
byte_offset = byte_offset >>> 0;
|
|
4281
4998
|
byte_length = byte_length >>> 0;
|
|
4282
4999
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
@@ -4305,6 +5022,7 @@ function createNapiModule(options) {
|
|
|
4305
5022
|
});
|
|
4306
5023
|
}
|
|
4307
5024
|
}
|
|
5025
|
+
result >>>= 0;
|
|
4308
5026
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4309
5027
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4310
5028
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4330,6 +5048,8 @@ function createNapiModule(options) {
|
|
|
4330
5048
|
return envObject.setLastError(1);
|
|
4331
5049
|
if (!result)
|
|
4332
5050
|
return envObject.setLastError(1);
|
|
5051
|
+
byte_length >>>= 0;
|
|
5052
|
+
byte_offset >>>= 0;
|
|
4333
5053
|
byte_length = byte_length >>> 0;
|
|
4334
5054
|
byte_offset = byte_offset >>> 0;
|
|
4335
5055
|
var value = emnapiCtx.handleStore.get(arraybuffer).value;
|
|
@@ -4351,6 +5071,7 @@ function createNapiModule(options) {
|
|
|
4351
5071
|
});
|
|
4352
5072
|
}
|
|
4353
5073
|
}
|
|
5074
|
+
result >>>= 0;
|
|
4354
5075
|
var v = emnapiCtx.addToCurrentScope(dataview).id;
|
|
4355
5076
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4356
5077
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -4375,7 +5096,10 @@ function createNapiModule(options) {
|
|
|
4375
5096
|
envObject.checkGCAccess();
|
|
4376
5097
|
if (!result)
|
|
4377
5098
|
return envObject.setLastError(1);
|
|
4378
|
-
|
|
5099
|
+
length >>>= 0;
|
|
5100
|
+
utf8description >>>= 0;
|
|
5101
|
+
result >>>= 0;
|
|
5102
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
4379
5103
|
var sizelength = length >>> 0;
|
|
4380
5104
|
if (length !== 0) {
|
|
4381
5105
|
if (!utf8description)
|
|
@@ -4403,10 +5127,11 @@ function createNapiModule(options) {
|
|
|
4403
5127
|
napi_create_external_arraybuffer: napi_create_external_arraybuffer,
|
|
4404
5128
|
napi_create_external_buffer: napi_create_external_buffer,
|
|
4405
5129
|
napi_create_object: napi_create_object,
|
|
4406
|
-
napi_create_object_with_properties: napi_create_object_with_properties,
|
|
4407
5130
|
napi_create_symbol: napi_create_symbol,
|
|
4408
5131
|
napi_create_typedarray: napi_create_typedarray,
|
|
4409
5132
|
node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
|
|
5133
|
+
node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
|
|
5134
|
+
node_api_create_object_with_properties: node_api_create_object_with_properties,
|
|
4410
5135
|
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
4411
5136
|
node_api_symbol_for: node_api_symbol_for
|
|
4412
5137
|
});
|
|
@@ -4417,6 +5142,7 @@ function createNapiModule(options) {
|
|
|
4417
5142
|
envObject.checkGCAccess();
|
|
4418
5143
|
if (!result)
|
|
4419
5144
|
return envObject.setLastError(1);
|
|
5145
|
+
result >>>= 0;
|
|
4420
5146
|
var v = value === 0 ? 3 : 4;
|
|
4421
5147
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4422
5148
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -4429,6 +5155,7 @@ function createNapiModule(options) {
|
|
|
4429
5155
|
envObject.checkGCAccess();
|
|
4430
5156
|
if (!result)
|
|
4431
5157
|
return envObject.setLastError(1);
|
|
5158
|
+
result >>>= 0;
|
|
4432
5159
|
var value = 5;
|
|
4433
5160
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4434
5161
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4441,6 +5168,7 @@ function createNapiModule(options) {
|
|
|
4441
5168
|
envObject.checkGCAccess();
|
|
4442
5169
|
if (!result)
|
|
4443
5170
|
return envObject.setLastError(1);
|
|
5171
|
+
result >>>= 0;
|
|
4444
5172
|
var value = 2;
|
|
4445
5173
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4446
5174
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4453,6 +5181,7 @@ function createNapiModule(options) {
|
|
|
4453
5181
|
envObject.checkGCAccess();
|
|
4454
5182
|
if (!result)
|
|
4455
5183
|
return envObject.setLastError(1);
|
|
5184
|
+
result >>>= 0;
|
|
4456
5185
|
var value = 1;
|
|
4457
5186
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4458
5187
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4469,6 +5198,9 @@ function createNapiModule(options) {
|
|
|
4469
5198
|
if (!env)
|
|
4470
5199
|
return 1;
|
|
4471
5200
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5201
|
+
data >>>= 0;
|
|
5202
|
+
finalize_cb >>>= 0;
|
|
5203
|
+
finalize_hint >>>= 0;
|
|
4472
5204
|
envObject.setInstanceData(data, finalize_cb, finalize_hint);
|
|
4473
5205
|
return envObject.clearLastError();
|
|
4474
5206
|
}
|
|
@@ -4478,6 +5210,7 @@ function createNapiModule(options) {
|
|
|
4478
5210
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4479
5211
|
if (!data)
|
|
4480
5212
|
return envObject.setLastError(1);
|
|
5213
|
+
data >>>= 0;
|
|
4481
5214
|
var value = envObject.getInstanceData();
|
|
4482
5215
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4483
5216
|
HEAP_DATA_VIEW.setUint32(data, value, true);
|
|
@@ -4489,11 +5222,15 @@ function createNapiModule(options) {
|
|
|
4489
5222
|
napi_set_instance_data: napi_set_instance_data
|
|
4490
5223
|
});
|
|
4491
5224
|
function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
|
|
5225
|
+
error_code >>>= 0;
|
|
5226
|
+
engine_error_code >>>= 0;
|
|
5227
|
+
engine_reserved >>>= 0;
|
|
4492
5228
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4493
5229
|
var lastError = envObject.lastError;
|
|
4494
5230
|
var errorCode = lastError.errorCode;
|
|
4495
5231
|
var engineErrorCode = lastError.engineErrorCode >>> 0;
|
|
4496
5232
|
var engineReserved = lastError.engineReserved;
|
|
5233
|
+
engineReserved >>>= 0;
|
|
4497
5234
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4498
5235
|
HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
|
|
4499
5236
|
HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
|
|
@@ -4533,6 +5270,8 @@ function createNapiModule(options) {
|
|
|
4533
5270
|
try {
|
|
4534
5271
|
if (!msg)
|
|
4535
5272
|
return envObject.setLastError(1);
|
|
5273
|
+
code >>>= 0;
|
|
5274
|
+
msg >>>= 0;
|
|
4536
5275
|
var error = new Error(emnapiString.UTF8ToString(msg, -1));
|
|
4537
5276
|
if (code)
|
|
4538
5277
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4557,6 +5296,8 @@ function createNapiModule(options) {
|
|
|
4557
5296
|
try {
|
|
4558
5297
|
if (!msg)
|
|
4559
5298
|
return envObject.setLastError(1);
|
|
5299
|
+
code >>>= 0;
|
|
5300
|
+
msg >>>= 0;
|
|
4560
5301
|
var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
|
|
4561
5302
|
if (code)
|
|
4562
5303
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4581,6 +5322,8 @@ function createNapiModule(options) {
|
|
|
4581
5322
|
try {
|
|
4582
5323
|
if (!msg)
|
|
4583
5324
|
return envObject.setLastError(1);
|
|
5325
|
+
code >>>= 0;
|
|
5326
|
+
msg >>>= 0;
|
|
4584
5327
|
var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
|
|
4585
5328
|
if (code)
|
|
4586
5329
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4605,6 +5348,8 @@ function createNapiModule(options) {
|
|
|
4605
5348
|
try {
|
|
4606
5349
|
if (!msg)
|
|
4607
5350
|
return envObject.setLastError(1);
|
|
5351
|
+
code >>>= 0;
|
|
5352
|
+
msg >>>= 0;
|
|
4608
5353
|
var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
|
|
4609
5354
|
if (code)
|
|
4610
5355
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4624,6 +5369,7 @@ function createNapiModule(options) {
|
|
|
4624
5369
|
if (!result)
|
|
4625
5370
|
return envObject.setLastError(1);
|
|
4626
5371
|
var r = envObject.tryCatch.hasCaught();
|
|
5372
|
+
result >>>= 0;
|
|
4627
5373
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4628
5374
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
4629
5375
|
return envObject.clearLastError();
|
|
@@ -4649,6 +5395,7 @@ function createNapiModule(options) {
|
|
|
4649
5395
|
}
|
|
4650
5396
|
error.code = codeValue;
|
|
4651
5397
|
}
|
|
5398
|
+
result >>>= 0;
|
|
4652
5399
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4653
5400
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4654
5401
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4675,6 +5422,7 @@ function createNapiModule(options) {
|
|
|
4675
5422
|
}
|
|
4676
5423
|
error.code = codeValue;
|
|
4677
5424
|
}
|
|
5425
|
+
result >>>= 0;
|
|
4678
5426
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4679
5427
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4680
5428
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4701,6 +5449,7 @@ function createNapiModule(options) {
|
|
|
4701
5449
|
}
|
|
4702
5450
|
error.code = codeValue;
|
|
4703
5451
|
}
|
|
5452
|
+
result >>>= 0;
|
|
4704
5453
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4705
5454
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4706
5455
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4727,6 +5476,7 @@ function createNapiModule(options) {
|
|
|
4727
5476
|
}
|
|
4728
5477
|
error.code = codeValue;
|
|
4729
5478
|
}
|
|
5479
|
+
result >>>= 0;
|
|
4730
5480
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4731
5481
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4732
5482
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -4739,6 +5489,7 @@ function createNapiModule(options) {
|
|
|
4739
5489
|
envObject.checkGCAccess();
|
|
4740
5490
|
if (!result)
|
|
4741
5491
|
return envObject.setLastError(1);
|
|
5492
|
+
result >>>= 0;
|
|
4742
5493
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4743
5494
|
if (!envObject.tryCatch.hasCaught()) {
|
|
4744
5495
|
HEAP_DATA_VIEW.setUint32(result, 1, true);
|
|
@@ -4753,6 +5504,10 @@ function createNapiModule(options) {
|
|
|
4753
5504
|
return envObject.clearLastError();
|
|
4754
5505
|
}
|
|
4755
5506
|
function napi_fatal_error(location, location_len, message, message_len) {
|
|
5507
|
+
location >>>= 0;
|
|
5508
|
+
location_len >>>= 0;
|
|
5509
|
+
message >>>= 0;
|
|
5510
|
+
message_len >>>= 0;
|
|
4756
5511
|
var locationStr = emnapiString.UTF8ToString(location, location_len);
|
|
4757
5512
|
var messageStr = emnapiString.UTF8ToString(message, message_len);
|
|
4758
5513
|
if (emnapiNodeBinding) {
|
|
@@ -4806,8 +5561,21 @@ function createNapiModule(options) {
|
|
|
4806
5561
|
node_api_create_syntax_error: node_api_create_syntax_error,
|
|
4807
5562
|
node_api_throw_syntax_error: node_api_throw_syntax_error
|
|
4808
5563
|
});
|
|
5564
|
+
function _emnapi_create_function(env, utf8name, length, cb, data, result) {
|
|
5565
|
+
length >>>= 0;
|
|
5566
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5567
|
+
var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
|
|
5568
|
+
if (fresult.status !== 0)
|
|
5569
|
+
return envObject.setLastError(fresult.status);
|
|
5570
|
+
var f = fresult.f;
|
|
5571
|
+
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
5572
|
+
result >>>= 0;
|
|
5573
|
+
var value = valueHandle.id;
|
|
5574
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5575
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5576
|
+
return envObject.getReturnStatus();
|
|
5577
|
+
}
|
|
4809
5578
|
function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
4810
|
-
var value;
|
|
4811
5579
|
if (!env)
|
|
4812
5580
|
return 1;
|
|
4813
5581
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4822,15 +5590,7 @@ function createNapiModule(options) {
|
|
|
4822
5590
|
return envObject.setLastError(1);
|
|
4823
5591
|
if (!cb)
|
|
4824
5592
|
return envObject.setLastError(1);
|
|
4825
|
-
|
|
4826
|
-
if (fresult.status !== 0)
|
|
4827
|
-
return envObject.setLastError(fresult.status);
|
|
4828
|
-
var f = fresult.f;
|
|
4829
|
-
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
4830
|
-
value = valueHandle.id;
|
|
4831
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4832
|
-
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4833
|
-
return envObject.getReturnStatus();
|
|
5593
|
+
return _emnapi_create_function(env, utf8name, length, cb, data, result);
|
|
4834
5594
|
}
|
|
4835
5595
|
catch (err) {
|
|
4836
5596
|
envObject.tryCatch.setError(err);
|
|
@@ -4844,11 +5604,14 @@ function createNapiModule(options) {
|
|
|
4844
5604
|
if (!cbinfo)
|
|
4845
5605
|
return envObject.setLastError(1);
|
|
4846
5606
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
5607
|
+
argc >>>= 0;
|
|
5608
|
+
argv >>>= 0;
|
|
4847
5609
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4848
5610
|
if (argv) {
|
|
4849
5611
|
if (!argc)
|
|
4850
5612
|
return envObject.setLastError(1);
|
|
4851
5613
|
var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
|
|
5614
|
+
argcValue >>>= 0;
|
|
4852
5615
|
var len = cbinfoValue.args.length;
|
|
4853
5616
|
var arrlen = argcValue < len ? argcValue : len;
|
|
4854
5617
|
var i = 0;
|
|
@@ -4866,10 +5629,12 @@ function createNapiModule(options) {
|
|
|
4866
5629
|
HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
|
|
4867
5630
|
}
|
|
4868
5631
|
if (this_arg) {
|
|
5632
|
+
this_arg >>>= 0;
|
|
4869
5633
|
var v = envObject.ensureHandleId(cbinfoValue.thiz);
|
|
4870
5634
|
HEAP_DATA_VIEW.setUint32(this_arg, v, true);
|
|
4871
5635
|
}
|
|
4872
5636
|
if (data) {
|
|
5637
|
+
data >>>= 0;
|
|
4873
5638
|
HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
|
|
4874
5639
|
}
|
|
4875
5640
|
return envObject.clearLastError();
|
|
@@ -4889,6 +5654,9 @@ function createNapiModule(options) {
|
|
|
4889
5654
|
try {
|
|
4890
5655
|
if (!recv)
|
|
4891
5656
|
return envObject.setLastError(1);
|
|
5657
|
+
argc >>>= 0;
|
|
5658
|
+
argv >>>= 0;
|
|
5659
|
+
result >>>= 0;
|
|
4892
5660
|
argc = argc >>> 0;
|
|
4893
5661
|
if (argc > 0) {
|
|
4894
5662
|
if (!argv)
|
|
@@ -4933,6 +5701,9 @@ function createNapiModule(options) {
|
|
|
4933
5701
|
try {
|
|
4934
5702
|
if (!constructor)
|
|
4935
5703
|
return envObject.setLastError(1);
|
|
5704
|
+
argc >>>= 0;
|
|
5705
|
+
argv >>>= 0;
|
|
5706
|
+
result >>>= 0;
|
|
4936
5707
|
argc = argc >>> 0;
|
|
4937
5708
|
if (argc > 0) {
|
|
4938
5709
|
if (!argv)
|
|
@@ -4983,6 +5754,7 @@ function createNapiModule(options) {
|
|
|
4983
5754
|
return envObject.setLastError(1);
|
|
4984
5755
|
if (!result)
|
|
4985
5756
|
return envObject.setLastError(1);
|
|
5757
|
+
result >>>= 0;
|
|
4986
5758
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
4987
5759
|
var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
|
|
4988
5760
|
var value = thiz == null || thiz.constructor == null
|
|
@@ -4996,6 +5768,7 @@ function createNapiModule(options) {
|
|
|
4996
5768
|
}
|
|
4997
5769
|
var functionMod = Object.freeze({
|
|
4998
5770
|
__proto__: null,
|
|
5771
|
+
_emnapi_create_function: _emnapi_create_function,
|
|
4999
5772
|
napi_call_function: napi_call_function,
|
|
5000
5773
|
napi_create_function: napi_create_function,
|
|
5001
5774
|
napi_get_cb_info: napi_get_cb_info,
|
|
@@ -5010,6 +5783,7 @@ function createNapiModule(options) {
|
|
|
5010
5783
|
if (!result)
|
|
5011
5784
|
return envObject.setLastError(1);
|
|
5012
5785
|
var scope = emnapiCtx.openScope(envObject);
|
|
5786
|
+
result >>>= 0;
|
|
5013
5787
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5014
5788
|
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
5015
5789
|
return envObject.clearLastError();
|
|
@@ -5035,6 +5809,7 @@ function createNapiModule(options) {
|
|
|
5035
5809
|
if (!result)
|
|
5036
5810
|
return envObject.setLastError(1);
|
|
5037
5811
|
var scope = emnapiCtx.openScope(envObject);
|
|
5812
|
+
result >>>= 0;
|
|
5038
5813
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5039
5814
|
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
5040
5815
|
return envObject.clearLastError();
|
|
@@ -5065,6 +5840,8 @@ function createNapiModule(options) {
|
|
|
5065
5840
|
return envObject.setLastError(1);
|
|
5066
5841
|
var scopeObject = emnapiCtx.scopeStore.get(scope);
|
|
5067
5842
|
if (!scopeObject.escapeCalled()) {
|
|
5843
|
+
escapee >>>= 0;
|
|
5844
|
+
result >>>= 0;
|
|
5068
5845
|
var newHandle = scopeObject.escape(escapee);
|
|
5069
5846
|
var value = newHandle ? newHandle.id : 0;
|
|
5070
5847
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -5089,6 +5866,7 @@ function createNapiModule(options) {
|
|
|
5089
5866
|
}
|
|
5090
5867
|
}
|
|
5091
5868
|
var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
|
|
5869
|
+
result >>>= 0;
|
|
5092
5870
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5093
5871
|
HEAP_DATA_VIEW.setUint32(result, ref.id, true);
|
|
5094
5872
|
return envObject.clearLastError();
|
|
@@ -5111,6 +5889,7 @@ function createNapiModule(options) {
|
|
|
5111
5889
|
return envObject.setLastError(1);
|
|
5112
5890
|
var count = emnapiCtx.refStore.get(ref).ref();
|
|
5113
5891
|
if (result) {
|
|
5892
|
+
result >>>= 0;
|
|
5114
5893
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5115
5894
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5116
5895
|
}
|
|
@@ -5130,6 +5909,7 @@ function createNapiModule(options) {
|
|
|
5130
5909
|
}
|
|
5131
5910
|
var count = reference.unref();
|
|
5132
5911
|
if (result) {
|
|
5912
|
+
result >>>= 0;
|
|
5133
5913
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5134
5914
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5135
5915
|
}
|
|
@@ -5146,6 +5926,7 @@ function createNapiModule(options) {
|
|
|
5146
5926
|
return envObject.setLastError(1);
|
|
5147
5927
|
var reference = emnapiCtx.refStore.get(ref);
|
|
5148
5928
|
var handleId = reference.get(envObject);
|
|
5929
|
+
result >>>= 0;
|
|
5149
5930
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5150
5931
|
HEAP_DATA_VIEW.setUint32(result, handleId, true);
|
|
5151
5932
|
return envObject.clearLastError();
|
|
@@ -5156,6 +5937,8 @@ function createNapiModule(options) {
|
|
|
5156
5937
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5157
5938
|
if (!fun)
|
|
5158
5939
|
return envObject.setLastError(1);
|
|
5940
|
+
fun >>>= 0;
|
|
5941
|
+
arg >>>= 0;
|
|
5159
5942
|
emnapiCtx.addCleanupHook(envObject, fun, arg);
|
|
5160
5943
|
return 0;
|
|
5161
5944
|
}
|
|
@@ -5165,6 +5948,8 @@ function createNapiModule(options) {
|
|
|
5165
5948
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5166
5949
|
if (!fun)
|
|
5167
5950
|
return envObject.setLastError(1);
|
|
5951
|
+
fun >>>= 0;
|
|
5952
|
+
arg >>>= 0;
|
|
5168
5953
|
emnapiCtx.removeCleanupHook(envObject, fun, arg);
|
|
5169
5954
|
return 0;
|
|
5170
5955
|
}
|
|
@@ -5225,8 +6010,10 @@ function createNapiModule(options) {
|
|
|
5225
6010
|
var p = new Promise(function (resolve, reject) {
|
|
5226
6011
|
var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
|
|
5227
6012
|
deferredObjectId = deferredObject.id;
|
|
6013
|
+
deferred >>>= 0;
|
|
5228
6014
|
HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
|
|
5229
6015
|
});
|
|
6016
|
+
promise >>>= 0;
|
|
5230
6017
|
value = emnapiCtx.addToCurrentScope(p).id;
|
|
5231
6018
|
HEAP_DATA_VIEW.setUint32(promise, value, true);
|
|
5232
6019
|
return envObject.getReturnStatus();
|
|
@@ -5294,6 +6081,7 @@ function createNapiModule(options) {
|
|
|
5294
6081
|
if (!is_promise)
|
|
5295
6082
|
return envObject.setLastError(1);
|
|
5296
6083
|
var h = emnapiCtx.handleStore.get(value);
|
|
6084
|
+
is_promise >>>= 0;
|
|
5297
6085
|
var r = h.isPromise() ? 1 : 0;
|
|
5298
6086
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5299
6087
|
HEAP_DATA_VIEW.setInt8(is_promise, r, true);
|
|
@@ -5437,6 +6225,7 @@ function createNapiModule(options) {
|
|
|
5437
6225
|
}
|
|
5438
6226
|
}
|
|
5439
6227
|
}
|
|
6228
|
+
result >>>= 0;
|
|
5440
6229
|
value = emnapiCtx.addToCurrentScope(ret).id;
|
|
5441
6230
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5442
6231
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5508,6 +6297,7 @@ function createNapiModule(options) {
|
|
|
5508
6297
|
catch (_) {
|
|
5509
6298
|
return envObject.setLastError(2);
|
|
5510
6299
|
}
|
|
6300
|
+
result >>>= 0;
|
|
5511
6301
|
r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
|
|
5512
6302
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5513
6303
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5547,6 +6337,7 @@ function createNapiModule(options) {
|
|
|
5547
6337
|
catch (_) {
|
|
5548
6338
|
return envObject.setLastError(2);
|
|
5549
6339
|
}
|
|
6340
|
+
result >>>= 0;
|
|
5550
6341
|
value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
|
|
5551
6342
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5552
6343
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5590,6 +6381,7 @@ function createNapiModule(options) {
|
|
|
5590
6381
|
}
|
|
5591
6382
|
}
|
|
5592
6383
|
if (result) {
|
|
6384
|
+
result >>>= 0;
|
|
5593
6385
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5594
6386
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5595
6387
|
}
|
|
@@ -5634,6 +6426,7 @@ function createNapiModule(options) {
|
|
|
5634
6426
|
return envObject.setLastError(4);
|
|
5635
6427
|
}
|
|
5636
6428
|
r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
|
|
6429
|
+
result >>>= 0;
|
|
5637
6430
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5638
6431
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5639
6432
|
return envObject.getReturnStatus();
|
|
@@ -5665,6 +6458,7 @@ function createNapiModule(options) {
|
|
|
5665
6458
|
if (!cname) {
|
|
5666
6459
|
return envObject.setLastError(1);
|
|
5667
6460
|
}
|
|
6461
|
+
cname >>>= 0;
|
|
5668
6462
|
emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
|
|
5669
6463
|
return envObject.getReturnStatus();
|
|
5670
6464
|
}
|
|
@@ -5703,6 +6497,8 @@ function createNapiModule(options) {
|
|
|
5703
6497
|
catch (_) {
|
|
5704
6498
|
return envObject.setLastError(2);
|
|
5705
6499
|
}
|
|
6500
|
+
utf8name >>>= 0;
|
|
6501
|
+
result >>>= 0;
|
|
5706
6502
|
r = emnapiString.UTF8ToString(utf8name, -1) in v;
|
|
5707
6503
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5708
6504
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
@@ -5743,6 +6539,8 @@ function createNapiModule(options) {
|
|
|
5743
6539
|
catch (_) {
|
|
5744
6540
|
return envObject.setLastError(2);
|
|
5745
6541
|
}
|
|
6542
|
+
utf8name >>>= 0;
|
|
6543
|
+
result >>>= 0;
|
|
5746
6544
|
value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
|
|
5747
6545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5748
6546
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5807,6 +6605,7 @@ function createNapiModule(options) {
|
|
|
5807
6605
|
catch (_) {
|
|
5808
6606
|
return envObject.setLastError(2);
|
|
5809
6607
|
}
|
|
6608
|
+
result >>>= 0;
|
|
5810
6609
|
r = ((index >>> 0) in v) ? 1 : 0;
|
|
5811
6610
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5812
6611
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5844,6 +6643,7 @@ function createNapiModule(options) {
|
|
|
5844
6643
|
catch (_) {
|
|
5845
6644
|
return envObject.setLastError(2);
|
|
5846
6645
|
}
|
|
6646
|
+
result >>>= 0;
|
|
5847
6647
|
value = envObject.ensureHandleId(v[index >>> 0]);
|
|
5848
6648
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5849
6649
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -5884,6 +6684,7 @@ function createNapiModule(options) {
|
|
|
5884
6684
|
}
|
|
5885
6685
|
}
|
|
5886
6686
|
if (result) {
|
|
6687
|
+
result >>>= 0;
|
|
5887
6688
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5888
6689
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5889
6690
|
}
|
|
@@ -5906,6 +6707,8 @@ function createNapiModule(options) {
|
|
|
5906
6707
|
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
5907
6708
|
envObject.clearLastError();
|
|
5908
6709
|
try {
|
|
6710
|
+
properties >>>= 0;
|
|
6711
|
+
property_count >>>= 0;
|
|
5909
6712
|
property_count = property_count >>> 0;
|
|
5910
6713
|
if (property_count > 0) {
|
|
5911
6714
|
if (!properties)
|
|
@@ -5929,6 +6732,7 @@ function createNapiModule(options) {
|
|
|
5929
6732
|
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
5930
6733
|
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
5931
6734
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
6735
|
+
attributes >>>= 0;
|
|
5932
6736
|
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
5933
6737
|
if (utf8Name) {
|
|
5934
6738
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
@@ -6046,6 +6850,7 @@ function createNapiModule(options) {
|
|
|
6046
6850
|
}
|
|
6047
6851
|
var g = emnapiCtx.handleStore.get(5).value;
|
|
6048
6852
|
var ret = g.eval(v8Script.value);
|
|
6853
|
+
result >>>= 0;
|
|
6049
6854
|
value = envObject.ensureHandleId(ret);
|
|
6050
6855
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6051
6856
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
@@ -6071,6 +6876,7 @@ function createNapiModule(options) {
|
|
|
6071
6876
|
if (!result)
|
|
6072
6877
|
return envObject.setLastError(1);
|
|
6073
6878
|
var v = emnapiCtx.handleStore.get(value);
|
|
6879
|
+
result >>>= 0;
|
|
6074
6880
|
var r;
|
|
6075
6881
|
if (v.isNumber()) {
|
|
6076
6882
|
r = 3;
|
|
@@ -6126,6 +6932,7 @@ function createNapiModule(options) {
|
|
|
6126
6932
|
if (!result)
|
|
6127
6933
|
return envObject.setLastError(1);
|
|
6128
6934
|
var handle = emnapiCtx.handleStore.get(value);
|
|
6935
|
+
result >>>= 0;
|
|
6129
6936
|
v = handle.value ? 4 : 3;
|
|
6130
6937
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6131
6938
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6156,6 +6963,7 @@ function createNapiModule(options) {
|
|
|
6156
6963
|
if (handle.isBigInt()) {
|
|
6157
6964
|
throw new TypeError('Cannot convert a BigInt value to a number');
|
|
6158
6965
|
}
|
|
6966
|
+
result >>>= 0;
|
|
6159
6967
|
v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
|
|
6160
6968
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6161
6969
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6186,6 +6994,7 @@ function createNapiModule(options) {
|
|
|
6186
6994
|
if (handle.value == null) {
|
|
6187
6995
|
throw new TypeError('Cannot convert undefined or null to object');
|
|
6188
6996
|
}
|
|
6997
|
+
result >>>= 0;
|
|
6189
6998
|
v = envObject.ensureHandleId(Object(handle.value));
|
|
6190
6999
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6191
7000
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6216,6 +7025,7 @@ function createNapiModule(options) {
|
|
|
6216
7025
|
if (handle.isSymbol()) {
|
|
6217
7026
|
throw new TypeError('Cannot convert a Symbol value to a string');
|
|
6218
7027
|
}
|
|
7028
|
+
result >>>= 0;
|
|
6219
7029
|
v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
|
|
6220
7030
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6221
7031
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -6244,6 +7054,7 @@ function createNapiModule(options) {
|
|
|
6244
7054
|
return envObject.setLastError(1);
|
|
6245
7055
|
if (!constructor)
|
|
6246
7056
|
return envObject.setLastError(1);
|
|
7057
|
+
result >>>= 0;
|
|
6247
7058
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6248
7059
|
HEAP_DATA_VIEW.setInt8(result, 0, true);
|
|
6249
7060
|
var ctor = emnapiCtx.handleStore.get(constructor);
|
|
@@ -6271,6 +7082,7 @@ function createNapiModule(options) {
|
|
|
6271
7082
|
if (!result)
|
|
6272
7083
|
return envObject.setLastError(1);
|
|
6273
7084
|
var h = emnapiCtx.handleStore.get(value);
|
|
7085
|
+
result >>>= 0;
|
|
6274
7086
|
var r = h.isArray() ? 1 : 0;
|
|
6275
7087
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6276
7088
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6286,6 +7098,7 @@ function createNapiModule(options) {
|
|
|
6286
7098
|
if (!result)
|
|
6287
7099
|
return envObject.setLastError(1);
|
|
6288
7100
|
var h = emnapiCtx.handleStore.get(value);
|
|
7101
|
+
result >>>= 0;
|
|
6289
7102
|
var r = h.isArrayBuffer() ? 1 : 0;
|
|
6290
7103
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6291
7104
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6301,6 +7114,7 @@ function createNapiModule(options) {
|
|
|
6301
7114
|
if (!result)
|
|
6302
7115
|
return envObject.setLastError(1);
|
|
6303
7116
|
var h = emnapiCtx.handleStore.get(value);
|
|
7117
|
+
result >>>= 0;
|
|
6304
7118
|
var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
|
|
6305
7119
|
(Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
|
|
6306
7120
|
? 1
|
|
@@ -6319,6 +7133,7 @@ function createNapiModule(options) {
|
|
|
6319
7133
|
if (!result)
|
|
6320
7134
|
return envObject.setLastError(1);
|
|
6321
7135
|
var h = emnapiCtx.handleStore.get(value);
|
|
7136
|
+
result >>>= 0;
|
|
6322
7137
|
var r = h.isDate() ? 1 : 0;
|
|
6323
7138
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6324
7139
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6334,6 +7149,7 @@ function createNapiModule(options) {
|
|
|
6334
7149
|
if (!result)
|
|
6335
7150
|
return envObject.setLastError(1);
|
|
6336
7151
|
var val = emnapiCtx.handleStore.get(value).value;
|
|
7152
|
+
result >>>= 0;
|
|
6337
7153
|
var r = (val instanceof Error) ? 1 : 0;
|
|
6338
7154
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6339
7155
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6349,6 +7165,7 @@ function createNapiModule(options) {
|
|
|
6349
7165
|
if (!result)
|
|
6350
7166
|
return envObject.setLastError(1);
|
|
6351
7167
|
var h = emnapiCtx.handleStore.get(value);
|
|
7168
|
+
result >>>= 0;
|
|
6352
7169
|
var r = h.isTypedArray() ? 1 : 0;
|
|
6353
7170
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6354
7171
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6364,6 +7181,7 @@ function createNapiModule(options) {
|
|
|
6364
7181
|
if (!result)
|
|
6365
7182
|
return envObject.setLastError(1);
|
|
6366
7183
|
var h = emnapiCtx.handleStore.get(value);
|
|
7184
|
+
result >>>= 0;
|
|
6367
7185
|
var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
|
|
6368
7186
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6369
7187
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6379,6 +7197,7 @@ function createNapiModule(options) {
|
|
|
6379
7197
|
if (!result)
|
|
6380
7198
|
return envObject.setLastError(1);
|
|
6381
7199
|
var h = emnapiCtx.handleStore.get(value);
|
|
7200
|
+
result >>>= 0;
|
|
6382
7201
|
var r = h.isDataView() ? 1 : 0;
|
|
6383
7202
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6384
7203
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6404,6 +7223,7 @@ function createNapiModule(options) {
|
|
|
6404
7223
|
return envObject.setLastError(1);
|
|
6405
7224
|
var lv = emnapiCtx.handleStore.get(lhs).value;
|
|
6406
7225
|
var rv = emnapiCtx.handleStore.get(rhs).value;
|
|
7226
|
+
result >>>= 0;
|
|
6407
7227
|
r = (lv === rv) ? 1 : 0;
|
|
6408
7228
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6409
7229
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6454,6 +7274,7 @@ function createNapiModule(options) {
|
|
|
6454
7274
|
if (!result)
|
|
6455
7275
|
return envObject.setLastError(1);
|
|
6456
7276
|
var h = emnapiCtx.handleStore.get(arraybuffer);
|
|
7277
|
+
result >>>= 0;
|
|
6457
7278
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6458
7279
|
if (h.isArrayBuffer() && h.value.byteLength === 0) {
|
|
6459
7280
|
try {
|
|
@@ -6509,11 +7330,13 @@ function createNapiModule(options) {
|
|
|
6509
7330
|
});
|
|
6510
7331
|
emnapiAWST.init();
|
|
6511
7332
|
emnapiExternalMemory.init();
|
|
7333
|
+
emnapiExternalSAB.init();
|
|
6512
7334
|
emnapiString.init();
|
|
6513
7335
|
emnapiTSFN.init();
|
|
6514
7336
|
PThread.init();
|
|
6515
7337
|
napiModule.emnapi.syncMemory = $emnapiSyncMemory;
|
|
6516
7338
|
napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
|
|
7339
|
+
napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
|
|
6517
7340
|
function addImports(mod) {
|
|
6518
7341
|
var keys = Object.keys(mod);
|
|
6519
7342
|
for (var i = 0; i < keys.length; ++i) {
|
|
@@ -6641,9 +7464,9 @@ function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) {
|
|
|
6641
7464
|
}
|
|
6642
7465
|
const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table;
|
|
6643
7466
|
if (wasi && !exportMemory) {
|
|
6644
|
-
const exports
|
|
6645
|
-
Object.assign(exports
|
|
6646
|
-
instance = { exports
|
|
7467
|
+
const exports = Object.create(null);
|
|
7468
|
+
Object.assign(exports, originalExports, { memory });
|
|
7469
|
+
instance = { exports };
|
|
6647
7470
|
}
|
|
6648
7471
|
const module = source.module;
|
|
6649
7472
|
if (wasi) {
|
|
@@ -6768,12 +7591,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6768
7591
|
try {
|
|
6769
7592
|
if (type === 'async-worker-init') {
|
|
6770
7593
|
this.handleAfterLoad(e, () => {
|
|
6771
|
-
this.napiModule.initWorker(payload.arg);
|
|
6772
|
-
});
|
|
6773
|
-
}
|
|
6774
|
-
else if (type === 'async-work-execute') {
|
|
6775
|
-
this.handleAfterLoad(e, () => {
|
|
6776
|
-
this.napiModule.executeAsyncWork(payload.work);
|
|
7594
|
+
this.napiModule.initWorker(payload.arg, payload.func);
|
|
6777
7595
|
});
|
|
6778
7596
|
}
|
|
6779
7597
|
}
|
|
@@ -6784,7 +7602,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6784
7602
|
}
|
|
6785
7603
|
}
|
|
6786
7604
|
|
|
6787
|
-
const version = "1.
|
|
7605
|
+
const version = "1.11.1";
|
|
6788
7606
|
|
|
6789
7607
|
exports.MessageHandler = MessageHandler;
|
|
6790
7608
|
exports.createNapiModule = createNapiModule;
|