@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.ef2e6c7 → 0.0.0-insiders.ef79119
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 +1469 -511
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +61 -5
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +61 -5
- package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +61 -5
- package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1628 -523
- package/node_modules/@emnapi/core/dist/emnapi-core.js +1705 -585
- package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +61 -5
- 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 +1469 -511
- package/node_modules/@emnapi/core/package.json +2 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +44 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts +15 -7
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.d.mts +15 -7
- package/node_modules/@emnapi/runtime/dist/emnapi.d.ts +15 -7
- package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +45 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts +12 -6
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +45 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.js +45 -14
- package/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts +15 -7
- 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 +44 -14
- package/node_modules/@emnapi/runtime/package.json +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +67 -63
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +59 -2
- 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 +59 -2
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +59 -2
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +67 -63
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +67 -63
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +59 -2
- 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 +67 -63
- package/node_modules/@emnapi/wasi-threads/package.json +1 -1
- package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +299 -0
- package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +22284 -20904
- package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +294 -0
- package/node_modules/@napi-rs/wasm-runtime/package.json +25 -16
- package/node_modules/@napi-rs/wasm-runtime/runtime.cjs +1 -1
- package/node_modules/@napi-rs/wasm-runtime/runtime.js +8 -0
- package/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts +6 -0
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js +215 -33
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +215 -33
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
- package/node_modules/@tybys/wasm-util/dist/wasm-util.js +215 -33
- package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js +12 -14
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +61 -19
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs +12 -14
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +61 -19
- package/node_modules/@tybys/wasm-util/package.json +1 -1
- package/node_modules/tslib/package.json +1 -1
- package/node_modules/tslib/tslib.es6.js +10 -1
- package/node_modules/tslib/tslib.es6.mjs +10 -1
- package/node_modules/tslib/tslib.js +42 -33
- package/package.json +7 -7
- package/tailwindcss-oxide.wasi-browser.js +7 -3
- package/tailwindcss-oxide.wasi.cjs +27 -4
- package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
- package/wasi-worker-browser.mjs +2 -0
- package/node_modules/@napi-rs/wasm-runtime/LICENSE +0 -43
- package/node_modules/@napi-rs/wasm-runtime/dist/runtime.js +0 -12285
- package/node_modules/@napi-rs/wasm-runtime/fs-proxy.cjs +0 -209
|
@@ -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) {
|
|
@@ -155,6 +154,11 @@ function createNapiModule(options) {
|
|
|
155
154
|
napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
|
|
156
155
|
});
|
|
157
156
|
}
|
|
157
|
+
catch (e) {
|
|
158
|
+
if (e !== 'unwind') {
|
|
159
|
+
throw e;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
158
162
|
finally {
|
|
159
163
|
emnapiCtx.closeScope(envObject, scope_1);
|
|
160
164
|
}
|
|
@@ -291,6 +295,9 @@ function createNapiModule(options) {
|
|
|
291
295
|
return envObject.clearLastError();
|
|
292
296
|
}
|
|
293
297
|
function _emnapi_get_node_version(major, minor, patch) {
|
|
298
|
+
major >>>= 0;
|
|
299
|
+
minor >>>= 0;
|
|
300
|
+
patch >>>= 0;
|
|
294
301
|
var versions = (typeof process === 'object' && process !== null &&
|
|
295
302
|
typeof process.versions === 'object' && process.versions !== null &&
|
|
296
303
|
typeof process.versions.node === 'string')
|
|
@@ -334,6 +341,7 @@ function createNapiModule(options) {
|
|
|
334
341
|
}
|
|
335
342
|
function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) {
|
|
336
343
|
var envObject = emnapiCtx.envStore.get(env);
|
|
344
|
+
callback >>>= 0;
|
|
337
345
|
envObject.callFinalizerInternal(forceUncaught, callback, data, hint);
|
|
338
346
|
}
|
|
339
347
|
function _emnapi_ctx_increase_waiting_request_counter() {
|
|
@@ -342,6 +350,18 @@ function createNapiModule(options) {
|
|
|
342
350
|
function _emnapi_ctx_decrease_waiting_request_counter() {
|
|
343
351
|
emnapiCtx.decreaseWaitingRequestCounter();
|
|
344
352
|
}
|
|
353
|
+
function _emnapi_is_main_runtime_thread() {
|
|
354
|
+
return ENVIRONMENT_IS_PTHREAD ? 0 : 1;
|
|
355
|
+
}
|
|
356
|
+
function _emnapi_is_main_browser_thread() {
|
|
357
|
+
return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
|
|
358
|
+
}
|
|
359
|
+
function _emnapi_unwind() {
|
|
360
|
+
throw 'unwind';
|
|
361
|
+
}
|
|
362
|
+
function _emnapi_get_now() {
|
|
363
|
+
return performance.timeOrigin + performance.now();
|
|
364
|
+
}
|
|
345
365
|
function $emnapiSetValueI64(result, numberValue) {
|
|
346
366
|
var tempDouble;
|
|
347
367
|
var tempI64 = [
|
|
@@ -352,18 +372,30 @@ function createNapiModule(options) {
|
|
|
352
372
|
HEAP_DATA_VIEW.setInt32(result, tempI64[0], true);
|
|
353
373
|
HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true);
|
|
354
374
|
}
|
|
375
|
+
function _emnapi_open_handle_scope() {
|
|
376
|
+
return emnapiCtx.openScope().id;
|
|
377
|
+
}
|
|
378
|
+
function _emnapi_close_handle_scope(_scope) {
|
|
379
|
+
return emnapiCtx.closeScope();
|
|
380
|
+
}
|
|
355
381
|
var utilMod = Object.freeze({
|
|
356
382
|
__proto__: null,
|
|
357
383
|
$emnapiSetValueI64: $emnapiSetValueI64,
|
|
358
384
|
_emnapi_call_finalizer: _emnapi_call_finalizer,
|
|
359
385
|
_emnapi_callback_into_module: _emnapi_callback_into_module,
|
|
386
|
+
_emnapi_close_handle_scope: _emnapi_close_handle_scope,
|
|
360
387
|
_emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter,
|
|
361
388
|
_emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter,
|
|
362
389
|
_emnapi_get_node_version: _emnapi_get_node_version,
|
|
390
|
+
_emnapi_get_now: _emnapi_get_now,
|
|
391
|
+
_emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
|
|
392
|
+
_emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread,
|
|
363
393
|
_emnapi_next_tick: _emnapi_next_tick,
|
|
394
|
+
_emnapi_open_handle_scope: _emnapi_open_handle_scope,
|
|
364
395
|
_emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop,
|
|
365
396
|
_emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push,
|
|
366
397
|
_emnapi_set_immediate: _emnapi_set_immediate,
|
|
398
|
+
_emnapi_unwind: _emnapi_unwind,
|
|
367
399
|
napi_clear_last_error: napi_clear_last_error,
|
|
368
400
|
napi_set_last_error: napi_set_last_error
|
|
369
401
|
});
|
|
@@ -374,9 +406,19 @@ function createNapiModule(options) {
|
|
|
374
406
|
var worker = PThread.pthreads[tid];
|
|
375
407
|
return worker;
|
|
376
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
|
+
}
|
|
377
418
|
function _emnapi_worker_unref(pthreadPtr) {
|
|
378
419
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
379
420
|
return;
|
|
421
|
+
pthreadPtr >>>= 0;
|
|
380
422
|
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
381
423
|
if (worker && typeof worker.unref === 'function') {
|
|
382
424
|
worker.unref();
|
|
@@ -414,9 +456,6 @@ function createNapiModule(options) {
|
|
|
414
456
|
};
|
|
415
457
|
});
|
|
416
458
|
uvThreadpoolReady.ready = false;
|
|
417
|
-
function _emnapi_is_main_browser_thread() {
|
|
418
|
-
return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0;
|
|
419
|
-
}
|
|
420
459
|
function _emnapi_after_uvthreadpool_ready(callback, q, type) {
|
|
421
460
|
if (uvThreadpoolReady.ready) {
|
|
422
461
|
(wasmTable.get(callback))(q, type);
|
|
@@ -431,7 +470,7 @@ function createNapiModule(options) {
|
|
|
431
470
|
var p = [];
|
|
432
471
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
433
472
|
var _loop_1 = function (i) {
|
|
434
|
-
var pthreadPtr = HEAP_DATA_VIEW.
|
|
473
|
+
var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true);
|
|
435
474
|
var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr);
|
|
436
475
|
p.push(new Promise(function (resolve) {
|
|
437
476
|
var handler = function (e) {
|
|
@@ -479,8 +518,8 @@ function createNapiModule(options) {
|
|
|
479
518
|
_emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready,
|
|
480
519
|
_emnapi_async_send_js: _emnapi_async_send_js,
|
|
481
520
|
_emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready,
|
|
482
|
-
_emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread,
|
|
483
521
|
_emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool,
|
|
522
|
+
_emnapi_worker_ref: _emnapi_worker_ref,
|
|
484
523
|
_emnapi_worker_unref: _emnapi_worker_unref
|
|
485
524
|
});
|
|
486
525
|
function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) {
|
|
@@ -489,22 +528,14 @@ function createNapiModule(options) {
|
|
|
489
528
|
var envObject = emnapiCtx.envStore.get(env);
|
|
490
529
|
if (!adjusted_value)
|
|
491
530
|
return envObject.setLastError(1);
|
|
492
|
-
var
|
|
493
|
-
|
|
494
|
-
return envObject.setLastError(1);
|
|
495
|
-
}
|
|
496
|
-
var old_size = wasmMemory.buffer.byteLength;
|
|
497
|
-
var new_size = old_size + change_in_bytes_number;
|
|
498
|
-
new_size = new_size + ((65536 - new_size % 65536) % 65536);
|
|
499
|
-
if (wasmMemory.grow((new_size - old_size + 65535) >> 16) === -1) {
|
|
500
|
-
return envObject.setLastError(9);
|
|
501
|
-
}
|
|
531
|
+
var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes);
|
|
532
|
+
adjusted_value >>>= 0;
|
|
502
533
|
if (emnapiCtx.feature.supportBigInt) {
|
|
503
534
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
504
|
-
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(
|
|
535
|
+
HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true);
|
|
505
536
|
}
|
|
506
537
|
else {
|
|
507
|
-
$emnapiSetValueI64(adjusted_value,
|
|
538
|
+
$emnapiSetValueI64(adjusted_value, Number(adjusted_memory));
|
|
508
539
|
}
|
|
509
540
|
return envObject.clearLastError();
|
|
510
541
|
}
|
|
@@ -662,6 +693,7 @@ function createNapiModule(options) {
|
|
|
662
693
|
var asyncId = asyncContext.asyncId;
|
|
663
694
|
var triggerAsyncId = asyncContext.triggerAsyncId;
|
|
664
695
|
if (result) {
|
|
696
|
+
result >>>= 0;
|
|
665
697
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
666
698
|
HEAP_DATA_VIEW.setFloat64(result, asyncId, true);
|
|
667
699
|
HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true);
|
|
@@ -682,11 +714,13 @@ function createNapiModule(options) {
|
|
|
682
714
|
return;
|
|
683
715
|
var resource = emnapiCtx.handleStore.get(async_resource).value;
|
|
684
716
|
var callback = emnapiCtx.handleStore.get(cb).value;
|
|
717
|
+
argv >>>= 0;
|
|
718
|
+
size >>>= 0;
|
|
685
719
|
size = size >>> 0;
|
|
686
720
|
var arr = Array(size);
|
|
687
721
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
688
722
|
for (; i < size; i++) {
|
|
689
|
-
var argVal = HEAP_DATA_VIEW.
|
|
723
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
690
724
|
arr[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
691
725
|
}
|
|
692
726
|
var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, {
|
|
@@ -694,9 +728,10 @@ function createNapiModule(options) {
|
|
|
694
728
|
triggerAsyncId: trigger_async_id
|
|
695
729
|
});
|
|
696
730
|
if (result) {
|
|
731
|
+
result >>>= 0;
|
|
697
732
|
var envObject = emnapiCtx.envStore.get(env);
|
|
698
733
|
v = envObject.ensureHandleId(ret);
|
|
699
|
-
HEAP_DATA_VIEW.
|
|
734
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
700
735
|
}
|
|
701
736
|
}
|
|
702
737
|
function _emnapi_async_init_js(async_resource, async_resource_name, result) {
|
|
@@ -720,6 +755,7 @@ function createNapiModule(options) {
|
|
|
720
755
|
}
|
|
721
756
|
var low = Number(numberValue & BigInt(0xffffffff));
|
|
722
757
|
var high = Number(numberValue >> BigInt(32));
|
|
758
|
+
result >>>= 0;
|
|
723
759
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
724
760
|
HEAP_DATA_VIEW.setInt32(result, low, true);
|
|
725
761
|
HEAP_DATA_VIEW.setInt32(result + 4, high, true);
|
|
@@ -729,6 +765,7 @@ function createNapiModule(options) {
|
|
|
729
765
|
if (!emnapiNodeBinding) {
|
|
730
766
|
return 9;
|
|
731
767
|
}
|
|
768
|
+
async_context >>>= 0;
|
|
732
769
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
733
770
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
734
771
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
@@ -771,14 +808,17 @@ function createNapiModule(options) {
|
|
|
771
808
|
if (typeof v8func !== 'function') {
|
|
772
809
|
return envObject.setLastError(1);
|
|
773
810
|
}
|
|
811
|
+
async_context >>>= 0;
|
|
774
812
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
775
813
|
var low = HEAP_DATA_VIEW.getInt32(async_context, true);
|
|
776
814
|
var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true);
|
|
777
815
|
var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32));
|
|
816
|
+
argv >>>= 0;
|
|
817
|
+
argc >>>= 0;
|
|
778
818
|
argc = argc >>> 0;
|
|
779
819
|
var arr = Array(argc);
|
|
780
820
|
for (; i < argc; i++) {
|
|
781
|
-
var argVal = HEAP_DATA_VIEW.
|
|
821
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
782
822
|
arr[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
783
823
|
}
|
|
784
824
|
var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr);
|
|
@@ -788,8 +828,9 @@ function createNapiModule(options) {
|
|
|
788
828
|
if (ret.status !== 0)
|
|
789
829
|
return envObject.setLastError(ret.status);
|
|
790
830
|
if (result) {
|
|
831
|
+
result >>>= 0;
|
|
791
832
|
v = envObject.ensureHandleId(ret.value);
|
|
792
|
-
HEAP_DATA_VIEW.
|
|
833
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
793
834
|
}
|
|
794
835
|
return envObject.getReturnStatus();
|
|
795
836
|
}
|
|
@@ -815,32 +856,61 @@ function createNapiModule(options) {
|
|
|
815
856
|
napi_open_callback_scope: napi_open_callback_scope
|
|
816
857
|
});
|
|
817
858
|
var emnapiTSFN = {
|
|
859
|
+
_liveSet: {},
|
|
818
860
|
offset: {
|
|
861
|
+
__size__: 0,
|
|
819
862
|
resource: 0,
|
|
820
|
-
async_id:
|
|
821
|
-
trigger_async_id:
|
|
822
|
-
queue_size:
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
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
|
|
839
884
|
},
|
|
840
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;
|
|
841
911
|
if (typeof PThread !== 'undefined') {
|
|
842
912
|
PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
|
|
843
|
-
PThread.
|
|
913
|
+
Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
|
|
844
914
|
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
845
915
|
PThread.getNewWorker = function () {
|
|
846
916
|
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
@@ -861,7 +931,10 @@ function createNapiModule(options) {
|
|
|
861
931
|
var type = __emnapi__.type;
|
|
862
932
|
var payload = __emnapi__.payload;
|
|
863
933
|
if (type === 'tsfn-send') {
|
|
864
|
-
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
|
+
}
|
|
865
938
|
}
|
|
866
939
|
}
|
|
867
940
|
};
|
|
@@ -883,18 +956,33 @@ function createNapiModule(options) {
|
|
|
883
956
|
}
|
|
884
957
|
return true;
|
|
885
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
|
+
},
|
|
886
967
|
initQueue: function (func) {
|
|
887
968
|
var size = 2 * 4;
|
|
888
969
|
var queue = _malloc(size);
|
|
889
970
|
if (!queue)
|
|
890
971
|
return false;
|
|
891
|
-
|
|
972
|
+
queue >>>= 0;
|
|
973
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
|
|
892
974
|
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
893
975
|
return true;
|
|
894
976
|
},
|
|
895
977
|
destroyQueue: function (func) {
|
|
896
978
|
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
897
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
|
+
}
|
|
898
986
|
_free(queue);
|
|
899
987
|
}
|
|
900
988
|
},
|
|
@@ -906,6 +994,7 @@ function createNapiModule(options) {
|
|
|
906
994
|
var node = _malloc(size);
|
|
907
995
|
if (!node)
|
|
908
996
|
throw new Error('OOM');
|
|
997
|
+
node >>>= 0;
|
|
909
998
|
emnapiTSFN.storeSizeTypeValue(node, data, false);
|
|
910
999
|
emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
|
|
911
1000
|
if (head === 0 && tail === 0) {
|
|
@@ -941,11 +1030,11 @@ function createNapiModule(options) {
|
|
|
941
1030
|
var waitCondition = function () {
|
|
942
1031
|
var queueSize = emnapiTSFN.getQueueSize(func);
|
|
943
1032
|
var maxSize = emnapiTSFN.getMaxQueueSize(func);
|
|
944
|
-
|
|
945
|
-
return queueSize >= maxSize && maxSize > 0 && !isClosing;
|
|
1033
|
+
return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
|
|
946
1034
|
};
|
|
947
1035
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
948
|
-
|
|
1036
|
+
var shouldDelete = false;
|
|
1037
|
+
var ret = mutex.execute(function () {
|
|
949
1038
|
while (waitCondition()) {
|
|
950
1039
|
if (mode === 0) {
|
|
951
1040
|
return 15;
|
|
@@ -955,31 +1044,35 @@ function createNapiModule(options) {
|
|
|
955
1044
|
}
|
|
956
1045
|
cond.wait();
|
|
957
1046
|
}
|
|
958
|
-
if (emnapiTSFN.
|
|
959
|
-
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
960
|
-
return 1;
|
|
961
|
-
}
|
|
962
|
-
else {
|
|
963
|
-
emnapiTSFN.subThreadCount(func);
|
|
964
|
-
return 16;
|
|
965
|
-
}
|
|
966
|
-
}
|
|
967
|
-
else {
|
|
1047
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
968
1048
|
emnapiTSFN.pushQueue(func, data);
|
|
969
1049
|
emnapiTSFN.send(func);
|
|
970
1050
|
return 0;
|
|
971
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;
|
|
972
1061
|
});
|
|
1062
|
+
if (shouldDelete) {
|
|
1063
|
+
emnapiTSFN.destroy(func);
|
|
1064
|
+
}
|
|
1065
|
+
return ret;
|
|
973
1066
|
},
|
|
974
1067
|
getMutex: function (func) {
|
|
975
1068
|
var index = func + emnapiTSFN.offset.mutex;
|
|
976
1069
|
var mutex = {
|
|
977
1070
|
lock: function () {
|
|
978
1071
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
979
|
-
var i32a = new Int32Array(
|
|
1072
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
980
1073
|
if (isBrowserMain) {
|
|
981
1074
|
while (true) {
|
|
982
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1075
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
983
1076
|
if (oldValue === 0) {
|
|
984
1077
|
return;
|
|
985
1078
|
}
|
|
@@ -987,18 +1080,18 @@ function createNapiModule(options) {
|
|
|
987
1080
|
}
|
|
988
1081
|
else {
|
|
989
1082
|
while (true) {
|
|
990
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1083
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
991
1084
|
if (oldValue === 0) {
|
|
992
1085
|
return;
|
|
993
1086
|
}
|
|
994
|
-
Atomics.wait(i32a, 0,
|
|
1087
|
+
Atomics.wait(i32a, 0, 10);
|
|
995
1088
|
}
|
|
996
1089
|
}
|
|
997
1090
|
},
|
|
998
1091
|
unlock: function () {
|
|
999
|
-
var i32a = new Int32Array(
|
|
1000
|
-
var oldValue = Atomics.compareExchange(i32a, 0,
|
|
1001
|
-
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) {
|
|
1002
1095
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
1003
1096
|
}
|
|
1004
1097
|
Atomics.notify(i32a, 0, 1);
|
|
@@ -1020,14 +1113,14 @@ function createNapiModule(options) {
|
|
|
1020
1113
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1021
1114
|
var cond = {
|
|
1022
1115
|
wait: function () {
|
|
1023
|
-
var i32a = new Int32Array(
|
|
1116
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1024
1117
|
var value = Atomics.load(i32a, 0);
|
|
1025
1118
|
mutex.unlock();
|
|
1026
1119
|
Atomics.wait(i32a, 0, value);
|
|
1027
1120
|
mutex.lock();
|
|
1028
1121
|
},
|
|
1029
1122
|
signal: function () {
|
|
1030
|
-
var i32a = new Int32Array(
|
|
1123
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1031
1124
|
Atomics.add(i32a, 0, 1);
|
|
1032
1125
|
Atomics.notify(i32a, 0, 1);
|
|
1033
1126
|
}
|
|
@@ -1040,15 +1133,15 @@ function createNapiModule(options) {
|
|
|
1040
1133
|
addQueueSize: function (func) {
|
|
1041
1134
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1042
1135
|
var arr, index;
|
|
1043
|
-
arr = new Uint32Array(
|
|
1044
|
-
index = (func + offset)
|
|
1136
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1137
|
+
index = (func + offset) >>> 2;
|
|
1045
1138
|
Atomics.add(arr, index, 1);
|
|
1046
1139
|
},
|
|
1047
1140
|
subQueueSize: function (func) {
|
|
1048
1141
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1049
1142
|
var arr, index;
|
|
1050
|
-
arr = new Uint32Array(
|
|
1051
|
-
index = (func + offset)
|
|
1143
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1144
|
+
index = (func + offset) >>> 2;
|
|
1052
1145
|
Atomics.sub(arr, index, 1);
|
|
1053
1146
|
},
|
|
1054
1147
|
getThreadCount: function (func) {
|
|
@@ -1057,31 +1150,31 @@ function createNapiModule(options) {
|
|
|
1057
1150
|
addThreadCount: function (func) {
|
|
1058
1151
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1059
1152
|
var arr, index;
|
|
1060
|
-
arr = new Uint32Array(
|
|
1061
|
-
index = (func + offset)
|
|
1153
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1154
|
+
index = (func + offset) >>> 2;
|
|
1062
1155
|
Atomics.add(arr, index, 1);
|
|
1063
1156
|
},
|
|
1064
1157
|
subThreadCount: function (func) {
|
|
1065
1158
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1066
1159
|
var arr, index;
|
|
1067
|
-
arr = new Uint32Array(
|
|
1068
|
-
index = (func + offset)
|
|
1160
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1161
|
+
index = (func + offset) >>> 2;
|
|
1069
1162
|
Atomics.sub(arr, index, 1);
|
|
1070
1163
|
},
|
|
1071
|
-
|
|
1072
|
-
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);
|
|
1073
1166
|
},
|
|
1074
|
-
|
|
1075
|
-
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);
|
|
1076
1169
|
},
|
|
1077
1170
|
getHandlesClosing: function (func) {
|
|
1078
|
-
return Atomics.load(new
|
|
1171
|
+
return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
|
|
1079
1172
|
},
|
|
1080
1173
|
setHandlesClosing: function (func, value) {
|
|
1081
|
-
Atomics.store(new
|
|
1174
|
+
Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
|
|
1082
1175
|
},
|
|
1083
1176
|
getDispatchState: function (func) {
|
|
1084
|
-
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);
|
|
1085
1178
|
},
|
|
1086
1179
|
getContext: function (func) {
|
|
1087
1180
|
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
@@ -1111,66 +1204,96 @@ function createNapiModule(options) {
|
|
|
1111
1204
|
var ret;
|
|
1112
1205
|
var arr;
|
|
1113
1206
|
if (unsigned) {
|
|
1114
|
-
arr = new Uint32Array(
|
|
1115
|
-
ret = Atomics.load(arr, offset
|
|
1207
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1208
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1116
1209
|
return ret;
|
|
1117
1210
|
}
|
|
1118
1211
|
else {
|
|
1119
|
-
arr = new Int32Array(
|
|
1120
|
-
ret = Atomics.load(arr, offset
|
|
1212
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1213
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1121
1214
|
return ret;
|
|
1122
1215
|
}
|
|
1123
1216
|
},
|
|
1124
1217
|
storeSizeTypeValue: function (offset, value, unsigned) {
|
|
1125
1218
|
var arr;
|
|
1126
1219
|
if (unsigned) {
|
|
1127
|
-
arr = new Uint32Array(
|
|
1128
|
-
Atomics.store(arr, offset
|
|
1220
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1221
|
+
Atomics.store(arr, offset >>> 2, value);
|
|
1129
1222
|
return undefined;
|
|
1130
1223
|
}
|
|
1131
1224
|
else {
|
|
1132
|
-
arr = new Int32Array(
|
|
1133
|
-
Atomics.store(arr, offset
|
|
1225
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1226
|
+
Atomics.store(arr, offset >>> 2, value >>> 0);
|
|
1134
1227
|
return undefined;
|
|
1135
1228
|
}
|
|
1136
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
|
+
},
|
|
1137
1261
|
destroy: function (func) {
|
|
1262
|
+
emnapiTSFN._liveSet.delete(func);
|
|
1138
1263
|
emnapiTSFN.destroyQueue(func);
|
|
1139
|
-
|
|
1140
|
-
var envObject = emnapiCtx.envStore.get(env);
|
|
1141
|
-
var ref = emnapiTSFN.getRef(func);
|
|
1142
|
-
if (ref) {
|
|
1143
|
-
emnapiCtx.refStore.get(ref).dispose();
|
|
1144
|
-
}
|
|
1145
|
-
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1146
|
-
envObject.unref();
|
|
1147
|
-
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
|
|
1148
|
-
var arr = new Int32Array(wasmMemory.buffer);
|
|
1149
|
-
if (Atomics.load(arr, asyncRefOffset)) {
|
|
1150
|
-
Atomics.store(arr, asyncRefOffset, 0);
|
|
1151
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1152
|
-
}
|
|
1153
|
-
var resource = emnapiTSFN.getResource(func);
|
|
1154
|
-
emnapiCtx.refStore.get(resource).dispose();
|
|
1155
|
-
if (emnapiNodeBinding) {
|
|
1156
|
-
var view = new DataView(wasmMemory.buffer);
|
|
1157
|
-
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1158
|
-
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1159
|
-
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1160
|
-
}
|
|
1264
|
+
emnapiTSFN.releaseResources(func);
|
|
1161
1265
|
_free(func);
|
|
1162
1266
|
},
|
|
1163
|
-
|
|
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
|
+
});
|
|
1164
1274
|
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
1165
1275
|
var context = emnapiTSFN.getContext(func);
|
|
1166
1276
|
var data;
|
|
1167
|
-
|
|
1168
|
-
data =
|
|
1277
|
+
for (var i = 0; i < drainQueue.length; i++) {
|
|
1278
|
+
data = drainQueue[i];
|
|
1169
1279
|
if (callJsCb) {
|
|
1170
1280
|
(wasmTable.get(callJsCb))(0, 0, context, data);
|
|
1171
1281
|
}
|
|
1172
1282
|
}
|
|
1173
|
-
|
|
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
|
+
}
|
|
1174
1297
|
},
|
|
1175
1298
|
finalize: function (func) {
|
|
1176
1299
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1183,12 +1306,13 @@ function createNapiModule(options) {
|
|
|
1183
1306
|
envObject.callFinalizerInternal(0, finalize, data, context);
|
|
1184
1307
|
};
|
|
1185
1308
|
try {
|
|
1309
|
+
emnapiTSFN.emptyQueue(func);
|
|
1186
1310
|
if (finalize) {
|
|
1187
1311
|
if (emnapiNodeBinding) {
|
|
1188
1312
|
var resource = emnapiTSFN.getResource(func);
|
|
1189
1313
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1190
1314
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1191
|
-
var view = new DataView(
|
|
1315
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1192
1316
|
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1193
1317
|
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1194
1318
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
@@ -1200,7 +1324,7 @@ function createNapiModule(options) {
|
|
|
1200
1324
|
f();
|
|
1201
1325
|
}
|
|
1202
1326
|
}
|
|
1203
|
-
emnapiTSFN.
|
|
1327
|
+
emnapiTSFN.maybeDelete(func);
|
|
1204
1328
|
}
|
|
1205
1329
|
finally {
|
|
1206
1330
|
emnapiCtx.closeScope(envObject);
|
|
@@ -1216,7 +1340,7 @@ function createNapiModule(options) {
|
|
|
1216
1340
|
try {
|
|
1217
1341
|
if (set_closing) {
|
|
1218
1342
|
emnapiTSFN.getMutex(func).execute(function () {
|
|
1219
|
-
emnapiTSFN.
|
|
1343
|
+
emnapiTSFN.setState(func, 1);
|
|
1220
1344
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1221
1345
|
emnapiTSFN.getCond(func).signal();
|
|
1222
1346
|
}
|
|
@@ -1226,6 +1350,7 @@ function createNapiModule(options) {
|
|
|
1226
1350
|
return;
|
|
1227
1351
|
}
|
|
1228
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);
|
|
1229
1354
|
emnapiCtx.feature.setImmediate(function () {
|
|
1230
1355
|
emnapiTSFN.finalize(func);
|
|
1231
1356
|
});
|
|
@@ -1241,10 +1366,7 @@ function createNapiModule(options) {
|
|
|
1241
1366
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1242
1367
|
var cond = emnapiTSFN.getCond(func);
|
|
1243
1368
|
mutex.execute(function () {
|
|
1244
|
-
if (emnapiTSFN.
|
|
1245
|
-
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1246
|
-
}
|
|
1247
|
-
else {
|
|
1369
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1248
1370
|
var size = emnapiTSFN.getQueueSize(func);
|
|
1249
1371
|
if (size > 0) {
|
|
1250
1372
|
data = emnapiTSFN.shiftQueue(func);
|
|
@@ -1257,7 +1379,7 @@ function createNapiModule(options) {
|
|
|
1257
1379
|
}
|
|
1258
1380
|
if (size === 0) {
|
|
1259
1381
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1260
|
-
emnapiTSFN.
|
|
1382
|
+
emnapiTSFN.setState(func, 1);
|
|
1261
1383
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1262
1384
|
cond.signal();
|
|
1263
1385
|
}
|
|
@@ -1268,6 +1390,9 @@ function createNapiModule(options) {
|
|
|
1268
1390
|
has_more = true;
|
|
1269
1391
|
}
|
|
1270
1392
|
}
|
|
1393
|
+
else {
|
|
1394
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1395
|
+
}
|
|
1271
1396
|
});
|
|
1272
1397
|
if (popped_value) {
|
|
1273
1398
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1295,7 +1420,7 @@ function createNapiModule(options) {
|
|
|
1295
1420
|
var resource = emnapiTSFN.getResource(func);
|
|
1296
1421
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1297
1422
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1298
|
-
var view = new DataView(
|
|
1423
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1299
1424
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
1300
1425
|
asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
|
|
1301
1426
|
triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
|
|
@@ -1314,8 +1439,9 @@ function createNapiModule(options) {
|
|
|
1314
1439
|
dispatch: function (func) {
|
|
1315
1440
|
var has_more = true;
|
|
1316
1441
|
var iterations_left = 1000;
|
|
1317
|
-
var
|
|
1318
|
-
var
|
|
1442
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1443
|
+
var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
|
|
1444
|
+
var index = dispatchStateAddress >>> 2;
|
|
1319
1445
|
while (has_more && --iterations_left !== 0) {
|
|
1320
1446
|
Atomics.store(ui32a, index, 1);
|
|
1321
1447
|
has_more = emnapiTSFN.dispatchOne(func);
|
|
@@ -1327,25 +1453,66 @@ function createNapiModule(options) {
|
|
|
1327
1453
|
emnapiTSFN.send(func);
|
|
1328
1454
|
}
|
|
1329
1455
|
},
|
|
1330
|
-
|
|
1331
|
-
var
|
|
1332
|
-
|
|
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) {
|
|
1333
1461
|
return;
|
|
1334
1462
|
}
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
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
|
+
}
|
|
1341
1487
|
}
|
|
1342
1488
|
}
|
|
1343
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;
|
|
1344
1497
|
}
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
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
|
+
}
|
|
1349
1516
|
}
|
|
1350
1517
|
}
|
|
1351
1518
|
};
|
|
@@ -1356,6 +1523,13 @@ function createNapiModule(options) {
|
|
|
1356
1523
|
envObject.checkGCAccess();
|
|
1357
1524
|
if (!async_resource_name)
|
|
1358
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;
|
|
1359
1533
|
max_queue_size = max_queue_size >>> 0;
|
|
1360
1534
|
initial_thread_count = initial_thread_count >>> 0;
|
|
1361
1535
|
if (initial_thread_count === 0) {
|
|
@@ -1364,6 +1538,7 @@ function createNapiModule(options) {
|
|
|
1364
1538
|
if (!result)
|
|
1365
1539
|
return envObject.setLastError(1);
|
|
1366
1540
|
var ref = 0;
|
|
1541
|
+
func >>>= 0;
|
|
1367
1542
|
if (!func) {
|
|
1368
1543
|
if (!call_js_cb)
|
|
1369
1544
|
return envObject.setLastError(1);
|
|
@@ -1393,34 +1568,38 @@ function createNapiModule(options) {
|
|
|
1393
1568
|
}
|
|
1394
1569
|
asyncResourceName = String(asyncResourceName);
|
|
1395
1570
|
var resource_name = envObject.ensureHandleId(asyncResourceName);
|
|
1396
|
-
var sizeofTSFN = emnapiTSFN.offset.
|
|
1571
|
+
var sizeofTSFN = emnapiTSFN.offset.__size__;
|
|
1397
1572
|
var tsfn = _malloc(sizeofTSFN);
|
|
1398
1573
|
if (!tsfn)
|
|
1399
1574
|
return envObject.setLastError(9);
|
|
1400
|
-
|
|
1575
|
+
tsfn >>>= 0;
|
|
1576
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
1401
1577
|
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
|
|
1402
1578
|
var resource_ = resourceRef.id;
|
|
1403
1579
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1404
|
-
HEAP_DATA_VIEW.
|
|
1580
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
|
|
1405
1581
|
if (!emnapiTSFN.initQueue(tsfn)) {
|
|
1406
1582
|
_free(tsfn);
|
|
1407
1583
|
resourceRef.dispose();
|
|
1408
1584
|
return envObject.setLastError(9);
|
|
1409
1585
|
}
|
|
1410
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);
|
|
1411
1588
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
|
|
1412
|
-
HEAP_DATA_VIEW.
|
|
1589
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
|
|
1413
1590
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true);
|
|
1414
|
-
HEAP_DATA_VIEW.
|
|
1415
|
-
HEAP_DATA_VIEW.
|
|
1416
|
-
HEAP_DATA_VIEW.
|
|
1417
|
-
HEAP_DATA_VIEW.
|
|
1418
|
-
HEAP_DATA_VIEW.
|
|
1591
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true);
|
|
1592
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true);
|
|
1593
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
|
|
1594
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
|
|
1595
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
|
|
1419
1596
|
emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
|
|
1597
|
+
emnapiTSFN._liveSet.add(tsfn);
|
|
1420
1598
|
envObject.ref();
|
|
1421
1599
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1422
|
-
HEAP_DATA_VIEW.
|
|
1423
|
-
|
|
1600
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
|
|
1601
|
+
result >>>= 0;
|
|
1602
|
+
HEAP_DATA_VIEW.setUint32(result, tsfn, true);
|
|
1424
1603
|
return envObject.clearLastError();
|
|
1425
1604
|
}
|
|
1426
1605
|
function napi_get_threadsafe_function_context(func, result) {
|
|
@@ -1428,9 +1607,11 @@ function createNapiModule(options) {
|
|
|
1428
1607
|
abort();
|
|
1429
1608
|
return 1;
|
|
1430
1609
|
}
|
|
1610
|
+
func >>>= 0;
|
|
1611
|
+
result >>>= 0;
|
|
1431
1612
|
var context = emnapiTSFN.getContext(func);
|
|
1432
1613
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1433
|
-
HEAP_DATA_VIEW.
|
|
1614
|
+
HEAP_DATA_VIEW.setUint32(result, context, true);
|
|
1434
1615
|
return 0;
|
|
1435
1616
|
}
|
|
1436
1617
|
function napi_call_threadsafe_function(func, data, mode) {
|
|
@@ -1438,6 +1619,8 @@ function createNapiModule(options) {
|
|
|
1438
1619
|
abort();
|
|
1439
1620
|
return 1;
|
|
1440
1621
|
}
|
|
1622
|
+
func >>>= 0;
|
|
1623
|
+
data >>>= 0;
|
|
1441
1624
|
return emnapiTSFN.push(func, data, mode);
|
|
1442
1625
|
}
|
|
1443
1626
|
function napi_acquire_threadsafe_function(func) {
|
|
@@ -1445,13 +1628,14 @@ function createNapiModule(options) {
|
|
|
1445
1628
|
abort();
|
|
1446
1629
|
return 1;
|
|
1447
1630
|
}
|
|
1631
|
+
func >>>= 0;
|
|
1448
1632
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1449
1633
|
return mutex.execute(function () {
|
|
1450
|
-
if (emnapiTSFN.
|
|
1451
|
-
|
|
1634
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1635
|
+
emnapiTSFN.addThreadCount(func);
|
|
1636
|
+
return 0;
|
|
1452
1637
|
}
|
|
1453
|
-
|
|
1454
|
-
return 0;
|
|
1638
|
+
return 16;
|
|
1455
1639
|
});
|
|
1456
1640
|
}
|
|
1457
1641
|
function napi_release_threadsafe_function(func, mode) {
|
|
@@ -1459,37 +1643,52 @@ function createNapiModule(options) {
|
|
|
1459
1643
|
abort();
|
|
1460
1644
|
return 1;
|
|
1461
1645
|
}
|
|
1646
|
+
func >>>= 0;
|
|
1462
1647
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1463
1648
|
var cond = emnapiTSFN.getCond(func);
|
|
1464
|
-
|
|
1649
|
+
var shouldDelete = false;
|
|
1650
|
+
var ret = mutex.execute(function () {
|
|
1465
1651
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1466
1652
|
return 1;
|
|
1467
1653
|
}
|
|
1468
1654
|
emnapiTSFN.subThreadCount(func);
|
|
1469
1655
|
if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
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) {
|
|
1475
1661
|
cond.signal();
|
|
1476
1662
|
}
|
|
1477
1663
|
emnapiTSFN.send(func);
|
|
1478
1664
|
}
|
|
1479
1665
|
}
|
|
1666
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1667
|
+
return 0;
|
|
1668
|
+
}
|
|
1669
|
+
shouldDelete = true;
|
|
1480
1670
|
return 0;
|
|
1481
1671
|
});
|
|
1672
|
+
if (shouldDelete) {
|
|
1673
|
+
emnapiTSFN.destroy(func);
|
|
1674
|
+
}
|
|
1675
|
+
return ret;
|
|
1482
1676
|
}
|
|
1483
1677
|
function napi_unref_threadsafe_function(env, func) {
|
|
1484
1678
|
if (!func) {
|
|
1485
1679
|
abort();
|
|
1486
1680
|
return 1;
|
|
1487
1681
|
}
|
|
1488
|
-
|
|
1489
|
-
var
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
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
|
+
}
|
|
1493
1692
|
}
|
|
1494
1693
|
return 0;
|
|
1495
1694
|
}
|
|
@@ -1498,34 +1697,66 @@ function createNapiModule(options) {
|
|
|
1498
1697
|
abort();
|
|
1499
1698
|
return 1;
|
|
1500
1699
|
}
|
|
1501
|
-
|
|
1502
|
-
var
|
|
1503
|
-
|
|
1504
|
-
|
|
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) {
|
|
1505
1706
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1506
1707
|
}
|
|
1708
|
+
Atomics.store(arr, asyncRefOffset, currentValue + 1);
|
|
1507
1709
|
return 0;
|
|
1508
1710
|
}
|
|
1509
1711
|
var emnapiAWMT = {
|
|
1510
|
-
|
|
1511
|
-
runningWorkers: [],
|
|
1512
|
-
workQueue: [],
|
|
1712
|
+
pool: [],
|
|
1513
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
|
+
},
|
|
1514
1725
|
offset: {
|
|
1515
1726
|
resource: 0,
|
|
1516
1727
|
async_id: 8,
|
|
1517
1728
|
trigger_async_id: 16,
|
|
1518
1729
|
env: 24,
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
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;
|
|
1523
1746
|
},
|
|
1524
1747
|
init: function () {
|
|
1525
|
-
emnapiAWMT.
|
|
1526
|
-
emnapiAWMT.runningWorkers = [];
|
|
1527
|
-
emnapiAWMT.workQueue = [];
|
|
1748
|
+
emnapiAWMT.pool = [];
|
|
1528
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
|
+
}
|
|
1529
1760
|
},
|
|
1530
1761
|
addListener: function (worker) {
|
|
1531
1762
|
if (!worker)
|
|
@@ -1539,18 +1770,8 @@ function createNapiModule(options) {
|
|
|
1539
1770
|
var type = __emnapi__.type;
|
|
1540
1771
|
var payload = __emnapi__.payload;
|
|
1541
1772
|
if (type === 'async-work-complete') {
|
|
1542
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1543
|
-
emnapiAWMT.runningWorkers.splice(emnapiAWMT.runningWorkers.indexOf(worker), 1);
|
|
1544
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1545
|
-
emnapiAWMT.checkIdleWorker();
|
|
1546
1773
|
emnapiAWMT.callComplete(payload.work, 0);
|
|
1547
1774
|
}
|
|
1548
|
-
else if (type === 'async-work-queue') {
|
|
1549
|
-
emnapiAWMT.scheduleWork(payload.work);
|
|
1550
|
-
}
|
|
1551
|
-
else if (type === 'async-work-cancel') {
|
|
1552
|
-
emnapiAWMT.cancelWork(payload.work);
|
|
1553
|
-
}
|
|
1554
1775
|
}
|
|
1555
1776
|
};
|
|
1556
1777
|
var dispose = function () {
|
|
@@ -1571,142 +1792,233 @@ function createNapiModule(options) {
|
|
|
1571
1792
|
}
|
|
1572
1793
|
return true;
|
|
1573
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
|
+
},
|
|
1574
1815
|
initWorkers: function (n) {
|
|
1575
1816
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
1576
1817
|
return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
|
|
1577
1818
|
}
|
|
1578
1819
|
if (emnapiAWMT.workerReady)
|
|
1579
1820
|
return emnapiAWMT.workerReady;
|
|
1580
|
-
if (typeof onCreateWorker !== 'function') {
|
|
1581
|
-
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
1582
|
-
}
|
|
1583
|
-
var promises = [];
|
|
1584
|
-
var args = [];
|
|
1585
1821
|
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
1586
1822
|
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
1587
1823
|
}
|
|
1824
|
+
var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
|
|
1825
|
+
var args = [];
|
|
1826
|
+
emnapiAWMT.initGlobal();
|
|
1588
1827
|
for (var i = 0; i < n; ++i) {
|
|
1589
|
-
args.push(
|
|
1828
|
+
args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
|
|
1590
1829
|
}
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
var p = PThread.loadWasmModuleToWorker(worker);
|
|
1595
|
-
emnapiAWMT.addListener(worker);
|
|
1596
|
-
promises.push(p.then(function () {
|
|
1597
|
-
if (typeof worker.unref === 'function') {
|
|
1598
|
-
worker.unref();
|
|
1599
|
-
}
|
|
1600
|
-
}));
|
|
1601
|
-
emnapiAWMT.unusedWorkers.push(worker);
|
|
1602
|
-
var arg = args[i];
|
|
1603
|
-
worker.threadBlockBase = arg;
|
|
1604
|
-
worker.postMessage({
|
|
1605
|
-
__emnapi__: {
|
|
1606
|
-
type: 'async-worker-init',
|
|
1607
|
-
payload: { arg: arg }
|
|
1608
|
-
}
|
|
1609
|
-
});
|
|
1610
|
-
};
|
|
1611
|
-
for (var i = 0; i < n; ++i) {
|
|
1612
|
-
_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'));
|
|
1613
1833
|
}
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1834
|
+
var worker;
|
|
1835
|
+
if (index < 0) {
|
|
1836
|
+
worker = emnapiAWMT.pool[-index - 1];
|
|
1837
|
+
if (worker)
|
|
1838
|
+
return worker.whenLoaded;
|
|
1619
1839
|
}
|
|
1620
|
-
|
|
1621
|
-
|
|
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
|
+
});
|
|
1622
1847
|
emnapiAWMT.workerReady = Promise.all(promises);
|
|
1623
1848
|
return emnapiAWMT.workerReady;
|
|
1624
1849
|
},
|
|
1625
|
-
checkIdleWorker: function () {
|
|
1626
|
-
if (emnapiAWMT.unusedWorkers.length > 0 && emnapiAWMT.workQueue.length > 0) {
|
|
1627
|
-
var worker = emnapiAWMT.unusedWorkers.shift();
|
|
1628
|
-
var work = emnapiAWMT.workQueue.shift();
|
|
1629
|
-
emnapiAWMT.runningWorkers.push(worker);
|
|
1630
|
-
worker.postMessage({
|
|
1631
|
-
__emnapi__: {
|
|
1632
|
-
type: 'async-work-execute',
|
|
1633
|
-
payload: { work: work }
|
|
1634
|
-
}
|
|
1635
|
-
});
|
|
1636
|
-
}
|
|
1637
|
-
},
|
|
1638
1850
|
getResource: function (work) {
|
|
1639
|
-
|
|
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);
|
|
1640
1854
|
},
|
|
1641
1855
|
getExecute: function (work) {
|
|
1642
|
-
|
|
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);
|
|
1643
1859
|
},
|
|
1644
1860
|
getComplete: function (work) {
|
|
1645
|
-
|
|
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);
|
|
1646
1864
|
},
|
|
1647
1865
|
getEnv: function (work) {
|
|
1648
|
-
|
|
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);
|
|
1649
1869
|
},
|
|
1650
1870
|
getData: function (work) {
|
|
1651
|
-
|
|
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);
|
|
1652
1967
|
},
|
|
1653
1968
|
scheduleWork: function (work) {
|
|
1654
1969
|
var _a;
|
|
1655
|
-
if (
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
}
|
|
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;
|
|
1662
1976
|
});
|
|
1663
|
-
return;
|
|
1664
1977
|
}
|
|
1665
1978
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1666
|
-
emnapiAWMT.
|
|
1667
|
-
|
|
1668
|
-
|
|
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);
|
|
1669
1986
|
}
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
}, fail);
|
|
1680
|
-
}
|
|
1681
|
-
catch (err) {
|
|
1682
|
-
fail(err);
|
|
1683
|
-
}
|
|
1987
|
+
catch (err) {
|
|
1988
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1989
|
+
mutex.unlock();
|
|
1990
|
+
throw err;
|
|
1991
|
+
}
|
|
1992
|
+
emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
|
|
1993
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1994
|
+
if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
|
|
1995
|
+
cond.signal();
|
|
1684
1996
|
}
|
|
1997
|
+
mutex.unlock();
|
|
1685
1998
|
},
|
|
1686
1999
|
cancelWork: function (work) {
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
}
|
|
1695
|
-
|
|
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;
|
|
1696
2011
|
}
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
emnapiAWMT.workQueue.splice(index, 1);
|
|
1700
|
-
emnapiCtx.feature.setImmediate(function () {
|
|
1701
|
-
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1702
|
-
emnapiAWMT.checkIdleWorker();
|
|
1703
|
-
emnapiAWMT.callComplete(work, 11);
|
|
1704
|
-
});
|
|
1705
|
-
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;
|
|
1706
2014
|
}
|
|
1707
|
-
|
|
2015
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
2016
|
+
emnapiAWMT.callComplete(work, 11);
|
|
2017
|
+
});
|
|
2018
|
+
return 0;
|
|
1708
2019
|
},
|
|
1709
2020
|
callComplete: function (work, status) {
|
|
2021
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1710
2022
|
var complete = emnapiAWMT.getComplete(work);
|
|
1711
2023
|
var env = emnapiAWMT.getEnv(work);
|
|
1712
2024
|
var data = emnapiAWMT.getData(work);
|
|
@@ -1724,7 +2036,7 @@ function createNapiModule(options) {
|
|
|
1724
2036
|
var resource = emnapiAWMT.getResource(work);
|
|
1725
2037
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1726
2038
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1727
|
-
var view = new DataView(
|
|
2039
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
1728
2040
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
1729
2041
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
1730
2042
|
emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
|
|
@@ -1741,6 +2053,7 @@ function createNapiModule(options) {
|
|
|
1741
2053
|
}
|
|
1742
2054
|
}
|
|
1743
2055
|
};
|
|
2056
|
+
emnapiAWMT.init();
|
|
1744
2057
|
var napi_create_async_work = singleThreadAsyncWork
|
|
1745
2058
|
? function (env, resource, resource_name, execute, complete, data, result) {
|
|
1746
2059
|
if (!env)
|
|
@@ -1762,8 +2075,9 @@ function createNapiModule(options) {
|
|
|
1762
2075
|
return envObject.setLastError(1);
|
|
1763
2076
|
var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
|
|
1764
2077
|
var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
|
|
2078
|
+
result >>>= 0;
|
|
1765
2079
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1766
|
-
HEAP_DATA_VIEW.
|
|
2080
|
+
HEAP_DATA_VIEW.setUint32(result, id, true);
|
|
1767
2081
|
return envObject.clearLastError();
|
|
1768
2082
|
}
|
|
1769
2083
|
: function (env, resource, resource_name, execute, complete, data, result) {
|
|
@@ -1788,18 +2102,21 @@ function createNapiModule(options) {
|
|
|
1788
2102
|
var aw = _malloc(sizeofAW);
|
|
1789
2103
|
if (!aw)
|
|
1790
2104
|
return envObject.setLastError(9);
|
|
1791
|
-
|
|
2105
|
+
aw >>>= 0;
|
|
2106
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
|
|
1792
2107
|
var s = envObject.ensureHandleId(resourceObject);
|
|
1793
2108
|
var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
|
|
1794
2109
|
var resource_ = resourceRef.id;
|
|
1795
2110
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1796
|
-
HEAP_DATA_VIEW.
|
|
2111
|
+
HEAP_DATA_VIEW.setUint32(aw, resource_, true);
|
|
1797
2112
|
_emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id);
|
|
1798
|
-
HEAP_DATA_VIEW.
|
|
1799
|
-
HEAP_DATA_VIEW.
|
|
1800
|
-
HEAP_DATA_VIEW.
|
|
1801
|
-
HEAP_DATA_VIEW.
|
|
1802
|
-
|
|
2113
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true);
|
|
2114
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
|
|
2115
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
|
|
2116
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
|
|
2117
|
+
emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
|
|
2118
|
+
result >>>= 0;
|
|
2119
|
+
HEAP_DATA_VIEW.setUint32(result, aw, true);
|
|
1803
2120
|
return envObject.clearLastError();
|
|
1804
2121
|
};
|
|
1805
2122
|
var napi_delete_async_work = singleThreadAsyncWork
|
|
@@ -1810,6 +2127,7 @@ function createNapiModule(options) {
|
|
|
1810
2127
|
envObject.checkGCAccess();
|
|
1811
2128
|
if (!work)
|
|
1812
2129
|
return envObject.setLastError(1);
|
|
2130
|
+
work >>>= 0;
|
|
1813
2131
|
emnapiAWST.remove(work);
|
|
1814
2132
|
return envObject.clearLastError();
|
|
1815
2133
|
}
|
|
@@ -1820,10 +2138,11 @@ function createNapiModule(options) {
|
|
|
1820
2138
|
envObject.checkGCAccess();
|
|
1821
2139
|
if (!work)
|
|
1822
2140
|
return envObject.setLastError(1);
|
|
2141
|
+
work >>>= 0;
|
|
1823
2142
|
var resource = emnapiAWMT.getResource(work);
|
|
1824
2143
|
emnapiCtx.refStore.get(resource).dispose();
|
|
1825
2144
|
if (emnapiNodeBinding) {
|
|
1826
|
-
var view = new DataView(
|
|
2145
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
1827
2146
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
1828
2147
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
1829
2148
|
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
@@ -1838,6 +2157,7 @@ function createNapiModule(options) {
|
|
|
1838
2157
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1839
2158
|
if (!work)
|
|
1840
2159
|
return envObject.setLastError(1);
|
|
2160
|
+
work >>>= 0;
|
|
1841
2161
|
emnapiAWST.queue(work);
|
|
1842
2162
|
return envObject.clearLastError();
|
|
1843
2163
|
}
|
|
@@ -1847,6 +2167,7 @@ function createNapiModule(options) {
|
|
|
1847
2167
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1848
2168
|
if (!work)
|
|
1849
2169
|
return envObject.setLastError(1);
|
|
2170
|
+
work >>>= 0;
|
|
1850
2171
|
emnapiAWMT.scheduleWork(work);
|
|
1851
2172
|
return envObject.clearLastError();
|
|
1852
2173
|
};
|
|
@@ -1857,6 +2178,7 @@ function createNapiModule(options) {
|
|
|
1857
2178
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1858
2179
|
if (!work)
|
|
1859
2180
|
return envObject.setLastError(1);
|
|
2181
|
+
work >>>= 0;
|
|
1860
2182
|
var status = emnapiAWST.cancel(work);
|
|
1861
2183
|
if (status === 0)
|
|
1862
2184
|
return envObject.clearLastError();
|
|
@@ -1868,41 +2190,125 @@ function createNapiModule(options) {
|
|
|
1868
2190
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1869
2191
|
if (!work)
|
|
1870
2192
|
return envObject.setLastError(1);
|
|
2193
|
+
work >>>= 0;
|
|
1871
2194
|
var status = emnapiAWMT.cancelWork(work);
|
|
1872
2195
|
if (status === 0)
|
|
1873
2196
|
return envObject.clearLastError();
|
|
1874
2197
|
return envObject.setLastError(status);
|
|
1875
2198
|
};
|
|
1876
|
-
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) {
|
|
1877
2296
|
if (napiModule.childThread) {
|
|
1878
2297
|
if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
|
|
1879
2298
|
throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
|
|
1880
2299
|
}
|
|
1881
2300
|
wasmInstance.exports.emnapi_async_worker_init(startArg);
|
|
2301
|
+
(wasmTable.get(func[0]))(func[1]);
|
|
1882
2302
|
}
|
|
1883
2303
|
else {
|
|
1884
2304
|
throw new Error('startThread is only available in child threads');
|
|
1885
2305
|
}
|
|
1886
2306
|
}
|
|
1887
|
-
function executeAsyncWork(work) {
|
|
1888
|
-
if (!ENVIRONMENT_IS_PTHREAD)
|
|
1889
|
-
return;
|
|
1890
|
-
var execute = emnapiAWMT.getExecute(work);
|
|
1891
|
-
var env = emnapiAWMT.getEnv(work);
|
|
1892
|
-
var data = emnapiAWMT.getData(work);
|
|
1893
|
-
(wasmTable.get(execute))(env, data);
|
|
1894
|
-
var postMessage = napiModule.postMessage;
|
|
1895
|
-
postMessage({
|
|
1896
|
-
__emnapi__: {
|
|
1897
|
-
type: 'async-work-complete',
|
|
1898
|
-
payload: { work: work }
|
|
1899
|
-
}
|
|
1900
|
-
});
|
|
1901
|
-
}
|
|
1902
2307
|
napiModule.initWorker = initWorker;
|
|
1903
|
-
napiModule.executeAsyncWork = executeAsyncWork;
|
|
1904
2308
|
var asyncWorkMod = Object.freeze({
|
|
1905
2309
|
__proto__: null,
|
|
2310
|
+
_emnapi_async_worker: _emnapi_async_worker,
|
|
2311
|
+
_emnapi_spawn_worker: _emnapi_spawn_worker,
|
|
1906
2312
|
napi_cancel_async_work: napi_cancel_async_work,
|
|
1907
2313
|
napi_create_async_work: napi_create_async_work,
|
|
1908
2314
|
napi_delete_async_work: napi_delete_async_work,
|
|
@@ -1917,6 +2323,10 @@ function createNapiModule(options) {
|
|
|
1917
2323
|
emnapiExternalMemory.table = new WeakMap();
|
|
1918
2324
|
emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
|
|
1919
2325
|
},
|
|
2326
|
+
isSharedArrayBuffer: function (value) {
|
|
2327
|
+
return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
|
|
2328
|
+
(Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
|
|
2329
|
+
},
|
|
1920
2330
|
isDetachedArrayBuffer: function (arrayBuffer) {
|
|
1921
2331
|
if (arrayBuffer.byteLength === 0) {
|
|
1922
2332
|
try {
|
|
@@ -1959,6 +2369,7 @@ function createNapiModule(options) {
|
|
|
1959
2369
|
var pointer = _malloc(arrayBuffer.byteLength);
|
|
1960
2370
|
if (!pointer)
|
|
1961
2371
|
throw new Error('Out of memory');
|
|
2372
|
+
pointer >>>= 0;
|
|
1962
2373
|
new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
|
|
1963
2374
|
info.address = pointer;
|
|
1964
2375
|
info.ownership = emnapiExternalMemory.registry ? 0 : 1;
|
|
@@ -1980,8 +2391,7 @@ function createNapiModule(options) {
|
|
|
1980
2391
|
}
|
|
1981
2392
|
return view;
|
|
1982
2393
|
}
|
|
1983
|
-
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
|
|
1984
|
-
((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
|
|
2394
|
+
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
|
|
1985
2395
|
if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
|
|
1986
2396
|
var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
|
|
1987
2397
|
var Ctor = info.Ctor;
|
|
@@ -2005,10 +2415,59 @@ function createNapiModule(options) {
|
|
|
2005
2415
|
var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated;
|
|
2006
2416
|
return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view };
|
|
2007
2417
|
}
|
|
2008
|
-
return { address: view.byteOffset, ownership: 1, runtimeAllocated: 0, view: view };
|
|
2418
|
+
return { address: view.byteOffset, ownership: 1, runtimeAllocated: 0, view: view };
|
|
2419
|
+
}
|
|
2420
|
+
var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated;
|
|
2421
|
+
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
2422
|
+
}
|
|
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);
|
|
2009
2470
|
}
|
|
2010
|
-
var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated;
|
|
2011
|
-
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
2012
2471
|
}
|
|
2013
2472
|
};
|
|
2014
2473
|
var emnapiString = {
|
|
@@ -2114,7 +2573,7 @@ function createNapiModule(options) {
|
|
|
2114
2573
|
ptr >>>= 0;
|
|
2115
2574
|
var HEAPU8 = new Uint8Array(wasmMemory.buffer);
|
|
2116
2575
|
var end = ptr;
|
|
2117
|
-
if (length === -1) {
|
|
2576
|
+
if (length === -1 || length === 4294967295) {
|
|
2118
2577
|
for (; HEAPU8[end];)
|
|
2119
2578
|
++end;
|
|
2120
2579
|
}
|
|
@@ -2205,12 +2664,12 @@ function createNapiModule(options) {
|
|
|
2205
2664
|
return '';
|
|
2206
2665
|
ptr >>>= 0;
|
|
2207
2666
|
var end = ptr;
|
|
2208
|
-
if (length === -1) {
|
|
2209
|
-
var idx = end
|
|
2667
|
+
if (length === -1 || length === 4294967295) {
|
|
2668
|
+
var idx = end >>> 1;
|
|
2210
2669
|
var HEAPU16 = new Uint16Array(wasmMemory.buffer);
|
|
2211
2670
|
while (HEAPU16[idx])
|
|
2212
2671
|
++idx;
|
|
2213
|
-
end = idx << 1;
|
|
2672
|
+
end = (idx << 1) >>> 0;
|
|
2214
2673
|
}
|
|
2215
2674
|
else {
|
|
2216
2675
|
end = ptr + (length >>> 0) * 2;
|
|
@@ -2241,11 +2700,12 @@ function createNapiModule(options) {
|
|
|
2241
2700
|
return outPtr - startPtr;
|
|
2242
2701
|
},
|
|
2243
2702
|
newString: function (env, str, length, result, stringMaker) {
|
|
2703
|
+
length >>>= 0;
|
|
2244
2704
|
if (!env)
|
|
2245
2705
|
return 1;
|
|
2246
2706
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2247
2707
|
envObject.checkGCAccess();
|
|
2248
|
-
var autoLength = length === -1;
|
|
2708
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2249
2709
|
var sizelength = length >>> 0;
|
|
2250
2710
|
if (length !== 0) {
|
|
2251
2711
|
if (!str)
|
|
@@ -2255,18 +2715,21 @@ function createNapiModule(options) {
|
|
|
2255
2715
|
return envObject.setLastError(1);
|
|
2256
2716
|
if (!(autoLength || (sizelength <= 2147483647)))
|
|
2257
2717
|
return envObject.setLastError(1);
|
|
2718
|
+
str >>>= 0;
|
|
2258
2719
|
var strValue = stringMaker(str, autoLength, sizelength);
|
|
2720
|
+
result >>>= 0;
|
|
2259
2721
|
var value = emnapiCtx.addToCurrentScope(strValue).id;
|
|
2260
2722
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2261
|
-
HEAP_DATA_VIEW.
|
|
2723
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
2262
2724
|
return envObject.clearLastError();
|
|
2263
2725
|
},
|
|
2264
2726
|
newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
|
|
2727
|
+
length >>>= 0;
|
|
2265
2728
|
if (!env)
|
|
2266
2729
|
return 1;
|
|
2267
2730
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2268
2731
|
envObject.checkGCAccess();
|
|
2269
|
-
var autoLength = length === -1;
|
|
2732
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2270
2733
|
var sizelength = length >>> 0;
|
|
2271
2734
|
if (length !== 0) {
|
|
2272
2735
|
if (!str)
|
|
@@ -2308,6 +2771,7 @@ function createNapiModule(options) {
|
|
|
2308
2771
|
if (!handle.isArray()) {
|
|
2309
2772
|
return envObject.setLastError(8);
|
|
2310
2773
|
}
|
|
2774
|
+
result >>>= 0;
|
|
2311
2775
|
var v = handle.value.length >>> 0;
|
|
2312
2776
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2313
2777
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2326,19 +2790,55 @@ function createNapiModule(options) {
|
|
|
2326
2790
|
if (!arraybuffer)
|
|
2327
2791
|
return envObject.setLastError(1);
|
|
2328
2792
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
2329
|
-
if (!handle.isArrayBuffer()) {
|
|
2793
|
+
if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
2330
2794
|
return envObject.setLastError(1);
|
|
2331
2795
|
}
|
|
2332
2796
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2333
2797
|
if (data) {
|
|
2798
|
+
data >>>= 0;
|
|
2334
2799
|
var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
|
|
2335
|
-
HEAP_DATA_VIEW.
|
|
2800
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2336
2801
|
}
|
|
2337
2802
|
if (byte_length) {
|
|
2803
|
+
byte_length >>>= 0;
|
|
2338
2804
|
HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
|
|
2339
2805
|
}
|
|
2340
2806
|
return envObject.clearLastError();
|
|
2341
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
|
+
}
|
|
2342
2842
|
function napi_get_prototype(env, value, result) {
|
|
2343
2843
|
if (!env)
|
|
2344
2844
|
return 1;
|
|
@@ -2365,9 +2865,10 @@ function createNapiModule(options) {
|
|
|
2365
2865
|
catch (_) {
|
|
2366
2866
|
return envObject.setLastError(2);
|
|
2367
2867
|
}
|
|
2868
|
+
result >>>= 0;
|
|
2368
2869
|
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
2369
2870
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2370
|
-
HEAP_DATA_VIEW.
|
|
2871
|
+
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
2371
2872
|
return envObject.getReturnStatus();
|
|
2372
2873
|
}
|
|
2373
2874
|
catch (err) {
|
|
@@ -2389,6 +2890,7 @@ function createNapiModule(options) {
|
|
|
2389
2890
|
var v = handle.value;
|
|
2390
2891
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2391
2892
|
if (type) {
|
|
2893
|
+
type >>>= 0;
|
|
2392
2894
|
var t = void 0;
|
|
2393
2895
|
if (v instanceof Int8Array) {
|
|
2394
2896
|
t = 0;
|
|
@@ -2411,6 +2913,9 @@ function createNapiModule(options) {
|
|
|
2411
2913
|
else if (v instanceof Uint32Array) {
|
|
2412
2914
|
t = 6;
|
|
2413
2915
|
}
|
|
2916
|
+
else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
|
|
2917
|
+
t = 11;
|
|
2918
|
+
}
|
|
2414
2919
|
else if (v instanceof Float32Array) {
|
|
2415
2920
|
t = 7;
|
|
2416
2921
|
}
|
|
@@ -2428,22 +2933,25 @@ function createNapiModule(options) {
|
|
|
2428
2933
|
}
|
|
2429
2934
|
HEAP_DATA_VIEW.setInt32(type, t, true);
|
|
2430
2935
|
}
|
|
2936
|
+
v = emnapiExternalMemory.getOrUpdateMemoryView(v);
|
|
2431
2937
|
if (length) {
|
|
2938
|
+
length >>>= 0;
|
|
2432
2939
|
HEAP_DATA_VIEW.setUint32(length, v.length, true);
|
|
2433
2940
|
}
|
|
2434
|
-
var buffer;
|
|
2435
2941
|
if (data || arraybuffer) {
|
|
2436
|
-
buffer = v.buffer;
|
|
2437
2942
|
if (data) {
|
|
2943
|
+
data >>>= 0;
|
|
2438
2944
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2439
|
-
HEAP_DATA_VIEW.
|
|
2945
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2440
2946
|
}
|
|
2441
2947
|
if (arraybuffer) {
|
|
2442
|
-
|
|
2443
|
-
|
|
2948
|
+
arraybuffer >>>= 0;
|
|
2949
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2950
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2444
2951
|
}
|
|
2445
2952
|
}
|
|
2446
2953
|
if (byte_offset) {
|
|
2954
|
+
byte_offset >>>= 0;
|
|
2447
2955
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2448
2956
|
}
|
|
2449
2957
|
return envObject.clearLastError();
|
|
@@ -2474,24 +2982,26 @@ function createNapiModule(options) {
|
|
|
2474
2982
|
if (!handle.isDataView()) {
|
|
2475
2983
|
return envObject.setLastError(1);
|
|
2476
2984
|
}
|
|
2477
|
-
var v = handle.value;
|
|
2985
|
+
var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
|
|
2478
2986
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2479
2987
|
if (byte_length) {
|
|
2988
|
+
byte_length >>>= 0;
|
|
2480
2989
|
HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
|
|
2481
2990
|
}
|
|
2482
|
-
var buffer;
|
|
2483
2991
|
if (data || arraybuffer) {
|
|
2484
|
-
buffer = v.buffer;
|
|
2485
2992
|
if (data) {
|
|
2993
|
+
data >>>= 0;
|
|
2486
2994
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2487
|
-
HEAP_DATA_VIEW.
|
|
2995
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2488
2996
|
}
|
|
2489
2997
|
if (arraybuffer) {
|
|
2490
|
-
|
|
2491
|
-
|
|
2998
|
+
arraybuffer >>>= 0;
|
|
2999
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
3000
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2492
3001
|
}
|
|
2493
3002
|
}
|
|
2494
3003
|
if (byte_offset) {
|
|
3004
|
+
byte_offset >>>= 0;
|
|
2495
3005
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2496
3006
|
}
|
|
2497
3007
|
return envObject.clearLastError();
|
|
@@ -2516,6 +3026,7 @@ function createNapiModule(options) {
|
|
|
2516
3026
|
if (!handle.isDate()) {
|
|
2517
3027
|
return envObject.setLastError(1);
|
|
2518
3028
|
}
|
|
3029
|
+
result >>>= 0;
|
|
2519
3030
|
v = handle.value.valueOf();
|
|
2520
3031
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2521
3032
|
HEAP_DATA_VIEW.setFloat64(result, v, true);
|
|
@@ -2539,6 +3050,7 @@ function createNapiModule(options) {
|
|
|
2539
3050
|
if (typeof handle.value !== 'boolean') {
|
|
2540
3051
|
return envObject.setLastError(7);
|
|
2541
3052
|
}
|
|
3053
|
+
result >>>= 0;
|
|
2542
3054
|
var r = handle.value ? 1 : 0;
|
|
2543
3055
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2544
3056
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -2557,6 +3069,7 @@ function createNapiModule(options) {
|
|
|
2557
3069
|
if (typeof handle.value !== 'number') {
|
|
2558
3070
|
return envObject.setLastError(6);
|
|
2559
3071
|
}
|
|
3072
|
+
result >>>= 0;
|
|
2560
3073
|
var r = handle.value;
|
|
2561
3074
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2562
3075
|
HEAP_DATA_VIEW.setFloat64(result, r, true);
|
|
@@ -2581,6 +3094,8 @@ function createNapiModule(options) {
|
|
|
2581
3094
|
if (typeof numberValue !== 'bigint') {
|
|
2582
3095
|
return envObject.setLastError(6);
|
|
2583
3096
|
}
|
|
3097
|
+
lossless >>>= 0;
|
|
3098
|
+
result >>>= 0;
|
|
2584
3099
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2585
3100
|
if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
|
|
2586
3101
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2617,6 +3132,8 @@ function createNapiModule(options) {
|
|
|
2617
3132
|
if (typeof numberValue !== 'bigint') {
|
|
2618
3133
|
return envObject.setLastError(6);
|
|
2619
3134
|
}
|
|
3135
|
+
lossless >>>= 0;
|
|
3136
|
+
result >>>= 0;
|
|
2620
3137
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2621
3138
|
if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
|
|
2622
3139
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2648,8 +3165,12 @@ function createNapiModule(options) {
|
|
|
2648
3165
|
return envObject.setLastError(17);
|
|
2649
3166
|
}
|
|
2650
3167
|
var isMinus = handle.value < BigInt(0);
|
|
3168
|
+
sign_bit >>>= 0;
|
|
3169
|
+
words >>>= 0;
|
|
3170
|
+
word_count >>>= 0;
|
|
2651
3171
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2652
3172
|
var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
|
|
3173
|
+
word_count_int >>>= 0;
|
|
2653
3174
|
var wordCount = 0;
|
|
2654
3175
|
var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
|
|
2655
3176
|
while (bigintValue !== BigInt(0)) {
|
|
@@ -2697,9 +3218,10 @@ function createNapiModule(options) {
|
|
|
2697
3218
|
if (!handle.isExternal()) {
|
|
2698
3219
|
return envObject.setLastError(1);
|
|
2699
3220
|
}
|
|
3221
|
+
result >>>= 0;
|
|
2700
3222
|
var p = handle.data();
|
|
2701
3223
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2702
|
-
HEAP_DATA_VIEW.
|
|
3224
|
+
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
2703
3225
|
return envObject.clearLastError();
|
|
2704
3226
|
}
|
|
2705
3227
|
function napi_get_value_int32(env, value, result) {
|
|
@@ -2715,6 +3237,7 @@ function createNapiModule(options) {
|
|
|
2715
3237
|
if (typeof handle.value !== 'number') {
|
|
2716
3238
|
return envObject.setLastError(6);
|
|
2717
3239
|
}
|
|
3240
|
+
result >>>= 0;
|
|
2718
3241
|
var v = new Int32Array([handle.value])[0];
|
|
2719
3242
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2720
3243
|
HEAP_DATA_VIEW.setInt32(result, v, true);
|
|
@@ -2734,6 +3257,7 @@ function createNapiModule(options) {
|
|
|
2734
3257
|
return envObject.setLastError(6);
|
|
2735
3258
|
}
|
|
2736
3259
|
var numberValue = handle.value;
|
|
3260
|
+
result >>>= 0;
|
|
2737
3261
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2738
3262
|
if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
|
|
2739
3263
|
HEAP_DATA_VIEW.setInt32(result, 0, true);
|
|
@@ -2759,6 +3283,9 @@ function createNapiModule(options) {
|
|
|
2759
3283
|
envObject.checkGCAccess();
|
|
2760
3284
|
if (!value)
|
|
2761
3285
|
return envObject.setLastError(1);
|
|
3286
|
+
result >>>= 0;
|
|
3287
|
+
buf >>>= 0;
|
|
3288
|
+
buf_size >>>= 0;
|
|
2762
3289
|
buf_size = buf_size >>> 0;
|
|
2763
3290
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2764
3291
|
if (typeof handle.value !== 'string') {
|
|
@@ -2795,6 +3322,9 @@ function createNapiModule(options) {
|
|
|
2795
3322
|
envObject.checkGCAccess();
|
|
2796
3323
|
if (!value)
|
|
2797
3324
|
return envObject.setLastError(1);
|
|
3325
|
+
result >>>= 0;
|
|
3326
|
+
buf >>>= 0;
|
|
3327
|
+
buf_size >>>= 0;
|
|
2798
3328
|
buf_size = buf_size >>> 0;
|
|
2799
3329
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2800
3330
|
if (typeof handle.value !== 'string') {
|
|
@@ -2825,6 +3355,9 @@ function createNapiModule(options) {
|
|
|
2825
3355
|
envObject.checkGCAccess();
|
|
2826
3356
|
if (!value)
|
|
2827
3357
|
return envObject.setLastError(1);
|
|
3358
|
+
result >>>= 0;
|
|
3359
|
+
buf >>>= 0;
|
|
3360
|
+
buf_size >>>= 0;
|
|
2828
3361
|
buf_size = buf_size >>> 0;
|
|
2829
3362
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2830
3363
|
if (typeof handle.value !== 'string') {
|
|
@@ -2860,6 +3393,7 @@ function createNapiModule(options) {
|
|
|
2860
3393
|
if (typeof handle.value !== 'number') {
|
|
2861
3394
|
return envObject.setLastError(6);
|
|
2862
3395
|
}
|
|
3396
|
+
result >>>= 0;
|
|
2863
3397
|
var v = new Uint32Array([handle.value])[0];
|
|
2864
3398
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2865
3399
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2885,7 +3419,8 @@ function createNapiModule(options) {
|
|
|
2885
3419
|
napi_get_value_string_latin1: napi_get_value_string_latin1,
|
|
2886
3420
|
napi_get_value_string_utf16: napi_get_value_string_utf16,
|
|
2887
3421
|
napi_get_value_string_utf8: napi_get_value_string_utf8,
|
|
2888
|
-
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
|
|
2889
3424
|
});
|
|
2890
3425
|
function napi_create_int32(env, value, result) {
|
|
2891
3426
|
if (!env)
|
|
@@ -2894,9 +3429,10 @@ function createNapiModule(options) {
|
|
|
2894
3429
|
envObject.checkGCAccess();
|
|
2895
3430
|
if (!result)
|
|
2896
3431
|
return envObject.setLastError(1);
|
|
3432
|
+
result >>>= 0;
|
|
2897
3433
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2898
3434
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2899
|
-
HEAP_DATA_VIEW.
|
|
3435
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
2900
3436
|
return envObject.clearLastError();
|
|
2901
3437
|
}
|
|
2902
3438
|
function napi_create_uint32(env, value, result) {
|
|
@@ -2906,9 +3442,10 @@ function createNapiModule(options) {
|
|
|
2906
3442
|
envObject.checkGCAccess();
|
|
2907
3443
|
if (!result)
|
|
2908
3444
|
return envObject.setLastError(1);
|
|
3445
|
+
result >>>= 0;
|
|
2909
3446
|
var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
|
|
2910
3447
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2911
|
-
HEAP_DATA_VIEW.
|
|
3448
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
2912
3449
|
return envObject.clearLastError();
|
|
2913
3450
|
}
|
|
2914
3451
|
function napi_create_int64(env, low, high, result) {
|
|
@@ -2921,8 +3458,9 @@ function createNapiModule(options) {
|
|
|
2921
3458
|
return envObject.setLastError(1);
|
|
2922
3459
|
value = Number(low);
|
|
2923
3460
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3461
|
+
high >>>= 0;
|
|
2924
3462
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2925
|
-
HEAP_DATA_VIEW.
|
|
3463
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
2926
3464
|
return envObject.clearLastError();
|
|
2927
3465
|
}
|
|
2928
3466
|
function napi_create_double(env, value, result) {
|
|
@@ -2932,9 +3470,10 @@ function createNapiModule(options) {
|
|
|
2932
3470
|
envObject.checkGCAccess();
|
|
2933
3471
|
if (!result)
|
|
2934
3472
|
return envObject.setLastError(1);
|
|
3473
|
+
result >>>= 0;
|
|
2935
3474
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2936
3475
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2937
|
-
HEAP_DATA_VIEW.
|
|
3476
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
2938
3477
|
return envObject.clearLastError();
|
|
2939
3478
|
}
|
|
2940
3479
|
function napi_create_string_latin1(env, str, length, result) {
|
|
@@ -3002,8 +3541,9 @@ function createNapiModule(options) {
|
|
|
3002
3541
|
return envObject.setLastError(1);
|
|
3003
3542
|
value = low;
|
|
3004
3543
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3544
|
+
high >>>= 0;
|
|
3005
3545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3006
|
-
HEAP_DATA_VIEW.
|
|
3546
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3007
3547
|
return envObject.clearLastError();
|
|
3008
3548
|
}
|
|
3009
3549
|
function napi_create_bigint_uint64(env, low, high, result) {
|
|
@@ -3019,8 +3559,9 @@ function createNapiModule(options) {
|
|
|
3019
3559
|
return envObject.setLastError(1);
|
|
3020
3560
|
value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
|
|
3021
3561
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3562
|
+
high >>>= 0;
|
|
3022
3563
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3023
|
-
HEAP_DATA_VIEW.
|
|
3564
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3024
3565
|
return envObject.clearLastError();
|
|
3025
3566
|
}
|
|
3026
3567
|
function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
|
|
@@ -3040,6 +3581,8 @@ function createNapiModule(options) {
|
|
|
3040
3581
|
}
|
|
3041
3582
|
if (!result)
|
|
3042
3583
|
return envObject.setLastError(1);
|
|
3584
|
+
words >>>= 0;
|
|
3585
|
+
word_count >>>= 0;
|
|
3043
3586
|
word_count = word_count >>> 0;
|
|
3044
3587
|
if (word_count > 2147483647) {
|
|
3045
3588
|
return envObject.setLastError(1);
|
|
@@ -3056,8 +3599,9 @@ function createNapiModule(options) {
|
|
|
3056
3599
|
value += wordi << BigInt(64 * i);
|
|
3057
3600
|
}
|
|
3058
3601
|
value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
|
|
3602
|
+
result >>>= 0;
|
|
3059
3603
|
v = emnapiCtx.addToCurrentScope(value).id;
|
|
3060
|
-
HEAP_DATA_VIEW.
|
|
3604
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3061
3605
|
return envObject.getReturnStatus();
|
|
3062
3606
|
}
|
|
3063
3607
|
catch (err) {
|
|
@@ -3084,6 +3628,7 @@ function createNapiModule(options) {
|
|
|
3084
3628
|
node_api_create_property_key_utf8: node_api_create_property_key_utf8
|
|
3085
3629
|
});
|
|
3086
3630
|
function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
|
|
3631
|
+
utf8name >>>= 0;
|
|
3087
3632
|
var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
|
|
3088
3633
|
var f;
|
|
3089
3634
|
var napiCallback = (wasmTable.get(cb));
|
|
@@ -3224,9 +3769,10 @@ function createNapiModule(options) {
|
|
|
3224
3769
|
if (!finalize_cb)
|
|
3225
3770
|
return envObject.setLastError(1);
|
|
3226
3771
|
reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
|
|
3772
|
+
result >>>= 0;
|
|
3227
3773
|
referenceId = reference.id;
|
|
3228
3774
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3229
|
-
HEAP_DATA_VIEW.
|
|
3775
|
+
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
3230
3776
|
}
|
|
3231
3777
|
else {
|
|
3232
3778
|
if (finalize_cb) {
|
|
@@ -3272,9 +3818,10 @@ function createNapiModule(options) {
|
|
|
3272
3818
|
if (!ref)
|
|
3273
3819
|
return envObject.setLastError(1);
|
|
3274
3820
|
if (result) {
|
|
3821
|
+
result >>>= 0;
|
|
3275
3822
|
data = ref.data();
|
|
3276
3823
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3277
|
-
HEAP_DATA_VIEW.
|
|
3824
|
+
HEAP_DATA_VIEW.setUint32(result, data, true);
|
|
3278
3825
|
}
|
|
3279
3826
|
if (action === 1) {
|
|
3280
3827
|
binding.wrapped = 0;
|
|
@@ -3308,12 +3855,15 @@ function createNapiModule(options) {
|
|
|
3308
3855
|
return envObject.setLastError(1);
|
|
3309
3856
|
if (!constructor)
|
|
3310
3857
|
return envObject.setLastError(1);
|
|
3858
|
+
length >>>= 0;
|
|
3859
|
+
properties >>>= 0;
|
|
3860
|
+
property_count >>>= 0;
|
|
3311
3861
|
property_count = property_count >>> 0;
|
|
3312
3862
|
if (property_count > 0) {
|
|
3313
3863
|
if (!properties)
|
|
3314
3864
|
return envObject.setLastError(1);
|
|
3315
3865
|
}
|
|
3316
|
-
if ((length
|
|
3866
|
+
if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
|
|
3317
3867
|
return envObject.setLastError(1);
|
|
3318
3868
|
}
|
|
3319
3869
|
var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
|
|
@@ -3324,14 +3874,15 @@ function createNapiModule(options) {
|
|
|
3324
3874
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3325
3875
|
for (var i = 0; i < property_count; i++) {
|
|
3326
3876
|
propPtr = properties + (i * (4 * 8));
|
|
3327
|
-
var utf8Name = HEAP_DATA_VIEW.
|
|
3328
|
-
var name_1 = HEAP_DATA_VIEW.
|
|
3329
|
-
var method = HEAP_DATA_VIEW.
|
|
3330
|
-
var getter = HEAP_DATA_VIEW.
|
|
3331
|
-
var setter = HEAP_DATA_VIEW.
|
|
3332
|
-
var value = HEAP_DATA_VIEW.
|
|
3877
|
+
var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
|
|
3878
|
+
var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
|
|
3879
|
+
var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
|
|
3880
|
+
var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
|
|
3881
|
+
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
3882
|
+
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
3333
3883
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
3334
|
-
|
|
3884
|
+
attributes >>>= 0;
|
|
3885
|
+
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
3335
3886
|
if (utf8Name) {
|
|
3336
3887
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
3337
3888
|
}
|
|
@@ -3352,7 +3903,8 @@ function createNapiModule(options) {
|
|
|
3352
3903
|
}
|
|
3353
3904
|
var valueHandle = emnapiCtx.addToCurrentScope(F);
|
|
3354
3905
|
valueHandleId = valueHandle.id;
|
|
3355
|
-
|
|
3906
|
+
result >>>= 0;
|
|
3907
|
+
HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
|
|
3356
3908
|
return envObject.getReturnStatus();
|
|
3357
3909
|
}
|
|
3358
3910
|
catch (err) {
|
|
@@ -3387,6 +3939,7 @@ function createNapiModule(options) {
|
|
|
3387
3939
|
if (!(value.isObject() || value.isFunction())) {
|
|
3388
3940
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
|
|
3389
3941
|
}
|
|
3942
|
+
type_tag >>>= 0;
|
|
3390
3943
|
if (!type_tag) {
|
|
3391
3944
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
|
|
3392
3945
|
}
|
|
@@ -3431,6 +3984,7 @@ function createNapiModule(options) {
|
|
|
3431
3984
|
}
|
|
3432
3985
|
var binding = envObject.getObjectBinding(value.value);
|
|
3433
3986
|
if (binding.tag !== null) {
|
|
3987
|
+
type_tag >>>= 0;
|
|
3434
3988
|
var tag = binding.tag;
|
|
3435
3989
|
var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
|
|
3436
3990
|
ret = (tag[0] === typeTag[0] &&
|
|
@@ -3441,6 +3995,7 @@ function createNapiModule(options) {
|
|
|
3441
3995
|
else {
|
|
3442
3996
|
ret = false;
|
|
3443
3997
|
}
|
|
3998
|
+
result >>>= 0;
|
|
3444
3999
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3445
4000
|
HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
|
|
3446
4001
|
return envObject.getReturnStatus();
|
|
@@ -3468,11 +4023,15 @@ function createNapiModule(options) {
|
|
|
3468
4023
|
}
|
|
3469
4024
|
var handle = handleResult.handle;
|
|
3470
4025
|
var ownership = !result ? 0 : 1;
|
|
4026
|
+
finalize_data >>>= 0;
|
|
4027
|
+
finalize_cb >>>= 0;
|
|
4028
|
+
finalize_hint >>>= 0;
|
|
3471
4029
|
var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
|
|
3472
4030
|
if (result) {
|
|
4031
|
+
result >>>= 0;
|
|
3473
4032
|
var referenceId = reference.id;
|
|
3474
4033
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3475
|
-
HEAP_DATA_VIEW.
|
|
4034
|
+
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
3476
4035
|
}
|
|
3477
4036
|
return envObject.clearLastError();
|
|
3478
4037
|
}
|
|
@@ -3508,6 +4067,9 @@ function createNapiModule(options) {
|
|
|
3508
4067
|
try {
|
|
3509
4068
|
if (!result)
|
|
3510
4069
|
return envObject.setLastError(1);
|
|
4070
|
+
byte_length >>>= 0;
|
|
4071
|
+
external_data >>>= 0;
|
|
4072
|
+
result >>>= 0;
|
|
3511
4073
|
byte_length = byte_length >>> 0;
|
|
3512
4074
|
if (!external_data) {
|
|
3513
4075
|
byte_length = 0;
|
|
@@ -3559,6 +4121,12 @@ function createNapiModule(options) {
|
|
|
3559
4121
|
case -1:
|
|
3560
4122
|
viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 };
|
|
3561
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;
|
|
3562
4130
|
case -2: {
|
|
3563
4131
|
if (!emnapiCtx.feature.Buffer) {
|
|
3564
4132
|
throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
|
|
@@ -3587,7 +4155,7 @@ function createNapiModule(options) {
|
|
|
3587
4155
|
}
|
|
3588
4156
|
value = handle.id;
|
|
3589
4157
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3590
|
-
HEAP_DATA_VIEW.
|
|
4158
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3591
4159
|
return envObject.getReturnStatus();
|
|
3592
4160
|
}
|
|
3593
4161
|
catch (err) {
|
|
@@ -3608,11 +4176,11 @@ function createNapiModule(options) {
|
|
|
3608
4176
|
offset = offset !== null && offset !== void 0 ? offset : 0;
|
|
3609
4177
|
offset = offset >>> 0;
|
|
3610
4178
|
var view;
|
|
3611
|
-
if (arrayBufferOrView instanceof ArrayBuffer) {
|
|
4179
|
+
if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
3612
4180
|
var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
|
|
3613
4181
|
if (!pointer)
|
|
3614
4182
|
throw new Error('Unknown ArrayBuffer address');
|
|
3615
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4183
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3616
4184
|
len = arrayBufferOrView.byteLength - offset;
|
|
3617
4185
|
}
|
|
3618
4186
|
len = len >>> 0;
|
|
@@ -3634,7 +4202,7 @@ function createNapiModule(options) {
|
|
|
3634
4202
|
var pointer = viewPointerInfo.address;
|
|
3635
4203
|
if (!pointer)
|
|
3636
4204
|
throw new Error('Unknown ArrayBuffer address');
|
|
3637
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4205
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3638
4206
|
len = latestView.byteLength - offset;
|
|
3639
4207
|
}
|
|
3640
4208
|
len = len >>> 0;
|
|
@@ -3666,16 +4234,20 @@ function createNapiModule(options) {
|
|
|
3666
4234
|
try {
|
|
3667
4235
|
if (!arraybuffer_or_view)
|
|
3668
4236
|
return envObject.setLastError(1);
|
|
4237
|
+
arraybuffer_or_view >>>= 0;
|
|
4238
|
+
offset >>>= 0;
|
|
4239
|
+
len >>>= 0;
|
|
3669
4240
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3670
|
-
var handleId = HEAP_DATA_VIEW.
|
|
4241
|
+
var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
|
|
3671
4242
|
var handle = envObject.ctx.handleStore.get(handleId);
|
|
3672
|
-
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView()) {
|
|
4243
|
+
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
3673
4244
|
return envObject.setLastError(1);
|
|
3674
4245
|
}
|
|
3675
4246
|
var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
|
|
3676
4247
|
if (handle.value !== ret) {
|
|
4248
|
+
arraybuffer_or_view >>>= 0;
|
|
3677
4249
|
v = envObject.ensureHandleId(ret);
|
|
3678
|
-
HEAP_DATA_VIEW.
|
|
4250
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
|
|
3679
4251
|
}
|
|
3680
4252
|
return envObject.getReturnStatus();
|
|
3681
4253
|
}
|
|
@@ -3688,7 +4260,7 @@ function createNapiModule(options) {
|
|
|
3688
4260
|
var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer;
|
|
3689
4261
|
var isDataView = arrayBufferOrView instanceof DataView;
|
|
3690
4262
|
var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView;
|
|
3691
|
-
if (!isArrayBuffer && !isTypedArray && !isDataView) {
|
|
4263
|
+
if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
3692
4264
|
throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter');
|
|
3693
4265
|
}
|
|
3694
4266
|
var info;
|
|
@@ -3727,13 +4299,16 @@ function createNapiModule(options) {
|
|
|
3727
4299
|
p = info.address;
|
|
3728
4300
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3729
4301
|
if (address) {
|
|
3730
|
-
|
|
4302
|
+
address >>>= 0;
|
|
4303
|
+
HEAP_DATA_VIEW.setUint32(address, p, true);
|
|
3731
4304
|
}
|
|
3732
4305
|
if (ownership) {
|
|
4306
|
+
ownership >>>= 0;
|
|
3733
4307
|
ownershipOut = info.ownership;
|
|
3734
4308
|
HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
|
|
3735
4309
|
}
|
|
3736
4310
|
if (runtime_allocated) {
|
|
4311
|
+
runtime_allocated >>>= 0;
|
|
3737
4312
|
runtimeAllocated = info.runtimeAllocated;
|
|
3738
4313
|
HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
|
|
3739
4314
|
}
|
|
@@ -3759,22 +4334,102 @@ function createNapiModule(options) {
|
|
|
3759
4334
|
}
|
|
3760
4335
|
var versions = runtimeVersion.split('.')
|
|
3761
4336
|
.map(function (n) { return Number(n); });
|
|
4337
|
+
version >>>= 0;
|
|
3762
4338
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3763
4339
|
HEAP_DATA_VIEW.setUint32(version, versions[0], true);
|
|
3764
4340
|
HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
|
|
3765
4341
|
HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
|
|
3766
4342
|
return envObject.clearLastError();
|
|
3767
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
|
+
}
|
|
3768
4419
|
var emnapiMod = Object.freeze({
|
|
3769
4420
|
__proto__: null,
|
|
4421
|
+
$emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
|
|
3770
4422
|
$emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
|
|
3771
4423
|
$emnapiSyncMemory: $emnapiSyncMemory,
|
|
4424
|
+
emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
|
|
3772
4425
|
emnapi_create_memory_view: emnapi_create_memory_view,
|
|
4426
|
+
emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
|
|
3773
4427
|
emnapi_get_memory_address: emnapi_get_memory_address,
|
|
3774
4428
|
emnapi_get_runtime_version: emnapi_get_runtime_version,
|
|
3775
4429
|
emnapi_is_node_binding_available: emnapi_is_node_binding_available,
|
|
3776
4430
|
emnapi_is_support_bigint: emnapi_is_support_bigint,
|
|
3777
4431
|
emnapi_is_support_weakref: emnapi_is_support_weakref,
|
|
4432
|
+
emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
|
|
3778
4433
|
emnapi_sync_memory: emnapi_sync_memory
|
|
3779
4434
|
});
|
|
3780
4435
|
function napi_create_array(env, result) {
|
|
@@ -3784,9 +4439,10 @@ function createNapiModule(options) {
|
|
|
3784
4439
|
envObject.checkGCAccess();
|
|
3785
4440
|
if (!result)
|
|
3786
4441
|
return envObject.setLastError(1);
|
|
4442
|
+
result >>>= 0;
|
|
3787
4443
|
var value = emnapiCtx.addToCurrentScope([]).id;
|
|
3788
4444
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3789
|
-
HEAP_DATA_VIEW.
|
|
4445
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3790
4446
|
return envObject.clearLastError();
|
|
3791
4447
|
}
|
|
3792
4448
|
function napi_create_array_with_length(env, length, result) {
|
|
@@ -3796,19 +4452,23 @@ function createNapiModule(options) {
|
|
|
3796
4452
|
envObject.checkGCAccess();
|
|
3797
4453
|
if (!result)
|
|
3798
4454
|
return envObject.setLastError(1);
|
|
4455
|
+
length >>>= 0;
|
|
4456
|
+
result >>>= 0;
|
|
3799
4457
|
length = length >>> 0;
|
|
3800
4458
|
var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
|
|
3801
4459
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3802
|
-
HEAP_DATA_VIEW.
|
|
4460
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3803
4461
|
return envObject.clearLastError();
|
|
3804
4462
|
}
|
|
3805
|
-
function emnapiCreateArrayBuffer(byte_length, data) {
|
|
4463
|
+
function emnapiCreateArrayBuffer(byte_length, data, shared) {
|
|
4464
|
+
byte_length >>>= 0;
|
|
3806
4465
|
byte_length = byte_length >>> 0;
|
|
3807
|
-
var arrayBuffer = new ArrayBuffer(byte_length);
|
|
4466
|
+
var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
|
|
3808
4467
|
if (data) {
|
|
4468
|
+
data >>>= 0;
|
|
3809
4469
|
var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
|
|
3810
4470
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3811
|
-
HEAP_DATA_VIEW.
|
|
4471
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
3812
4472
|
}
|
|
3813
4473
|
return arrayBuffer;
|
|
3814
4474
|
}
|
|
@@ -3826,10 +4486,37 @@ function createNapiModule(options) {
|
|
|
3826
4486
|
try {
|
|
3827
4487
|
if (!result)
|
|
3828
4488
|
return envObject.setLastError(1);
|
|
3829
|
-
|
|
4489
|
+
result >>>= 0;
|
|
4490
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
|
|
4491
|
+
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
4492
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4493
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4494
|
+
return envObject.getReturnStatus();
|
|
4495
|
+
}
|
|
4496
|
+
catch (err) {
|
|
4497
|
+
envObject.tryCatch.setError(err);
|
|
4498
|
+
return envObject.setLastError(10);
|
|
4499
|
+
}
|
|
4500
|
+
}
|
|
4501
|
+
function node_api_create_sharedarraybuffer(env, byte_length, data, result) {
|
|
4502
|
+
var value;
|
|
4503
|
+
if (!env)
|
|
4504
|
+
return 1;
|
|
4505
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4506
|
+
envObject.checkGCAccess();
|
|
4507
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4508
|
+
return envObject.setLastError(10);
|
|
4509
|
+
if (!envObject.canCallIntoJs())
|
|
4510
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4511
|
+
envObject.clearLastError();
|
|
4512
|
+
try {
|
|
4513
|
+
if (!result)
|
|
4514
|
+
return envObject.setLastError(1);
|
|
4515
|
+
result >>>= 0;
|
|
4516
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
|
|
3830
4517
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
3831
4518
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3832
|
-
HEAP_DATA_VIEW.
|
|
4519
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3833
4520
|
return envObject.getReturnStatus();
|
|
3834
4521
|
}
|
|
3835
4522
|
catch (err) {
|
|
@@ -3851,9 +4538,10 @@ function createNapiModule(options) {
|
|
|
3851
4538
|
try {
|
|
3852
4539
|
if (!result)
|
|
3853
4540
|
return envObject.setLastError(1);
|
|
4541
|
+
result >>>= 0;
|
|
3854
4542
|
value = emnapiCtx.addToCurrentScope(new Date(time)).id;
|
|
3855
4543
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3856
|
-
HEAP_DATA_VIEW.
|
|
4544
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3857
4545
|
return envObject.getReturnStatus();
|
|
3858
4546
|
}
|
|
3859
4547
|
catch (err) {
|
|
@@ -3882,9 +4570,10 @@ function createNapiModule(options) {
|
|
|
3882
4570
|
if (finalize_cb) {
|
|
3883
4571
|
emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
|
|
3884
4572
|
}
|
|
4573
|
+
result >>>= 0;
|
|
3885
4574
|
value = externalHandle.id;
|
|
3886
4575
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3887
|
-
HEAP_DATA_VIEW.
|
|
4576
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3888
4577
|
return envObject.clearLastError();
|
|
3889
4578
|
}
|
|
3890
4579
|
catch (err) {
|
|
@@ -3906,6 +4595,9 @@ function createNapiModule(options) {
|
|
|
3906
4595
|
try {
|
|
3907
4596
|
if (!result)
|
|
3908
4597
|
return envObject.setLastError(1);
|
|
4598
|
+
byte_length >>>= 0;
|
|
4599
|
+
external_data >>>= 0;
|
|
4600
|
+
result >>>= 0;
|
|
3909
4601
|
byte_length = byte_length >>> 0;
|
|
3910
4602
|
if (!external_data) {
|
|
3911
4603
|
byte_length = 0;
|
|
@@ -3948,7 +4640,61 @@ function createNapiModule(options) {
|
|
|
3948
4640
|
}
|
|
3949
4641
|
value = handle.id;
|
|
3950
4642
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3951
|
-
HEAP_DATA_VIEW.
|
|
4643
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4644
|
+
return envObject.getReturnStatus();
|
|
4645
|
+
}
|
|
4646
|
+
catch (err) {
|
|
4647
|
+
envObject.tryCatch.setError(err);
|
|
4648
|
+
return envObject.setLastError(10);
|
|
4649
|
+
}
|
|
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);
|
|
3952
4698
|
return envObject.getReturnStatus();
|
|
3953
4699
|
}
|
|
3954
4700
|
catch (err) {
|
|
@@ -3963,9 +4709,55 @@ function createNapiModule(options) {
|
|
|
3963
4709
|
envObject.checkGCAccess();
|
|
3964
4710
|
if (!result)
|
|
3965
4711
|
return envObject.setLastError(1);
|
|
4712
|
+
result >>>= 0;
|
|
3966
4713
|
var value = emnapiCtx.addToCurrentScope({}).id;
|
|
3967
4714
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3968
|
-
HEAP_DATA_VIEW.
|
|
4715
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4716
|
+
return envObject.clearLastError();
|
|
4717
|
+
}
|
|
4718
|
+
function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
|
|
4719
|
+
if (!env)
|
|
4720
|
+
return 1;
|
|
4721
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4722
|
+
envObject.checkGCAccess();
|
|
4723
|
+
if (!result)
|
|
4724
|
+
return envObject.setLastError(1);
|
|
4725
|
+
property_count >>>= 0;
|
|
4726
|
+
property_count = property_count >>> 0;
|
|
4727
|
+
if (property_count > 0) {
|
|
4728
|
+
if (!property_names)
|
|
4729
|
+
return envObject.setLastError(1);
|
|
4730
|
+
if (!property_values)
|
|
4731
|
+
return envObject.setLastError(1);
|
|
4732
|
+
}
|
|
4733
|
+
var v8_prototype_or_null = prototype_or_null
|
|
4734
|
+
? emnapiCtx.handleStore.get(prototype_or_null).value
|
|
4735
|
+
: null;
|
|
4736
|
+
var properties = {};
|
|
4737
|
+
property_names >>>= 0;
|
|
4738
|
+
property_values >>>= 0;
|
|
4739
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4740
|
+
for (var i = 0; i < property_count; i++) {
|
|
4741
|
+
var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
|
|
4742
|
+
if (!(typeof name_value === "string" || typeof name_value === "symbol"))
|
|
4743
|
+
return envObject.setLastError(4);
|
|
4744
|
+
properties[name_value] = {
|
|
4745
|
+
value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
|
|
4746
|
+
writable: true,
|
|
4747
|
+
enumerable: true,
|
|
4748
|
+
configurable: true
|
|
4749
|
+
};
|
|
4750
|
+
}
|
|
4751
|
+
var obj;
|
|
4752
|
+
try {
|
|
4753
|
+
obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties);
|
|
4754
|
+
}
|
|
4755
|
+
catch (_) {
|
|
4756
|
+
return envObject.setLastError(9);
|
|
4757
|
+
}
|
|
4758
|
+
var value = emnapiCtx.addToCurrentScope(obj).id;
|
|
4759
|
+
result >>>= 0;
|
|
4760
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3969
4761
|
return envObject.clearLastError();
|
|
3970
4762
|
}
|
|
3971
4763
|
function napi_create_symbol(env, description, result) {
|
|
@@ -3975,10 +4767,11 @@ function createNapiModule(options) {
|
|
|
3975
4767
|
envObject.checkGCAccess();
|
|
3976
4768
|
if (!result)
|
|
3977
4769
|
return envObject.setLastError(1);
|
|
4770
|
+
result >>>= 0;
|
|
3978
4771
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3979
4772
|
if (!description) {
|
|
3980
4773
|
var value = emnapiCtx.addToCurrentScope(Symbol()).id;
|
|
3981
|
-
HEAP_DATA_VIEW.
|
|
4774
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3982
4775
|
}
|
|
3983
4776
|
else {
|
|
3984
4777
|
var handle = emnapiCtx.handleStore.get(description);
|
|
@@ -3987,7 +4780,7 @@ function createNapiModule(options) {
|
|
|
3987
4780
|
return envObject.setLastError(3);
|
|
3988
4781
|
}
|
|
3989
4782
|
var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id;
|
|
3990
|
-
HEAP_DATA_VIEW.
|
|
4783
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3991
4784
|
}
|
|
3992
4785
|
return envObject.clearLastError();
|
|
3993
4786
|
}
|
|
@@ -4008,10 +4801,9 @@ function createNapiModule(options) {
|
|
|
4008
4801
|
if (!result)
|
|
4009
4802
|
return envObject.setLastError(1);
|
|
4010
4803
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
4011
|
-
if (!handle.isArrayBuffer()) {
|
|
4012
|
-
return envObject.setLastError(1);
|
|
4013
|
-
}
|
|
4014
4804
|
var buffer = handle.value;
|
|
4805
|
+
byte_offset >>>= 0;
|
|
4806
|
+
length >>>= 0;
|
|
4015
4807
|
var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
|
|
4016
4808
|
var _a;
|
|
4017
4809
|
byte_offset = byte_offset >>> 0;
|
|
@@ -4042,36 +4834,47 @@ function createNapiModule(options) {
|
|
|
4042
4834
|
});
|
|
4043
4835
|
}
|
|
4044
4836
|
}
|
|
4837
|
+
result >>>= 0;
|
|
4045
4838
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4046
4839
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4047
|
-
HEAP_DATA_VIEW.
|
|
4840
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4048
4841
|
return envObject.getReturnStatus();
|
|
4049
4842
|
};
|
|
4050
|
-
|
|
4051
|
-
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
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);
|
|
4075
4878
|
}
|
|
4076
4879
|
}
|
|
4077
4880
|
catch (err) {
|
|
@@ -4098,18 +4901,21 @@ function createNapiModule(options) {
|
|
|
4098
4901
|
if (!Buffer) {
|
|
4099
4902
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
|
|
4100
4903
|
}
|
|
4904
|
+
result >>>= 0;
|
|
4101
4905
|
var buffer = void 0;
|
|
4906
|
+
size >>>= 0;
|
|
4102
4907
|
size = size >>> 0;
|
|
4103
4908
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4104
4909
|
if (!data || (size === 0)) {
|
|
4105
4910
|
buffer = Buffer.alloc(size);
|
|
4106
4911
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4107
|
-
HEAP_DATA_VIEW.
|
|
4912
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4108
4913
|
}
|
|
4109
4914
|
else {
|
|
4110
4915
|
pointer = _malloc(size);
|
|
4111
4916
|
if (!pointer)
|
|
4112
4917
|
throw new Error('Out of memory');
|
|
4918
|
+
pointer >>>= 0;
|
|
4113
4919
|
new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
|
|
4114
4920
|
var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
|
|
4115
4921
|
var viewDescriptor = {
|
|
@@ -4122,8 +4928,9 @@ function createNapiModule(options) {
|
|
|
4122
4928
|
emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor);
|
|
4123
4929
|
(_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
|
|
4124
4930
|
value = emnapiCtx.addToCurrentScope(buffer_1).id;
|
|
4125
|
-
HEAP_DATA_VIEW.
|
|
4126
|
-
|
|
4931
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4932
|
+
data >>>= 0;
|
|
4933
|
+
HEAP_DATA_VIEW.setUint32(data, pointer, true);
|
|
4127
4934
|
}
|
|
4128
4935
|
return envObject.getReturnStatus();
|
|
4129
4936
|
}
|
|
@@ -4150,12 +4957,15 @@ function createNapiModule(options) {
|
|
|
4150
4957
|
if (!Buffer) {
|
|
4151
4958
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', '');
|
|
4152
4959
|
}
|
|
4153
|
-
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data);
|
|
4960
|
+
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
|
|
4154
4961
|
var buffer = Buffer.from(arrayBuffer);
|
|
4962
|
+
data >>>= 0;
|
|
4963
|
+
length >>>= 0;
|
|
4155
4964
|
buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
|
|
4156
4965
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4966
|
+
result >>>= 0;
|
|
4157
4967
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4158
|
-
HEAP_DATA_VIEW.
|
|
4968
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4159
4969
|
return envObject.getReturnStatus();
|
|
4160
4970
|
}
|
|
4161
4971
|
catch (err) {
|
|
@@ -4182,6 +4992,8 @@ function createNapiModule(options) {
|
|
|
4182
4992
|
return envObject.setLastError(1);
|
|
4183
4993
|
if (!result)
|
|
4184
4994
|
return envObject.setLastError(1);
|
|
4995
|
+
byte_offset >>>= 0;
|
|
4996
|
+
byte_length >>>= 0;
|
|
4185
4997
|
byte_offset = byte_offset >>> 0;
|
|
4186
4998
|
byte_length = byte_length >>> 0;
|
|
4187
4999
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
@@ -4210,9 +5022,10 @@ function createNapiModule(options) {
|
|
|
4210
5022
|
});
|
|
4211
5023
|
}
|
|
4212
5024
|
}
|
|
5025
|
+
result >>>= 0;
|
|
4213
5026
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4214
5027
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4215
|
-
HEAP_DATA_VIEW.
|
|
5028
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4216
5029
|
return envObject.getReturnStatus();
|
|
4217
5030
|
}
|
|
4218
5031
|
catch (err) {
|
|
@@ -4221,7 +5034,6 @@ function createNapiModule(options) {
|
|
|
4221
5034
|
}
|
|
4222
5035
|
}
|
|
4223
5036
|
function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
|
|
4224
|
-
var value;
|
|
4225
5037
|
if (!env)
|
|
4226
5038
|
return 1;
|
|
4227
5039
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4236,34 +5048,41 @@ function createNapiModule(options) {
|
|
|
4236
5048
|
return envObject.setLastError(1);
|
|
4237
5049
|
if (!result)
|
|
4238
5050
|
return envObject.setLastError(1);
|
|
5051
|
+
byte_length >>>= 0;
|
|
5052
|
+
byte_offset >>>= 0;
|
|
4239
5053
|
byte_length = byte_length >>> 0;
|
|
4240
5054
|
byte_offset = byte_offset >>> 0;
|
|
4241
|
-
var
|
|
4242
|
-
|
|
4243
|
-
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
|
|
4247
|
-
|
|
4248
|
-
|
|
4249
|
-
|
|
4250
|
-
|
|
4251
|
-
|
|
4252
|
-
|
|
4253
|
-
|
|
4254
|
-
|
|
4255
|
-
|
|
4256
|
-
|
|
4257
|
-
|
|
4258
|
-
|
|
4259
|
-
runtimeAllocated: 0
|
|
4260
|
-
});
|
|
5055
|
+
var value = emnapiCtx.handleStore.get(arraybuffer).value;
|
|
5056
|
+
var createDataview = function (buffer) {
|
|
5057
|
+
if ((byte_length + byte_offset) > buffer.byteLength) {
|
|
5058
|
+
var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
|
|
5059
|
+
err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
|
|
5060
|
+
throw err;
|
|
5061
|
+
}
|
|
5062
|
+
var dataview = new DataView(buffer, byte_offset, byte_length);
|
|
5063
|
+
if (buffer === wasmMemory.buffer) {
|
|
5064
|
+
if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
|
|
5065
|
+
emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
|
|
5066
|
+
Ctor: DataView,
|
|
5067
|
+
address: byte_offset,
|
|
5068
|
+
length: byte_length,
|
|
5069
|
+
ownership: 1,
|
|
5070
|
+
runtimeAllocated: 0
|
|
5071
|
+
});
|
|
5072
|
+
}
|
|
4261
5073
|
}
|
|
5074
|
+
result >>>= 0;
|
|
5075
|
+
var v = emnapiCtx.addToCurrentScope(dataview).id;
|
|
5076
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5077
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
5078
|
+
return envObject.getReturnStatus();
|
|
5079
|
+
};
|
|
5080
|
+
if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
|
|
5081
|
+
return createDataview(value);
|
|
5082
|
+
}
|
|
5083
|
+
else {
|
|
5084
|
+
return envObject.setLastError(1);
|
|
4262
5085
|
}
|
|
4263
|
-
value = emnapiCtx.addToCurrentScope(dataview).id;
|
|
4264
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4265
|
-
HEAP_DATA_VIEW.setInt32(result, value, true);
|
|
4266
|
-
return envObject.getReturnStatus();
|
|
4267
5086
|
}
|
|
4268
5087
|
catch (err) {
|
|
4269
5088
|
envObject.tryCatch.setError(err);
|
|
@@ -4277,7 +5096,10 @@ function createNapiModule(options) {
|
|
|
4277
5096
|
envObject.checkGCAccess();
|
|
4278
5097
|
if (!result)
|
|
4279
5098
|
return envObject.setLastError(1);
|
|
4280
|
-
|
|
5099
|
+
length >>>= 0;
|
|
5100
|
+
utf8description >>>= 0;
|
|
5101
|
+
result >>>= 0;
|
|
5102
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
4281
5103
|
var sizelength = length >>> 0;
|
|
4282
5104
|
if (length !== 0) {
|
|
4283
5105
|
if (!utf8description)
|
|
@@ -4289,7 +5111,7 @@ function createNapiModule(options) {
|
|
|
4289
5111
|
var descriptionString = emnapiString.UTF8ToString(utf8description, length);
|
|
4290
5112
|
var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id;
|
|
4291
5113
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4292
|
-
HEAP_DATA_VIEW.
|
|
5114
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4293
5115
|
return envObject.clearLastError();
|
|
4294
5116
|
}
|
|
4295
5117
|
var createMod = Object.freeze({
|
|
@@ -4308,6 +5130,9 @@ function createNapiModule(options) {
|
|
|
4308
5130
|
napi_create_symbol: napi_create_symbol,
|
|
4309
5131
|
napi_create_typedarray: napi_create_typedarray,
|
|
4310
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,
|
|
5135
|
+
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
4311
5136
|
node_api_symbol_for: node_api_symbol_for
|
|
4312
5137
|
});
|
|
4313
5138
|
function napi_get_boolean(env, value, result) {
|
|
@@ -4317,9 +5142,10 @@ function createNapiModule(options) {
|
|
|
4317
5142
|
envObject.checkGCAccess();
|
|
4318
5143
|
if (!result)
|
|
4319
5144
|
return envObject.setLastError(1);
|
|
5145
|
+
result >>>= 0;
|
|
4320
5146
|
var v = value === 0 ? 3 : 4;
|
|
4321
5147
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4322
|
-
HEAP_DATA_VIEW.
|
|
5148
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4323
5149
|
return envObject.clearLastError();
|
|
4324
5150
|
}
|
|
4325
5151
|
function napi_get_global(env, result) {
|
|
@@ -4329,9 +5155,10 @@ function createNapiModule(options) {
|
|
|
4329
5155
|
envObject.checkGCAccess();
|
|
4330
5156
|
if (!result)
|
|
4331
5157
|
return envObject.setLastError(1);
|
|
5158
|
+
result >>>= 0;
|
|
4332
5159
|
var value = 5;
|
|
4333
5160
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4334
|
-
HEAP_DATA_VIEW.
|
|
5161
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4335
5162
|
return envObject.clearLastError();
|
|
4336
5163
|
}
|
|
4337
5164
|
function napi_get_null(env, result) {
|
|
@@ -4341,9 +5168,10 @@ function createNapiModule(options) {
|
|
|
4341
5168
|
envObject.checkGCAccess();
|
|
4342
5169
|
if (!result)
|
|
4343
5170
|
return envObject.setLastError(1);
|
|
5171
|
+
result >>>= 0;
|
|
4344
5172
|
var value = 2;
|
|
4345
5173
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4346
|
-
HEAP_DATA_VIEW.
|
|
5174
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4347
5175
|
return envObject.clearLastError();
|
|
4348
5176
|
}
|
|
4349
5177
|
function napi_get_undefined(env, result) {
|
|
@@ -4353,9 +5181,10 @@ function createNapiModule(options) {
|
|
|
4353
5181
|
envObject.checkGCAccess();
|
|
4354
5182
|
if (!result)
|
|
4355
5183
|
return envObject.setLastError(1);
|
|
5184
|
+
result >>>= 0;
|
|
4356
5185
|
var value = 1;
|
|
4357
5186
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4358
|
-
HEAP_DATA_VIEW.
|
|
5187
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4359
5188
|
return envObject.clearLastError();
|
|
4360
5189
|
}
|
|
4361
5190
|
var globalMod = Object.freeze({
|
|
@@ -4369,6 +5198,9 @@ function createNapiModule(options) {
|
|
|
4369
5198
|
if (!env)
|
|
4370
5199
|
return 1;
|
|
4371
5200
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5201
|
+
data >>>= 0;
|
|
5202
|
+
finalize_cb >>>= 0;
|
|
5203
|
+
finalize_hint >>>= 0;
|
|
4372
5204
|
envObject.setInstanceData(data, finalize_cb, finalize_hint);
|
|
4373
5205
|
return envObject.clearLastError();
|
|
4374
5206
|
}
|
|
@@ -4378,9 +5210,10 @@ function createNapiModule(options) {
|
|
|
4378
5210
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4379
5211
|
if (!data)
|
|
4380
5212
|
return envObject.setLastError(1);
|
|
5213
|
+
data >>>= 0;
|
|
4381
5214
|
var value = envObject.getInstanceData();
|
|
4382
5215
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4383
|
-
HEAP_DATA_VIEW.
|
|
5216
|
+
HEAP_DATA_VIEW.setUint32(data, value, true);
|
|
4384
5217
|
return envObject.clearLastError();
|
|
4385
5218
|
}
|
|
4386
5219
|
var envMod = Object.freeze({
|
|
@@ -4389,15 +5222,19 @@ function createNapiModule(options) {
|
|
|
4389
5222
|
napi_set_instance_data: napi_set_instance_data
|
|
4390
5223
|
});
|
|
4391
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;
|
|
4392
5228
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4393
5229
|
var lastError = envObject.lastError;
|
|
4394
5230
|
var errorCode = lastError.errorCode;
|
|
4395
5231
|
var engineErrorCode = lastError.engineErrorCode >>> 0;
|
|
4396
5232
|
var engineReserved = lastError.engineReserved;
|
|
5233
|
+
engineReserved >>>= 0;
|
|
4397
5234
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4398
5235
|
HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
|
|
4399
5236
|
HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
|
|
4400
|
-
HEAP_DATA_VIEW.
|
|
5237
|
+
HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true);
|
|
4401
5238
|
}
|
|
4402
5239
|
function napi_throw(env, error) {
|
|
4403
5240
|
if (!env)
|
|
@@ -4433,6 +5270,8 @@ function createNapiModule(options) {
|
|
|
4433
5270
|
try {
|
|
4434
5271
|
if (!msg)
|
|
4435
5272
|
return envObject.setLastError(1);
|
|
5273
|
+
code >>>= 0;
|
|
5274
|
+
msg >>>= 0;
|
|
4436
5275
|
var error = new Error(emnapiString.UTF8ToString(msg, -1));
|
|
4437
5276
|
if (code)
|
|
4438
5277
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4457,6 +5296,8 @@ function createNapiModule(options) {
|
|
|
4457
5296
|
try {
|
|
4458
5297
|
if (!msg)
|
|
4459
5298
|
return envObject.setLastError(1);
|
|
5299
|
+
code >>>= 0;
|
|
5300
|
+
msg >>>= 0;
|
|
4460
5301
|
var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
|
|
4461
5302
|
if (code)
|
|
4462
5303
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4481,6 +5322,8 @@ function createNapiModule(options) {
|
|
|
4481
5322
|
try {
|
|
4482
5323
|
if (!msg)
|
|
4483
5324
|
return envObject.setLastError(1);
|
|
5325
|
+
code >>>= 0;
|
|
5326
|
+
msg >>>= 0;
|
|
4484
5327
|
var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
|
|
4485
5328
|
if (code)
|
|
4486
5329
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4505,6 +5348,8 @@ function createNapiModule(options) {
|
|
|
4505
5348
|
try {
|
|
4506
5349
|
if (!msg)
|
|
4507
5350
|
return envObject.setLastError(1);
|
|
5351
|
+
code >>>= 0;
|
|
5352
|
+
msg >>>= 0;
|
|
4508
5353
|
var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
|
|
4509
5354
|
if (code)
|
|
4510
5355
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4524,6 +5369,7 @@ function createNapiModule(options) {
|
|
|
4524
5369
|
if (!result)
|
|
4525
5370
|
return envObject.setLastError(1);
|
|
4526
5371
|
var r = envObject.tryCatch.hasCaught();
|
|
5372
|
+
result >>>= 0;
|
|
4527
5373
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4528
5374
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
4529
5375
|
return envObject.clearLastError();
|
|
@@ -4549,9 +5395,10 @@ function createNapiModule(options) {
|
|
|
4549
5395
|
}
|
|
4550
5396
|
error.code = codeValue;
|
|
4551
5397
|
}
|
|
5398
|
+
result >>>= 0;
|
|
4552
5399
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4553
5400
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4554
|
-
HEAP_DATA_VIEW.
|
|
5401
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4555
5402
|
return envObject.clearLastError();
|
|
4556
5403
|
}
|
|
4557
5404
|
function napi_create_type_error(env, code, msg, result) {
|
|
@@ -4575,9 +5422,10 @@ function createNapiModule(options) {
|
|
|
4575
5422
|
}
|
|
4576
5423
|
error.code = codeValue;
|
|
4577
5424
|
}
|
|
5425
|
+
result >>>= 0;
|
|
4578
5426
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4579
5427
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4580
|
-
HEAP_DATA_VIEW.
|
|
5428
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4581
5429
|
return envObject.clearLastError();
|
|
4582
5430
|
}
|
|
4583
5431
|
function napi_create_range_error(env, code, msg, result) {
|
|
@@ -4601,9 +5449,10 @@ function createNapiModule(options) {
|
|
|
4601
5449
|
}
|
|
4602
5450
|
error.code = codeValue;
|
|
4603
5451
|
}
|
|
5452
|
+
result >>>= 0;
|
|
4604
5453
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4605
5454
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4606
|
-
HEAP_DATA_VIEW.
|
|
5455
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4607
5456
|
return envObject.clearLastError();
|
|
4608
5457
|
}
|
|
4609
5458
|
function node_api_create_syntax_error(env, code, msg, result) {
|
|
@@ -4627,9 +5476,10 @@ function createNapiModule(options) {
|
|
|
4627
5476
|
}
|
|
4628
5477
|
error.code = codeValue;
|
|
4629
5478
|
}
|
|
5479
|
+
result >>>= 0;
|
|
4630
5480
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4631
5481
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4632
|
-
HEAP_DATA_VIEW.
|
|
5482
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4633
5483
|
return envObject.clearLastError();
|
|
4634
5484
|
}
|
|
4635
5485
|
function napi_get_and_clear_last_exception(env, result) {
|
|
@@ -4639,20 +5489,25 @@ function createNapiModule(options) {
|
|
|
4639
5489
|
envObject.checkGCAccess();
|
|
4640
5490
|
if (!result)
|
|
4641
5491
|
return envObject.setLastError(1);
|
|
5492
|
+
result >>>= 0;
|
|
4642
5493
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4643
5494
|
if (!envObject.tryCatch.hasCaught()) {
|
|
4644
|
-
HEAP_DATA_VIEW.
|
|
5495
|
+
HEAP_DATA_VIEW.setUint32(result, 1, true);
|
|
4645
5496
|
return envObject.clearLastError();
|
|
4646
5497
|
}
|
|
4647
5498
|
else {
|
|
4648
5499
|
var err = envObject.tryCatch.exception();
|
|
4649
5500
|
var value = envObject.ensureHandleId(err);
|
|
4650
|
-
HEAP_DATA_VIEW.
|
|
5501
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4651
5502
|
envObject.tryCatch.reset();
|
|
4652
5503
|
}
|
|
4653
5504
|
return envObject.clearLastError();
|
|
4654
5505
|
}
|
|
4655
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;
|
|
4656
5511
|
var locationStr = emnapiString.UTF8ToString(location, location_len);
|
|
4657
5512
|
var messageStr = emnapiString.UTF8ToString(message, message_len);
|
|
4658
5513
|
if (emnapiNodeBinding) {
|
|
@@ -4706,8 +5561,21 @@ function createNapiModule(options) {
|
|
|
4706
5561
|
node_api_create_syntax_error: node_api_create_syntax_error,
|
|
4707
5562
|
node_api_throw_syntax_error: node_api_throw_syntax_error
|
|
4708
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
|
+
}
|
|
4709
5578
|
function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
4710
|
-
var value;
|
|
4711
5579
|
if (!env)
|
|
4712
5580
|
return 1;
|
|
4713
5581
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4722,15 +5590,7 @@ function createNapiModule(options) {
|
|
|
4722
5590
|
return envObject.setLastError(1);
|
|
4723
5591
|
if (!cb)
|
|
4724
5592
|
return envObject.setLastError(1);
|
|
4725
|
-
|
|
4726
|
-
if (fresult.status !== 0)
|
|
4727
|
-
return envObject.setLastError(fresult.status);
|
|
4728
|
-
var f = fresult.f;
|
|
4729
|
-
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
4730
|
-
value = valueHandle.id;
|
|
4731
|
-
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4732
|
-
HEAP_DATA_VIEW.setInt32(result, value, true);
|
|
4733
|
-
return envObject.getReturnStatus();
|
|
5593
|
+
return _emnapi_create_function(env, utf8name, length, cb, data, result);
|
|
4734
5594
|
}
|
|
4735
5595
|
catch (err) {
|
|
4736
5596
|
envObject.tryCatch.setError(err);
|
|
@@ -4744,21 +5604,24 @@ function createNapiModule(options) {
|
|
|
4744
5604
|
if (!cbinfo)
|
|
4745
5605
|
return envObject.setLastError(1);
|
|
4746
5606
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
5607
|
+
argc >>>= 0;
|
|
5608
|
+
argv >>>= 0;
|
|
4747
5609
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4748
5610
|
if (argv) {
|
|
4749
5611
|
if (!argc)
|
|
4750
5612
|
return envObject.setLastError(1);
|
|
4751
5613
|
var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
|
|
5614
|
+
argcValue >>>= 0;
|
|
4752
5615
|
var len = cbinfoValue.args.length;
|
|
4753
5616
|
var arrlen = argcValue < len ? argcValue : len;
|
|
4754
5617
|
var i = 0;
|
|
4755
5618
|
for (; i < arrlen; i++) {
|
|
4756
5619
|
var argVal = envObject.ensureHandleId(cbinfoValue.args[i]);
|
|
4757
|
-
HEAP_DATA_VIEW.
|
|
5620
|
+
HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true);
|
|
4758
5621
|
}
|
|
4759
5622
|
if (i < argcValue) {
|
|
4760
5623
|
for (; i < argcValue; i++) {
|
|
4761
|
-
HEAP_DATA_VIEW.
|
|
5624
|
+
HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true);
|
|
4762
5625
|
}
|
|
4763
5626
|
}
|
|
4764
5627
|
}
|
|
@@ -4766,11 +5629,13 @@ function createNapiModule(options) {
|
|
|
4766
5629
|
HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
|
|
4767
5630
|
}
|
|
4768
5631
|
if (this_arg) {
|
|
5632
|
+
this_arg >>>= 0;
|
|
4769
5633
|
var v = envObject.ensureHandleId(cbinfoValue.thiz);
|
|
4770
|
-
HEAP_DATA_VIEW.
|
|
5634
|
+
HEAP_DATA_VIEW.setUint32(this_arg, v, true);
|
|
4771
5635
|
}
|
|
4772
5636
|
if (data) {
|
|
4773
|
-
|
|
5637
|
+
data >>>= 0;
|
|
5638
|
+
HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
|
|
4774
5639
|
}
|
|
4775
5640
|
return envObject.clearLastError();
|
|
4776
5641
|
}
|
|
@@ -4789,6 +5654,9 @@ function createNapiModule(options) {
|
|
|
4789
5654
|
try {
|
|
4790
5655
|
if (!recv)
|
|
4791
5656
|
return envObject.setLastError(1);
|
|
5657
|
+
argc >>>= 0;
|
|
5658
|
+
argv >>>= 0;
|
|
5659
|
+
result >>>= 0;
|
|
4792
5660
|
argc = argc >>> 0;
|
|
4793
5661
|
if (argc > 0) {
|
|
4794
5662
|
if (!argv)
|
|
@@ -4803,13 +5671,13 @@ function createNapiModule(options) {
|
|
|
4803
5671
|
var args = [];
|
|
4804
5672
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4805
5673
|
for (; i < argc; i++) {
|
|
4806
|
-
var argVal = HEAP_DATA_VIEW.
|
|
5674
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
4807
5675
|
args.push(emnapiCtx.handleStore.get(argVal).value);
|
|
4808
5676
|
}
|
|
4809
5677
|
var ret = v8func.apply(v8recv, args);
|
|
4810
5678
|
if (result) {
|
|
4811
5679
|
v = envObject.ensureHandleId(ret);
|
|
4812
|
-
HEAP_DATA_VIEW.
|
|
5680
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4813
5681
|
}
|
|
4814
5682
|
return envObject.clearLastError();
|
|
4815
5683
|
}
|
|
@@ -4833,6 +5701,9 @@ function createNapiModule(options) {
|
|
|
4833
5701
|
try {
|
|
4834
5702
|
if (!constructor)
|
|
4835
5703
|
return envObject.setLastError(1);
|
|
5704
|
+
argc >>>= 0;
|
|
5705
|
+
argv >>>= 0;
|
|
5706
|
+
result >>>= 0;
|
|
4836
5707
|
argc = argc >>> 0;
|
|
4837
5708
|
if (argc > 0) {
|
|
4838
5709
|
if (!argv)
|
|
@@ -4848,7 +5719,7 @@ function createNapiModule(options) {
|
|
|
4848
5719
|
if (emnapiCtx.feature.supportReflect) {
|
|
4849
5720
|
var argList = Array(argc);
|
|
4850
5721
|
for (i = 0; i < argc; i++) {
|
|
4851
|
-
var argVal = HEAP_DATA_VIEW.
|
|
5722
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
4852
5723
|
argList[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
4853
5724
|
}
|
|
4854
5725
|
ret = Reflect.construct(Ctor, argList, Ctor);
|
|
@@ -4857,7 +5728,7 @@ function createNapiModule(options) {
|
|
|
4857
5728
|
var args = Array(argc + 1);
|
|
4858
5729
|
args[0] = undefined;
|
|
4859
5730
|
for (i = 0; i < argc; i++) {
|
|
4860
|
-
var argVal = HEAP_DATA_VIEW.
|
|
5731
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
4861
5732
|
args[i + 1] = emnapiCtx.handleStore.get(argVal).value;
|
|
4862
5733
|
}
|
|
4863
5734
|
var BoundCtor = Ctor.bind.apply(Ctor, args);
|
|
@@ -4865,7 +5736,7 @@ function createNapiModule(options) {
|
|
|
4865
5736
|
}
|
|
4866
5737
|
if (result) {
|
|
4867
5738
|
v = envObject.ensureHandleId(ret);
|
|
4868
|
-
HEAP_DATA_VIEW.
|
|
5739
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4869
5740
|
}
|
|
4870
5741
|
return envObject.getReturnStatus();
|
|
4871
5742
|
}
|
|
@@ -4883,6 +5754,7 @@ function createNapiModule(options) {
|
|
|
4883
5754
|
return envObject.setLastError(1);
|
|
4884
5755
|
if (!result)
|
|
4885
5756
|
return envObject.setLastError(1);
|
|
5757
|
+
result >>>= 0;
|
|
4886
5758
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
4887
5759
|
var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
|
|
4888
5760
|
var value = thiz == null || thiz.constructor == null
|
|
@@ -4891,11 +5763,12 @@ function createNapiModule(options) {
|
|
|
4891
5763
|
? envObject.ensureHandleId(thiz.constructor)
|
|
4892
5764
|
: 0;
|
|
4893
5765
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4894
|
-
HEAP_DATA_VIEW.
|
|
5766
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4895
5767
|
return envObject.clearLastError();
|
|
4896
5768
|
}
|
|
4897
5769
|
var functionMod = Object.freeze({
|
|
4898
5770
|
__proto__: null,
|
|
5771
|
+
_emnapi_create_function: _emnapi_create_function,
|
|
4899
5772
|
napi_call_function: napi_call_function,
|
|
4900
5773
|
napi_create_function: napi_create_function,
|
|
4901
5774
|
napi_get_cb_info: napi_get_cb_info,
|
|
@@ -4910,8 +5783,9 @@ function createNapiModule(options) {
|
|
|
4910
5783
|
if (!result)
|
|
4911
5784
|
return envObject.setLastError(1);
|
|
4912
5785
|
var scope = emnapiCtx.openScope(envObject);
|
|
5786
|
+
result >>>= 0;
|
|
4913
5787
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4914
|
-
HEAP_DATA_VIEW.
|
|
5788
|
+
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4915
5789
|
return envObject.clearLastError();
|
|
4916
5790
|
}
|
|
4917
5791
|
function napi_close_handle_scope(env, scope) {
|
|
@@ -4935,8 +5809,9 @@ function createNapiModule(options) {
|
|
|
4935
5809
|
if (!result)
|
|
4936
5810
|
return envObject.setLastError(1);
|
|
4937
5811
|
var scope = emnapiCtx.openScope(envObject);
|
|
5812
|
+
result >>>= 0;
|
|
4938
5813
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4939
|
-
HEAP_DATA_VIEW.
|
|
5814
|
+
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4940
5815
|
return envObject.clearLastError();
|
|
4941
5816
|
}
|
|
4942
5817
|
function napi_close_escapable_handle_scope(env, scope) {
|
|
@@ -4965,10 +5840,12 @@ function createNapiModule(options) {
|
|
|
4965
5840
|
return envObject.setLastError(1);
|
|
4966
5841
|
var scopeObject = emnapiCtx.scopeStore.get(scope);
|
|
4967
5842
|
if (!scopeObject.escapeCalled()) {
|
|
5843
|
+
escapee >>>= 0;
|
|
5844
|
+
result >>>= 0;
|
|
4968
5845
|
var newHandle = scopeObject.escape(escapee);
|
|
4969
5846
|
var value = newHandle ? newHandle.id : 0;
|
|
4970
5847
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4971
|
-
HEAP_DATA_VIEW.
|
|
5848
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4972
5849
|
return envObject.clearLastError();
|
|
4973
5850
|
}
|
|
4974
5851
|
return envObject.setLastError(12);
|
|
@@ -4989,8 +5866,9 @@ function createNapiModule(options) {
|
|
|
4989
5866
|
}
|
|
4990
5867
|
}
|
|
4991
5868
|
var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
|
|
5869
|
+
result >>>= 0;
|
|
4992
5870
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4993
|
-
HEAP_DATA_VIEW.
|
|
5871
|
+
HEAP_DATA_VIEW.setUint32(result, ref.id, true);
|
|
4994
5872
|
return envObject.clearLastError();
|
|
4995
5873
|
}
|
|
4996
5874
|
function napi_delete_reference(env, ref) {
|
|
@@ -5011,6 +5889,7 @@ function createNapiModule(options) {
|
|
|
5011
5889
|
return envObject.setLastError(1);
|
|
5012
5890
|
var count = emnapiCtx.refStore.get(ref).ref();
|
|
5013
5891
|
if (result) {
|
|
5892
|
+
result >>>= 0;
|
|
5014
5893
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5015
5894
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5016
5895
|
}
|
|
@@ -5030,6 +5909,7 @@ function createNapiModule(options) {
|
|
|
5030
5909
|
}
|
|
5031
5910
|
var count = reference.unref();
|
|
5032
5911
|
if (result) {
|
|
5912
|
+
result >>>= 0;
|
|
5033
5913
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5034
5914
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5035
5915
|
}
|
|
@@ -5046,8 +5926,9 @@ function createNapiModule(options) {
|
|
|
5046
5926
|
return envObject.setLastError(1);
|
|
5047
5927
|
var reference = emnapiCtx.refStore.get(ref);
|
|
5048
5928
|
var handleId = reference.get(envObject);
|
|
5929
|
+
result >>>= 0;
|
|
5049
5930
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5050
|
-
HEAP_DATA_VIEW.
|
|
5931
|
+
HEAP_DATA_VIEW.setUint32(result, handleId, true);
|
|
5051
5932
|
return envObject.clearLastError();
|
|
5052
5933
|
}
|
|
5053
5934
|
function napi_add_env_cleanup_hook(env, fun, arg) {
|
|
@@ -5056,6 +5937,8 @@ function createNapiModule(options) {
|
|
|
5056
5937
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5057
5938
|
if (!fun)
|
|
5058
5939
|
return envObject.setLastError(1);
|
|
5940
|
+
fun >>>= 0;
|
|
5941
|
+
arg >>>= 0;
|
|
5059
5942
|
emnapiCtx.addCleanupHook(envObject, fun, arg);
|
|
5060
5943
|
return 0;
|
|
5061
5944
|
}
|
|
@@ -5065,6 +5948,8 @@ function createNapiModule(options) {
|
|
|
5065
5948
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5066
5949
|
if (!fun)
|
|
5067
5950
|
return envObject.setLastError(1);
|
|
5951
|
+
fun >>>= 0;
|
|
5952
|
+
arg >>>= 0;
|
|
5068
5953
|
emnapiCtx.removeCleanupHook(envObject, fun, arg);
|
|
5069
5954
|
return 0;
|
|
5070
5955
|
}
|
|
@@ -5125,10 +6010,12 @@ function createNapiModule(options) {
|
|
|
5125
6010
|
var p = new Promise(function (resolve, reject) {
|
|
5126
6011
|
var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
|
|
5127
6012
|
deferredObjectId = deferredObject.id;
|
|
5128
|
-
|
|
6013
|
+
deferred >>>= 0;
|
|
6014
|
+
HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
|
|
5129
6015
|
});
|
|
6016
|
+
promise >>>= 0;
|
|
5130
6017
|
value = emnapiCtx.addToCurrentScope(p).id;
|
|
5131
|
-
HEAP_DATA_VIEW.
|
|
6018
|
+
HEAP_DATA_VIEW.setUint32(promise, value, true);
|
|
5132
6019
|
return envObject.getReturnStatus();
|
|
5133
6020
|
}
|
|
5134
6021
|
catch (err) {
|
|
@@ -5194,6 +6081,7 @@ function createNapiModule(options) {
|
|
|
5194
6081
|
if (!is_promise)
|
|
5195
6082
|
return envObject.setLastError(1);
|
|
5196
6083
|
var h = emnapiCtx.handleStore.get(value);
|
|
6084
|
+
is_promise >>>= 0;
|
|
5197
6085
|
var r = h.isPromise() ? 1 : 0;
|
|
5198
6086
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5199
6087
|
HEAP_DATA_VIEW.setInt8(is_promise, r, true);
|
|
@@ -5337,9 +6225,10 @@ function createNapiModule(options) {
|
|
|
5337
6225
|
}
|
|
5338
6226
|
}
|
|
5339
6227
|
}
|
|
6228
|
+
result >>>= 0;
|
|
5340
6229
|
value = emnapiCtx.addToCurrentScope(ret).id;
|
|
5341
6230
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5342
|
-
HEAP_DATA_VIEW.
|
|
6231
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5343
6232
|
return envObject.getReturnStatus();
|
|
5344
6233
|
}
|
|
5345
6234
|
catch (err) {
|
|
@@ -5408,6 +6297,7 @@ function createNapiModule(options) {
|
|
|
5408
6297
|
catch (_) {
|
|
5409
6298
|
return envObject.setLastError(2);
|
|
5410
6299
|
}
|
|
6300
|
+
result >>>= 0;
|
|
5411
6301
|
r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
|
|
5412
6302
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5413
6303
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5447,9 +6337,10 @@ function createNapiModule(options) {
|
|
|
5447
6337
|
catch (_) {
|
|
5448
6338
|
return envObject.setLastError(2);
|
|
5449
6339
|
}
|
|
6340
|
+
result >>>= 0;
|
|
5450
6341
|
value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
|
|
5451
6342
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5452
|
-
HEAP_DATA_VIEW.
|
|
6343
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5453
6344
|
return envObject.getReturnStatus();
|
|
5454
6345
|
}
|
|
5455
6346
|
catch (err) {
|
|
@@ -5490,6 +6381,7 @@ function createNapiModule(options) {
|
|
|
5490
6381
|
}
|
|
5491
6382
|
}
|
|
5492
6383
|
if (result) {
|
|
6384
|
+
result >>>= 0;
|
|
5493
6385
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5494
6386
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5495
6387
|
}
|
|
@@ -5534,6 +6426,7 @@ function createNapiModule(options) {
|
|
|
5534
6426
|
return envObject.setLastError(4);
|
|
5535
6427
|
}
|
|
5536
6428
|
r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
|
|
6429
|
+
result >>>= 0;
|
|
5537
6430
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5538
6431
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5539
6432
|
return envObject.getReturnStatus();
|
|
@@ -5565,6 +6458,7 @@ function createNapiModule(options) {
|
|
|
5565
6458
|
if (!cname) {
|
|
5566
6459
|
return envObject.setLastError(1);
|
|
5567
6460
|
}
|
|
6461
|
+
cname >>>= 0;
|
|
5568
6462
|
emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
|
|
5569
6463
|
return envObject.getReturnStatus();
|
|
5570
6464
|
}
|
|
@@ -5603,6 +6497,8 @@ function createNapiModule(options) {
|
|
|
5603
6497
|
catch (_) {
|
|
5604
6498
|
return envObject.setLastError(2);
|
|
5605
6499
|
}
|
|
6500
|
+
utf8name >>>= 0;
|
|
6501
|
+
result >>>= 0;
|
|
5606
6502
|
r = emnapiString.UTF8ToString(utf8name, -1) in v;
|
|
5607
6503
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5608
6504
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
@@ -5643,9 +6539,11 @@ function createNapiModule(options) {
|
|
|
5643
6539
|
catch (_) {
|
|
5644
6540
|
return envObject.setLastError(2);
|
|
5645
6541
|
}
|
|
6542
|
+
utf8name >>>= 0;
|
|
6543
|
+
result >>>= 0;
|
|
5646
6544
|
value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
|
|
5647
6545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5648
|
-
HEAP_DATA_VIEW.
|
|
6546
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5649
6547
|
return envObject.getReturnStatus();
|
|
5650
6548
|
}
|
|
5651
6549
|
catch (err) {
|
|
@@ -5707,6 +6605,7 @@ function createNapiModule(options) {
|
|
|
5707
6605
|
catch (_) {
|
|
5708
6606
|
return envObject.setLastError(2);
|
|
5709
6607
|
}
|
|
6608
|
+
result >>>= 0;
|
|
5710
6609
|
r = ((index >>> 0) in v) ? 1 : 0;
|
|
5711
6610
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5712
6611
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5744,9 +6643,10 @@ function createNapiModule(options) {
|
|
|
5744
6643
|
catch (_) {
|
|
5745
6644
|
return envObject.setLastError(2);
|
|
5746
6645
|
}
|
|
6646
|
+
result >>>= 0;
|
|
5747
6647
|
value = envObject.ensureHandleId(v[index >>> 0]);
|
|
5748
6648
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5749
|
-
HEAP_DATA_VIEW.
|
|
6649
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5750
6650
|
return envObject.getReturnStatus();
|
|
5751
6651
|
}
|
|
5752
6652
|
catch (err) {
|
|
@@ -5784,6 +6684,7 @@ function createNapiModule(options) {
|
|
|
5784
6684
|
}
|
|
5785
6685
|
}
|
|
5786
6686
|
if (result) {
|
|
6687
|
+
result >>>= 0;
|
|
5787
6688
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5788
6689
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5789
6690
|
}
|
|
@@ -5806,6 +6707,8 @@ function createNapiModule(options) {
|
|
|
5806
6707
|
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
5807
6708
|
envObject.clearLastError();
|
|
5808
6709
|
try {
|
|
6710
|
+
properties >>>= 0;
|
|
6711
|
+
property_count >>>= 0;
|
|
5809
6712
|
property_count = property_count >>> 0;
|
|
5810
6713
|
if (property_count > 0) {
|
|
5811
6714
|
if (!properties)
|
|
@@ -5822,14 +6725,15 @@ function createNapiModule(options) {
|
|
|
5822
6725
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5823
6726
|
for (var i = 0; i < property_count; i++) {
|
|
5824
6727
|
propPtr = properties + (i * (4 * 8));
|
|
5825
|
-
var utf8Name = HEAP_DATA_VIEW.
|
|
5826
|
-
var name_2 = HEAP_DATA_VIEW.
|
|
5827
|
-
var method = HEAP_DATA_VIEW.
|
|
5828
|
-
var getter = HEAP_DATA_VIEW.
|
|
5829
|
-
var setter = HEAP_DATA_VIEW.
|
|
5830
|
-
var value = HEAP_DATA_VIEW.
|
|
6728
|
+
var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
|
|
6729
|
+
var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
|
|
6730
|
+
var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
|
|
6731
|
+
var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
|
|
6732
|
+
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
6733
|
+
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
5831
6734
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
5832
|
-
|
|
6735
|
+
attributes >>>= 0;
|
|
6736
|
+
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
5833
6737
|
if (utf8Name) {
|
|
5834
6738
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
5835
6739
|
}
|
|
@@ -5946,9 +6850,10 @@ function createNapiModule(options) {
|
|
|
5946
6850
|
}
|
|
5947
6851
|
var g = emnapiCtx.handleStore.get(5).value;
|
|
5948
6852
|
var ret = g.eval(v8Script.value);
|
|
6853
|
+
result >>>= 0;
|
|
5949
6854
|
value = envObject.ensureHandleId(ret);
|
|
5950
6855
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5951
|
-
HEAP_DATA_VIEW.
|
|
6856
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5952
6857
|
status = envObject.getReturnStatus();
|
|
5953
6858
|
}
|
|
5954
6859
|
catch (err) {
|
|
@@ -5971,6 +6876,7 @@ function createNapiModule(options) {
|
|
|
5971
6876
|
if (!result)
|
|
5972
6877
|
return envObject.setLastError(1);
|
|
5973
6878
|
var v = emnapiCtx.handleStore.get(value);
|
|
6879
|
+
result >>>= 0;
|
|
5974
6880
|
var r;
|
|
5975
6881
|
if (v.isNumber()) {
|
|
5976
6882
|
r = 3;
|
|
@@ -6026,9 +6932,10 @@ function createNapiModule(options) {
|
|
|
6026
6932
|
if (!result)
|
|
6027
6933
|
return envObject.setLastError(1);
|
|
6028
6934
|
var handle = emnapiCtx.handleStore.get(value);
|
|
6935
|
+
result >>>= 0;
|
|
6029
6936
|
v = handle.value ? 4 : 3;
|
|
6030
6937
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6031
|
-
HEAP_DATA_VIEW.
|
|
6938
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6032
6939
|
return envObject.getReturnStatus();
|
|
6033
6940
|
}
|
|
6034
6941
|
catch (err) {
|
|
@@ -6056,9 +6963,10 @@ function createNapiModule(options) {
|
|
|
6056
6963
|
if (handle.isBigInt()) {
|
|
6057
6964
|
throw new TypeError('Cannot convert a BigInt value to a number');
|
|
6058
6965
|
}
|
|
6966
|
+
result >>>= 0;
|
|
6059
6967
|
v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
|
|
6060
6968
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6061
|
-
HEAP_DATA_VIEW.
|
|
6969
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6062
6970
|
return envObject.getReturnStatus();
|
|
6063
6971
|
}
|
|
6064
6972
|
catch (err) {
|
|
@@ -6086,9 +6994,10 @@ function createNapiModule(options) {
|
|
|
6086
6994
|
if (handle.value == null) {
|
|
6087
6995
|
throw new TypeError('Cannot convert undefined or null to object');
|
|
6088
6996
|
}
|
|
6997
|
+
result >>>= 0;
|
|
6089
6998
|
v = envObject.ensureHandleId(Object(handle.value));
|
|
6090
6999
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6091
|
-
HEAP_DATA_VIEW.
|
|
7000
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6092
7001
|
return envObject.getReturnStatus();
|
|
6093
7002
|
}
|
|
6094
7003
|
catch (err) {
|
|
@@ -6116,9 +7025,10 @@ function createNapiModule(options) {
|
|
|
6116
7025
|
if (handle.isSymbol()) {
|
|
6117
7026
|
throw new TypeError('Cannot convert a Symbol value to a string');
|
|
6118
7027
|
}
|
|
7028
|
+
result >>>= 0;
|
|
6119
7029
|
v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
|
|
6120
7030
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6121
|
-
HEAP_DATA_VIEW.
|
|
7031
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6122
7032
|
return envObject.getReturnStatus();
|
|
6123
7033
|
}
|
|
6124
7034
|
catch (err) {
|
|
@@ -6144,6 +7054,7 @@ function createNapiModule(options) {
|
|
|
6144
7054
|
return envObject.setLastError(1);
|
|
6145
7055
|
if (!constructor)
|
|
6146
7056
|
return envObject.setLastError(1);
|
|
7057
|
+
result >>>= 0;
|
|
6147
7058
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6148
7059
|
HEAP_DATA_VIEW.setInt8(result, 0, true);
|
|
6149
7060
|
var ctor = emnapiCtx.handleStore.get(constructor);
|
|
@@ -6171,6 +7082,7 @@ function createNapiModule(options) {
|
|
|
6171
7082
|
if (!result)
|
|
6172
7083
|
return envObject.setLastError(1);
|
|
6173
7084
|
var h = emnapiCtx.handleStore.get(value);
|
|
7085
|
+
result >>>= 0;
|
|
6174
7086
|
var r = h.isArray() ? 1 : 0;
|
|
6175
7087
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6176
7088
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6186,11 +7098,31 @@ function createNapiModule(options) {
|
|
|
6186
7098
|
if (!result)
|
|
6187
7099
|
return envObject.setLastError(1);
|
|
6188
7100
|
var h = emnapiCtx.handleStore.get(value);
|
|
7101
|
+
result >>>= 0;
|
|
6189
7102
|
var r = h.isArrayBuffer() ? 1 : 0;
|
|
6190
7103
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6191
7104
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
6192
7105
|
return envObject.clearLastError();
|
|
6193
7106
|
}
|
|
7107
|
+
function node_api_is_sharedarraybuffer(env, value, result) {
|
|
7108
|
+
if (!env)
|
|
7109
|
+
return 1;
|
|
7110
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
7111
|
+
envObject.checkGCAccess();
|
|
7112
|
+
if (!value)
|
|
7113
|
+
return envObject.setLastError(1);
|
|
7114
|
+
if (!result)
|
|
7115
|
+
return envObject.setLastError(1);
|
|
7116
|
+
var h = emnapiCtx.handleStore.get(value);
|
|
7117
|
+
result >>>= 0;
|
|
7118
|
+
var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
|
|
7119
|
+
(Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
|
|
7120
|
+
? 1
|
|
7121
|
+
: 0;
|
|
7122
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
7123
|
+
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
7124
|
+
return envObject.clearLastError();
|
|
7125
|
+
}
|
|
6194
7126
|
function napi_is_date(env, value, result) {
|
|
6195
7127
|
if (!env)
|
|
6196
7128
|
return 1;
|
|
@@ -6201,6 +7133,7 @@ function createNapiModule(options) {
|
|
|
6201
7133
|
if (!result)
|
|
6202
7134
|
return envObject.setLastError(1);
|
|
6203
7135
|
var h = emnapiCtx.handleStore.get(value);
|
|
7136
|
+
result >>>= 0;
|
|
6204
7137
|
var r = h.isDate() ? 1 : 0;
|
|
6205
7138
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6206
7139
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6216,6 +7149,7 @@ function createNapiModule(options) {
|
|
|
6216
7149
|
if (!result)
|
|
6217
7150
|
return envObject.setLastError(1);
|
|
6218
7151
|
var val = emnapiCtx.handleStore.get(value).value;
|
|
7152
|
+
result >>>= 0;
|
|
6219
7153
|
var r = (val instanceof Error) ? 1 : 0;
|
|
6220
7154
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6221
7155
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6231,6 +7165,7 @@ function createNapiModule(options) {
|
|
|
6231
7165
|
if (!result)
|
|
6232
7166
|
return envObject.setLastError(1);
|
|
6233
7167
|
var h = emnapiCtx.handleStore.get(value);
|
|
7168
|
+
result >>>= 0;
|
|
6234
7169
|
var r = h.isTypedArray() ? 1 : 0;
|
|
6235
7170
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6236
7171
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6246,6 +7181,7 @@ function createNapiModule(options) {
|
|
|
6246
7181
|
if (!result)
|
|
6247
7182
|
return envObject.setLastError(1);
|
|
6248
7183
|
var h = emnapiCtx.handleStore.get(value);
|
|
7184
|
+
result >>>= 0;
|
|
6249
7185
|
var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
|
|
6250
7186
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6251
7187
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6261,6 +7197,7 @@ function createNapiModule(options) {
|
|
|
6261
7197
|
if (!result)
|
|
6262
7198
|
return envObject.setLastError(1);
|
|
6263
7199
|
var h = emnapiCtx.handleStore.get(value);
|
|
7200
|
+
result >>>= 0;
|
|
6264
7201
|
var r = h.isDataView() ? 1 : 0;
|
|
6265
7202
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6266
7203
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6286,6 +7223,7 @@ function createNapiModule(options) {
|
|
|
6286
7223
|
return envObject.setLastError(1);
|
|
6287
7224
|
var lv = emnapiCtx.handleStore.get(lhs).value;
|
|
6288
7225
|
var rv = emnapiCtx.handleStore.get(rhs).value;
|
|
7226
|
+
result >>>= 0;
|
|
6289
7227
|
r = (lv === rv) ? 1 : 0;
|
|
6290
7228
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6291
7229
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6336,6 +7274,7 @@ function createNapiModule(options) {
|
|
|
6336
7274
|
if (!result)
|
|
6337
7275
|
return envObject.setLastError(1);
|
|
6338
7276
|
var h = emnapiCtx.handleStore.get(arraybuffer);
|
|
7277
|
+
result >>>= 0;
|
|
6339
7278
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6340
7279
|
if (h.isArrayBuffer() && h.value.byteLength === 0) {
|
|
6341
7280
|
try {
|
|
@@ -6371,7 +7310,8 @@ function createNapiModule(options) {
|
|
|
6371
7310
|
napi_is_error: napi_is_error,
|
|
6372
7311
|
napi_is_typedarray: napi_is_typedarray,
|
|
6373
7312
|
napi_strict_equals: napi_strict_equals,
|
|
6374
|
-
napi_typeof: napi_typeof
|
|
7313
|
+
napi_typeof: napi_typeof,
|
|
7314
|
+
node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer
|
|
6375
7315
|
});
|
|
6376
7316
|
function napi_get_version(env, result) {
|
|
6377
7317
|
if (!env)
|
|
@@ -6390,11 +7330,13 @@ function createNapiModule(options) {
|
|
|
6390
7330
|
});
|
|
6391
7331
|
emnapiAWST.init();
|
|
6392
7332
|
emnapiExternalMemory.init();
|
|
7333
|
+
emnapiExternalSAB.init();
|
|
6393
7334
|
emnapiString.init();
|
|
6394
7335
|
emnapiTSFN.init();
|
|
6395
7336
|
PThread.init();
|
|
6396
7337
|
napiModule.emnapi.syncMemory = $emnapiSyncMemory;
|
|
6397
7338
|
napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
|
|
7339
|
+
napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
|
|
6398
7340
|
function addImports(mod) {
|
|
6399
7341
|
var keys = Object.keys(mod);
|
|
6400
7342
|
for (var i = 0; i < keys.length; ++i) {
|
|
@@ -6609,7 +7551,23 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6609
7551
|
if (typeof options.onLoad !== 'function') {
|
|
6610
7552
|
throw new TypeError('options.onLoad is not a function');
|
|
6611
7553
|
}
|
|
6612
|
-
|
|
7554
|
+
const userOnError = options.onError;
|
|
7555
|
+
super({
|
|
7556
|
+
...options,
|
|
7557
|
+
onError: (err, type) => {
|
|
7558
|
+
var _a;
|
|
7559
|
+
const emnapi_thread_crashed = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed;
|
|
7560
|
+
if (typeof emnapi_thread_crashed === 'function') {
|
|
7561
|
+
emnapi_thread_crashed();
|
|
7562
|
+
}
|
|
7563
|
+
if (typeof userOnError === 'function') {
|
|
7564
|
+
userOnError(err, type);
|
|
7565
|
+
}
|
|
7566
|
+
else {
|
|
7567
|
+
throw err;
|
|
7568
|
+
}
|
|
7569
|
+
}
|
|
7570
|
+
});
|
|
6613
7571
|
this.napiModule = undefined;
|
|
6614
7572
|
}
|
|
6615
7573
|
instantiate(data) {
|
|
@@ -6630,21 +7588,21 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6630
7588
|
if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
|
|
6631
7589
|
const type = e.data.__emnapi__.type;
|
|
6632
7590
|
const payload = e.data.__emnapi__.payload;
|
|
6633
|
-
|
|
6634
|
-
|
|
6635
|
-
this.
|
|
6636
|
-
|
|
7591
|
+
try {
|
|
7592
|
+
if (type === 'async-worker-init') {
|
|
7593
|
+
this.handleAfterLoad(e, () => {
|
|
7594
|
+
this.napiModule.initWorker(payload.arg, payload.func);
|
|
7595
|
+
});
|
|
7596
|
+
}
|
|
6637
7597
|
}
|
|
6638
|
-
|
|
6639
|
-
this.
|
|
6640
|
-
this.napiModule.executeAsyncWork(payload.work);
|
|
6641
|
-
});
|
|
7598
|
+
catch (err) {
|
|
7599
|
+
this.onError(err, type);
|
|
6642
7600
|
}
|
|
6643
7601
|
}
|
|
6644
7602
|
}
|
|
6645
7603
|
}
|
|
6646
7604
|
|
|
6647
|
-
const version = "1.
|
|
7605
|
+
const version = "1.11.1";
|
|
6648
7606
|
|
|
6649
7607
|
exports.MessageHandler = MessageHandler;
|
|
6650
7608
|
exports.createNapiModule = createNapiModule;
|