@tailwindcss/oxide-wasm32-wasi 0.0.0-insiders.ebb2d43 → 0.0.0-insiders.ece4824
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 +1208 -472
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +61 -4
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +61 -4
- package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +61 -4
- package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +1296 -479
- package/node_modules/@emnapi/core/dist/emnapi-core.js +1358 -522
- package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +61 -4
- 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 +1208 -472
- 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 +40 -27
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +59 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +59 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +59 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +40 -27
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +40 -27
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +59 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +40 -27
- 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 +22204 -20809
- 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.esm-bundler.js +196 -17
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js +196 -17
- package/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js +1 -1
- package/node_modules/@tybys/wasm-util/dist/wasm-util.js +196 -17
- package/node_modules/@tybys/wasm-util/dist/wasm-util.min.js +1 -1
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js +142 -0
- package/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js +54 -17
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs +142 -0
- package/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs +54 -17
- 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 +4 -0
- package/node_modules/@napi-rs/wasm-runtime/LICENSE +0 -43
- package/node_modules/@napi-rs/wasm-runtime/dist/runtime.js +0 -12288
- 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) {
|
|
@@ -120,10 +119,10 @@ function createNapiModule(options) {
|
|
|
120
119
|
if (!(instance === null || instance === void 0 ? void 0 : instance.exports))
|
|
121
120
|
throw new TypeError('Invalid wasm instance');
|
|
122
121
|
wasmInstance = instance;
|
|
123
|
-
var exports = instance.exports;
|
|
122
|
+
var exports$1 = instance.exports;
|
|
124
123
|
var module = options.module;
|
|
125
|
-
var memory = options.memory || exports.memory;
|
|
126
|
-
var table = options.table || exports.__indirect_function_table;
|
|
124
|
+
var memory = options.memory || exports$1.memory;
|
|
125
|
+
var table = options.table || exports$1.__indirect_function_table;
|
|
127
126
|
if (!(module instanceof _WebAssembly.Module))
|
|
128
127
|
throw new TypeError('Invalid wasm module');
|
|
129
128
|
if (!(memory instanceof _WebAssembly.Memory))
|
|
@@ -132,12 +131,12 @@ function createNapiModule(options) {
|
|
|
132
131
|
throw new TypeError('Invalid wasm table');
|
|
133
132
|
wasmMemory = memory;
|
|
134
133
|
wasmTable = table;
|
|
135
|
-
if (typeof exports.malloc !== 'function')
|
|
134
|
+
if (typeof exports$1.malloc !== 'function')
|
|
136
135
|
throw new TypeError('malloc is not exported');
|
|
137
|
-
if (typeof exports.free !== 'function')
|
|
136
|
+
if (typeof exports$1.free !== 'function')
|
|
138
137
|
throw new TypeError('free is not exported');
|
|
139
|
-
_malloc = exports.malloc;
|
|
140
|
-
_free = exports.free;
|
|
138
|
+
_malloc = exports$1.malloc;
|
|
139
|
+
_free = exports$1.free;
|
|
141
140
|
if (!napiModule.childThread) {
|
|
142
141
|
var moduleApiVersion = 8;
|
|
143
142
|
var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1;
|
|
@@ -148,13 +147,18 @@ function createNapiModule(options) {
|
|
|
148
147
|
var scope_1 = emnapiCtx.openScope(envObject);
|
|
149
148
|
try {
|
|
150
149
|
envObject.callIntoModule(function (_envObject) {
|
|
151
|
-
var exports = napiModule.exports;
|
|
152
|
-
var exportsHandle = scope_1.add(exports);
|
|
150
|
+
var exports$1 = napiModule.exports;
|
|
151
|
+
var exportsHandle = scope_1.add(exports$1);
|
|
153
152
|
var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1;
|
|
154
153
|
var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id);
|
|
155
|
-
napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
|
|
154
|
+
napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value;
|
|
156
155
|
});
|
|
157
156
|
}
|
|
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,29 +856,58 @@ 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
913
|
PThread.runningWorkers.forEach(emnapiTSFN.addListener);
|
|
@@ -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(wasmMemory.buffer), pendng >>> 2) !== 0) {
|
|
936
|
+
emnapiTSFN.enqueue(payload.tsfn);
|
|
937
|
+
}
|
|
865
938
|
}
|
|
866
939
|
}
|
|
867
940
|
};
|
|
@@ -888,6 +961,7 @@ function createNapiModule(options) {
|
|
|
888
961
|
var queue = _malloc(size);
|
|
889
962
|
if (!queue)
|
|
890
963
|
return false;
|
|
964
|
+
queue >>>= 0;
|
|
891
965
|
new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
|
|
892
966
|
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
893
967
|
return true;
|
|
@@ -895,6 +969,12 @@ function createNapiModule(options) {
|
|
|
895
969
|
destroyQueue: function (func) {
|
|
896
970
|
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
897
971
|
if (queue) {
|
|
972
|
+
var node = emnapiTSFN.loadSizeTypeValue(queue, false);
|
|
973
|
+
while (node !== 0) {
|
|
974
|
+
var next = emnapiTSFN.loadSizeTypeValue(node + 4, false);
|
|
975
|
+
_free(node);
|
|
976
|
+
node = next;
|
|
977
|
+
}
|
|
898
978
|
_free(queue);
|
|
899
979
|
}
|
|
900
980
|
},
|
|
@@ -906,6 +986,7 @@ function createNapiModule(options) {
|
|
|
906
986
|
var node = _malloc(size);
|
|
907
987
|
if (!node)
|
|
908
988
|
throw new Error('OOM');
|
|
989
|
+
node >>>= 0;
|
|
909
990
|
emnapiTSFN.storeSizeTypeValue(node, data, false);
|
|
910
991
|
emnapiTSFN.storeSizeTypeValue(node + 4, 0, false);
|
|
911
992
|
if (head === 0 && tail === 0) {
|
|
@@ -941,11 +1022,11 @@ function createNapiModule(options) {
|
|
|
941
1022
|
var waitCondition = function () {
|
|
942
1023
|
var queueSize = emnapiTSFN.getQueueSize(func);
|
|
943
1024
|
var maxSize = emnapiTSFN.getMaxQueueSize(func);
|
|
944
|
-
|
|
945
|
-
return queueSize >= maxSize && maxSize > 0 && !isClosing;
|
|
1025
|
+
return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0;
|
|
946
1026
|
};
|
|
947
1027
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
948
|
-
|
|
1028
|
+
var shouldDelete = false;
|
|
1029
|
+
var ret = mutex.execute(function () {
|
|
949
1030
|
while (waitCondition()) {
|
|
950
1031
|
if (mode === 0) {
|
|
951
1032
|
return 15;
|
|
@@ -955,21 +1036,25 @@ function createNapiModule(options) {
|
|
|
955
1036
|
}
|
|
956
1037
|
cond.wait();
|
|
957
1038
|
}
|
|
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 {
|
|
1039
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
968
1040
|
emnapiTSFN.pushQueue(func, data);
|
|
969
1041
|
emnapiTSFN.send(func);
|
|
970
1042
|
return 0;
|
|
971
1043
|
}
|
|
1044
|
+
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1045
|
+
return 1;
|
|
1046
|
+
}
|
|
1047
|
+
emnapiTSFN.subThreadCount(func);
|
|
1048
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1049
|
+
return 16;
|
|
1050
|
+
}
|
|
1051
|
+
shouldDelete = true;
|
|
1052
|
+
return 16;
|
|
972
1053
|
});
|
|
1054
|
+
if (shouldDelete) {
|
|
1055
|
+
emnapiTSFN.destroy(func);
|
|
1056
|
+
}
|
|
1057
|
+
return ret;
|
|
973
1058
|
},
|
|
974
1059
|
getMutex: function (func) {
|
|
975
1060
|
var index = func + emnapiTSFN.offset.mutex;
|
|
@@ -979,7 +1064,7 @@ function createNapiModule(options) {
|
|
|
979
1064
|
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
980
1065
|
if (isBrowserMain) {
|
|
981
1066
|
while (true) {
|
|
982
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1067
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
983
1068
|
if (oldValue === 0) {
|
|
984
1069
|
return;
|
|
985
1070
|
}
|
|
@@ -987,18 +1072,18 @@ function createNapiModule(options) {
|
|
|
987
1072
|
}
|
|
988
1073
|
else {
|
|
989
1074
|
while (true) {
|
|
990
|
-
var oldValue = Atomics.compareExchange(i32a, 0, 0,
|
|
1075
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
991
1076
|
if (oldValue === 0) {
|
|
992
1077
|
return;
|
|
993
1078
|
}
|
|
994
|
-
Atomics.wait(i32a, 0,
|
|
1079
|
+
Atomics.wait(i32a, 0, 10);
|
|
995
1080
|
}
|
|
996
1081
|
}
|
|
997
1082
|
},
|
|
998
1083
|
unlock: function () {
|
|
999
1084
|
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
1000
|
-
var oldValue = Atomics.compareExchange(i32a, 0,
|
|
1001
|
-
if (oldValue !==
|
|
1085
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1086
|
+
if (oldValue !== 10) {
|
|
1002
1087
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
1003
1088
|
}
|
|
1004
1089
|
Atomics.notify(i32a, 0, 1);
|
|
@@ -1041,14 +1126,14 @@ function createNapiModule(options) {
|
|
|
1041
1126
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1042
1127
|
var arr, index;
|
|
1043
1128
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1044
|
-
index = (func + offset)
|
|
1129
|
+
index = (func + offset) >>> 2;
|
|
1045
1130
|
Atomics.add(arr, index, 1);
|
|
1046
1131
|
},
|
|
1047
1132
|
subQueueSize: function (func) {
|
|
1048
1133
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1049
1134
|
var arr, index;
|
|
1050
1135
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1051
|
-
index = (func + offset)
|
|
1136
|
+
index = (func + offset) >>> 2;
|
|
1052
1137
|
Atomics.sub(arr, index, 1);
|
|
1053
1138
|
},
|
|
1054
1139
|
getThreadCount: function (func) {
|
|
@@ -1058,30 +1143,30 @@ function createNapiModule(options) {
|
|
|
1058
1143
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1059
1144
|
var arr, index;
|
|
1060
1145
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1061
|
-
index = (func + offset)
|
|
1146
|
+
index = (func + offset) >>> 2;
|
|
1062
1147
|
Atomics.add(arr, index, 1);
|
|
1063
1148
|
},
|
|
1064
1149
|
subThreadCount: function (func) {
|
|
1065
1150
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1066
1151
|
var arr, index;
|
|
1067
1152
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1068
|
-
index = (func + offset)
|
|
1153
|
+
index = (func + offset) >>> 2;
|
|
1069
1154
|
Atomics.sub(arr, index, 1);
|
|
1070
1155
|
},
|
|
1071
|
-
|
|
1072
|
-
return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.
|
|
1156
|
+
getState: function (func) {
|
|
1157
|
+
return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2);
|
|
1073
1158
|
},
|
|
1074
|
-
|
|
1075
|
-
Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.
|
|
1159
|
+
setState: function (func, value) {
|
|
1160
|
+
Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2, value);
|
|
1076
1161
|
},
|
|
1077
1162
|
getHandlesClosing: function (func) {
|
|
1078
|
-
return Atomics.load(new
|
|
1163
|
+
return Atomics.load(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing));
|
|
1079
1164
|
},
|
|
1080
1165
|
setHandlesClosing: function (func, value) {
|
|
1081
|
-
Atomics.store(new
|
|
1166
|
+
Atomics.store(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing), value);
|
|
1082
1167
|
},
|
|
1083
1168
|
getDispatchState: function (func) {
|
|
1084
|
-
return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state)
|
|
1169
|
+
return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
|
|
1085
1170
|
},
|
|
1086
1171
|
getContext: function (func) {
|
|
1087
1172
|
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
@@ -1112,12 +1197,12 @@ function createNapiModule(options) {
|
|
|
1112
1197
|
var arr;
|
|
1113
1198
|
if (unsigned) {
|
|
1114
1199
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1115
|
-
ret = Atomics.load(arr, offset
|
|
1200
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1116
1201
|
return ret;
|
|
1117
1202
|
}
|
|
1118
1203
|
else {
|
|
1119
1204
|
arr = new Int32Array(wasmMemory.buffer);
|
|
1120
|
-
ret = Atomics.load(arr, offset
|
|
1205
|
+
ret = Atomics.load(arr, offset >>> 2);
|
|
1121
1206
|
return ret;
|
|
1122
1207
|
}
|
|
1123
1208
|
},
|
|
@@ -1125,52 +1210,80 @@ function createNapiModule(options) {
|
|
|
1125
1210
|
var arr;
|
|
1126
1211
|
if (unsigned) {
|
|
1127
1212
|
arr = new Uint32Array(wasmMemory.buffer);
|
|
1128
|
-
Atomics.store(arr, offset
|
|
1213
|
+
Atomics.store(arr, offset >>> 2, value);
|
|
1129
1214
|
return undefined;
|
|
1130
1215
|
}
|
|
1131
1216
|
else {
|
|
1132
1217
|
arr = new Int32Array(wasmMemory.buffer);
|
|
1133
|
-
Atomics.store(arr, offset
|
|
1218
|
+
Atomics.store(arr, offset >>> 2, value >>> 0);
|
|
1134
1219
|
return undefined;
|
|
1135
1220
|
}
|
|
1136
1221
|
},
|
|
1222
|
+
releaseResources: function (func) {
|
|
1223
|
+
if (emnapiTSFN.getState(func) !== 2) {
|
|
1224
|
+
emnapiTSFN.setState(func, 2);
|
|
1225
|
+
var env = emnapiTSFN.getEnv(func);
|
|
1226
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
1227
|
+
var ref = emnapiTSFN.getRef(func);
|
|
1228
|
+
if (ref) {
|
|
1229
|
+
emnapiCtx.refStore.get(ref).dispose();
|
|
1230
|
+
}
|
|
1231
|
+
var resource = emnapiTSFN.getResource(func);
|
|
1232
|
+
emnapiCtx.refStore.get(resource).dispose();
|
|
1233
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1234
|
+
HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
|
|
1235
|
+
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1236
|
+
envObject.unref();
|
|
1237
|
+
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
|
|
1238
|
+
var arr = new Uint32Array(wasmMemory.buffer);
|
|
1239
|
+
if (Atomics.load(arr, asyncRefOffset) > 0) {
|
|
1240
|
+
Atomics.store(arr, asyncRefOffset, 0);
|
|
1241
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1242
|
+
}
|
|
1243
|
+
if (emnapiNodeBinding) {
|
|
1244
|
+
var view = new DataView(wasmMemory.buffer);
|
|
1245
|
+
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1246
|
+
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1247
|
+
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
},
|
|
1137
1251
|
destroy: function (func) {
|
|
1252
|
+
emnapiTSFN._liveSet.delete(func);
|
|
1138
1253
|
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
|
-
}
|
|
1254
|
+
emnapiTSFN.releaseResources(func);
|
|
1161
1255
|
_free(func);
|
|
1162
1256
|
},
|
|
1163
|
-
|
|
1257
|
+
emptyQueue: function (func) {
|
|
1258
|
+
var drainQueue = [];
|
|
1259
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1260
|
+
while (emnapiTSFN.getQueueSize(func) > 0) {
|
|
1261
|
+
drainQueue.push(emnapiTSFN.shiftQueue(func));
|
|
1262
|
+
}
|
|
1263
|
+
});
|
|
1164
1264
|
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
1165
1265
|
var context = emnapiTSFN.getContext(func);
|
|
1166
1266
|
var data;
|
|
1167
|
-
|
|
1168
|
-
data =
|
|
1267
|
+
for (var i = 0; i < drainQueue.length; i++) {
|
|
1268
|
+
data = drainQueue[i];
|
|
1169
1269
|
if (callJsCb) {
|
|
1170
1270
|
(wasmTable.get(callJsCb))(0, 0, context, data);
|
|
1171
1271
|
}
|
|
1172
1272
|
}
|
|
1173
|
-
|
|
1273
|
+
},
|
|
1274
|
+
maybeDelete: function (func) {
|
|
1275
|
+
var shouldDelete = false;
|
|
1276
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
1277
|
+
if (emnapiTSFN.getThreadCount(func) > 0) {
|
|
1278
|
+
emnapiTSFN.releaseResources(func);
|
|
1279
|
+
}
|
|
1280
|
+
else {
|
|
1281
|
+
shouldDelete = true;
|
|
1282
|
+
}
|
|
1283
|
+
});
|
|
1284
|
+
if (shouldDelete) {
|
|
1285
|
+
emnapiTSFN.destroy(func);
|
|
1286
|
+
}
|
|
1174
1287
|
},
|
|
1175
1288
|
finalize: function (func) {
|
|
1176
1289
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1183,6 +1296,7 @@ function createNapiModule(options) {
|
|
|
1183
1296
|
envObject.callFinalizerInternal(0, finalize, data, context);
|
|
1184
1297
|
};
|
|
1185
1298
|
try {
|
|
1299
|
+
emnapiTSFN.emptyQueue(func);
|
|
1186
1300
|
if (finalize) {
|
|
1187
1301
|
if (emnapiNodeBinding) {
|
|
1188
1302
|
var resource = emnapiTSFN.getResource(func);
|
|
@@ -1200,7 +1314,7 @@ function createNapiModule(options) {
|
|
|
1200
1314
|
f();
|
|
1201
1315
|
}
|
|
1202
1316
|
}
|
|
1203
|
-
emnapiTSFN.
|
|
1317
|
+
emnapiTSFN.maybeDelete(func);
|
|
1204
1318
|
}
|
|
1205
1319
|
finally {
|
|
1206
1320
|
emnapiCtx.closeScope(envObject);
|
|
@@ -1216,7 +1330,7 @@ function createNapiModule(options) {
|
|
|
1216
1330
|
try {
|
|
1217
1331
|
if (set_closing) {
|
|
1218
1332
|
emnapiTSFN.getMutex(func).execute(function () {
|
|
1219
|
-
emnapiTSFN.
|
|
1333
|
+
emnapiTSFN.setState(func, 1);
|
|
1220
1334
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1221
1335
|
emnapiTSFN.getCond(func).signal();
|
|
1222
1336
|
}
|
|
@@ -1226,6 +1340,7 @@ function createNapiModule(options) {
|
|
|
1226
1340
|
return;
|
|
1227
1341
|
}
|
|
1228
1342
|
emnapiTSFN.setHandlesClosing(func, 1);
|
|
1343
|
+
Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
|
|
1229
1344
|
emnapiCtx.feature.setImmediate(function () {
|
|
1230
1345
|
emnapiTSFN.finalize(func);
|
|
1231
1346
|
});
|
|
@@ -1241,10 +1356,7 @@ function createNapiModule(options) {
|
|
|
1241
1356
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1242
1357
|
var cond = emnapiTSFN.getCond(func);
|
|
1243
1358
|
mutex.execute(function () {
|
|
1244
|
-
if (emnapiTSFN.
|
|
1245
|
-
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1246
|
-
}
|
|
1247
|
-
else {
|
|
1359
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1248
1360
|
var size = emnapiTSFN.getQueueSize(func);
|
|
1249
1361
|
if (size > 0) {
|
|
1250
1362
|
data = emnapiTSFN.shiftQueue(func);
|
|
@@ -1257,7 +1369,7 @@ function createNapiModule(options) {
|
|
|
1257
1369
|
}
|
|
1258
1370
|
if (size === 0) {
|
|
1259
1371
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1260
|
-
emnapiTSFN.
|
|
1372
|
+
emnapiTSFN.setState(func, 1);
|
|
1261
1373
|
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1262
1374
|
cond.signal();
|
|
1263
1375
|
}
|
|
@@ -1268,6 +1380,9 @@ function createNapiModule(options) {
|
|
|
1268
1380
|
has_more = true;
|
|
1269
1381
|
}
|
|
1270
1382
|
}
|
|
1383
|
+
else {
|
|
1384
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
1385
|
+
}
|
|
1271
1386
|
});
|
|
1272
1387
|
if (popped_value) {
|
|
1273
1388
|
var env = emnapiTSFN.getEnv(func);
|
|
@@ -1315,7 +1430,7 @@ function createNapiModule(options) {
|
|
|
1315
1430
|
var has_more = true;
|
|
1316
1431
|
var iterations_left = 1000;
|
|
1317
1432
|
var ui32a = new Uint32Array(wasmMemory.buffer);
|
|
1318
|
-
var index = (func + emnapiTSFN.offset.dispatch_state)
|
|
1433
|
+
var index = (func + emnapiTSFN.offset.dispatch_state) >>> 2;
|
|
1319
1434
|
while (has_more && --iterations_left !== 0) {
|
|
1320
1435
|
Atomics.store(ui32a, index, 1);
|
|
1321
1436
|
has_more = emnapiTSFN.dispatchOne(func);
|
|
@@ -1327,25 +1442,65 @@ function createNapiModule(options) {
|
|
|
1327
1442
|
emnapiTSFN.send(func);
|
|
1328
1443
|
}
|
|
1329
1444
|
},
|
|
1330
|
-
|
|
1331
|
-
var
|
|
1332
|
-
|
|
1445
|
+
enqueue: function (func) {
|
|
1446
|
+
var pending = func + emnapiTSFN.offset.async_pending;
|
|
1447
|
+
var scheduled = func + emnapiTSFN.offset.async_u_fd;
|
|
1448
|
+
var i32a = new Int32Array(wasmMemory.buffer);
|
|
1449
|
+
if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
|
|
1333
1450
|
return;
|
|
1334
1451
|
}
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1452
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1453
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1454
|
+
return;
|
|
1455
|
+
}
|
|
1456
|
+
if (Atomics.load(i32a, pending >>> 2) === 0) {
|
|
1457
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1458
|
+
return;
|
|
1459
|
+
}
|
|
1460
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1461
|
+
try {
|
|
1462
|
+
if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) {
|
|
1463
|
+
return;
|
|
1464
|
+
}
|
|
1465
|
+
if (!emnapiTSFN._liveSet.has(func)) {
|
|
1466
|
+
return;
|
|
1467
|
+
}
|
|
1468
|
+
emnapiTSFN.dispatch(func);
|
|
1469
|
+
}
|
|
1470
|
+
finally {
|
|
1471
|
+
if (emnapiTSFN._liveSet.has(func)) {
|
|
1472
|
+
Atomics.store(i32a, scheduled >>> 2, 0);
|
|
1473
|
+
if (Atomics.load(i32a, pending >>> 2) !== 0) {
|
|
1474
|
+
emnapiTSFN.enqueue(func);
|
|
1475
|
+
}
|
|
1341
1476
|
}
|
|
1342
1477
|
}
|
|
1343
1478
|
});
|
|
1479
|
+
});
|
|
1480
|
+
},
|
|
1481
|
+
send: function (func) {
|
|
1482
|
+
var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2, 1 << 1);
|
|
1483
|
+
if ((current_state & 1) === 1) {
|
|
1484
|
+
return;
|
|
1344
1485
|
}
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1486
|
+
var pendng = func + emnapiTSFN.offset.async_pending;
|
|
1487
|
+
if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) {
|
|
1488
|
+
return;
|
|
1489
|
+
}
|
|
1490
|
+
if (Atomics.exchange(new Int32Array(wasmMemory.buffer), pendng >>> 2, 1) === 0) {
|
|
1491
|
+
if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
|
|
1492
|
+
postMessage({
|
|
1493
|
+
__emnapi__: {
|
|
1494
|
+
type: 'tsfn-send',
|
|
1495
|
+
payload: {
|
|
1496
|
+
tsfn: func
|
|
1497
|
+
}
|
|
1498
|
+
}
|
|
1499
|
+
});
|
|
1500
|
+
}
|
|
1501
|
+
else {
|
|
1502
|
+
emnapiTSFN.enqueue(func);
|
|
1503
|
+
}
|
|
1349
1504
|
}
|
|
1350
1505
|
}
|
|
1351
1506
|
};
|
|
@@ -1356,6 +1511,13 @@ function createNapiModule(options) {
|
|
|
1356
1511
|
envObject.checkGCAccess();
|
|
1357
1512
|
if (!async_resource_name)
|
|
1358
1513
|
return envObject.setLastError(1);
|
|
1514
|
+
max_queue_size >>>= 0;
|
|
1515
|
+
initial_thread_count >>>= 0;
|
|
1516
|
+
env >>>= 0;
|
|
1517
|
+
thread_finalize_data >>>= 0;
|
|
1518
|
+
thread_finalize_cb >>>= 0;
|
|
1519
|
+
context >>>= 0;
|
|
1520
|
+
call_js_cb >>>= 0;
|
|
1359
1521
|
max_queue_size = max_queue_size >>> 0;
|
|
1360
1522
|
initial_thread_count = initial_thread_count >>> 0;
|
|
1361
1523
|
if (initial_thread_count === 0) {
|
|
@@ -1364,6 +1526,7 @@ function createNapiModule(options) {
|
|
|
1364
1526
|
if (!result)
|
|
1365
1527
|
return envObject.setLastError(1);
|
|
1366
1528
|
var ref = 0;
|
|
1529
|
+
func >>>= 0;
|
|
1367
1530
|
if (!func) {
|
|
1368
1531
|
if (!call_js_cb)
|
|
1369
1532
|
return envObject.setLastError(1);
|
|
@@ -1393,34 +1556,38 @@ function createNapiModule(options) {
|
|
|
1393
1556
|
}
|
|
1394
1557
|
asyncResourceName = String(asyncResourceName);
|
|
1395
1558
|
var resource_name = envObject.ensureHandleId(asyncResourceName);
|
|
1396
|
-
var sizeofTSFN = emnapiTSFN.offset.
|
|
1559
|
+
var sizeofTSFN = emnapiTSFN.offset.__size__;
|
|
1397
1560
|
var tsfn = _malloc(sizeofTSFN);
|
|
1398
1561
|
if (!tsfn)
|
|
1399
1562
|
return envObject.setLastError(9);
|
|
1563
|
+
tsfn >>>= 0;
|
|
1400
1564
|
new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
1401
1565
|
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
|
|
1402
1566
|
var resource_ = resourceRef.id;
|
|
1403
1567
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1404
|
-
HEAP_DATA_VIEW.
|
|
1568
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true);
|
|
1405
1569
|
if (!emnapiTSFN.initQueue(tsfn)) {
|
|
1406
1570
|
_free(tsfn);
|
|
1407
1571
|
resourceRef.dispose();
|
|
1408
1572
|
return envObject.setLastError(9);
|
|
1409
1573
|
}
|
|
1410
1574
|
_emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
|
|
1575
|
+
HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true);
|
|
1411
1576
|
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true);
|
|
1412
|
-
HEAP_DATA_VIEW.
|
|
1577
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true);
|
|
1413
1578
|
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.
|
|
1579
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true);
|
|
1580
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true);
|
|
1581
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true);
|
|
1582
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true);
|
|
1583
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true);
|
|
1419
1584
|
emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
|
|
1585
|
+
emnapiTSFN._liveSet.add(tsfn);
|
|
1420
1586
|
envObject.ref();
|
|
1421
1587
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1422
|
-
HEAP_DATA_VIEW.
|
|
1423
|
-
|
|
1588
|
+
HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true);
|
|
1589
|
+
result >>>= 0;
|
|
1590
|
+
HEAP_DATA_VIEW.setUint32(result, tsfn, true);
|
|
1424
1591
|
return envObject.clearLastError();
|
|
1425
1592
|
}
|
|
1426
1593
|
function napi_get_threadsafe_function_context(func, result) {
|
|
@@ -1428,9 +1595,11 @@ function createNapiModule(options) {
|
|
|
1428
1595
|
abort();
|
|
1429
1596
|
return 1;
|
|
1430
1597
|
}
|
|
1598
|
+
func >>>= 0;
|
|
1599
|
+
result >>>= 0;
|
|
1431
1600
|
var context = emnapiTSFN.getContext(func);
|
|
1432
1601
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1433
|
-
HEAP_DATA_VIEW.
|
|
1602
|
+
HEAP_DATA_VIEW.setUint32(result, context, true);
|
|
1434
1603
|
return 0;
|
|
1435
1604
|
}
|
|
1436
1605
|
function napi_call_threadsafe_function(func, data, mode) {
|
|
@@ -1438,6 +1607,8 @@ function createNapiModule(options) {
|
|
|
1438
1607
|
abort();
|
|
1439
1608
|
return 1;
|
|
1440
1609
|
}
|
|
1610
|
+
func >>>= 0;
|
|
1611
|
+
data >>>= 0;
|
|
1441
1612
|
return emnapiTSFN.push(func, data, mode);
|
|
1442
1613
|
}
|
|
1443
1614
|
function napi_acquire_threadsafe_function(func) {
|
|
@@ -1445,13 +1616,14 @@ function createNapiModule(options) {
|
|
|
1445
1616
|
abort();
|
|
1446
1617
|
return 1;
|
|
1447
1618
|
}
|
|
1619
|
+
func >>>= 0;
|
|
1448
1620
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1449
1621
|
return mutex.execute(function () {
|
|
1450
|
-
if (emnapiTSFN.
|
|
1451
|
-
|
|
1622
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1623
|
+
emnapiTSFN.addThreadCount(func);
|
|
1624
|
+
return 0;
|
|
1452
1625
|
}
|
|
1453
|
-
|
|
1454
|
-
return 0;
|
|
1626
|
+
return 16;
|
|
1455
1627
|
});
|
|
1456
1628
|
}
|
|
1457
1629
|
function napi_release_threadsafe_function(func, mode) {
|
|
@@ -1459,37 +1631,51 @@ function createNapiModule(options) {
|
|
|
1459
1631
|
abort();
|
|
1460
1632
|
return 1;
|
|
1461
1633
|
}
|
|
1634
|
+
func >>>= 0;
|
|
1462
1635
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1463
1636
|
var cond = emnapiTSFN.getCond(func);
|
|
1464
|
-
|
|
1637
|
+
var shouldDelete = false;
|
|
1638
|
+
var ret = mutex.execute(function () {
|
|
1465
1639
|
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
1466
1640
|
return 1;
|
|
1467
1641
|
}
|
|
1468
1642
|
emnapiTSFN.subThreadCount(func);
|
|
1469
1643
|
if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) {
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
if (
|
|
1644
|
+
if (emnapiTSFN.getState(func) === 0) {
|
|
1645
|
+
if (mode === 1) {
|
|
1646
|
+
emnapiTSFN.setState(func, 1);
|
|
1647
|
+
}
|
|
1648
|
+
if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
1475
1649
|
cond.signal();
|
|
1476
1650
|
}
|
|
1477
1651
|
emnapiTSFN.send(func);
|
|
1478
1652
|
}
|
|
1479
1653
|
}
|
|
1654
|
+
if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) {
|
|
1655
|
+
return 0;
|
|
1656
|
+
}
|
|
1657
|
+
shouldDelete = true;
|
|
1480
1658
|
return 0;
|
|
1481
1659
|
});
|
|
1660
|
+
if (shouldDelete) {
|
|
1661
|
+
emnapiTSFN.destroy(func);
|
|
1662
|
+
}
|
|
1663
|
+
return ret;
|
|
1482
1664
|
}
|
|
1483
1665
|
function napi_unref_threadsafe_function(env, func) {
|
|
1484
1666
|
if (!func) {
|
|
1485
1667
|
abort();
|
|
1486
1668
|
return 1;
|
|
1487
1669
|
}
|
|
1488
|
-
|
|
1489
|
-
var
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1670
|
+
func >>>= 0;
|
|
1671
|
+
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
|
|
1672
|
+
var arr = new Uint32Array(wasmMemory.buffer);
|
|
1673
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1674
|
+
if (currentValue > 0) {
|
|
1675
|
+
Atomics.store(arr, asyncRefOffset, currentValue - 1);
|
|
1676
|
+
if (currentValue === 1) {
|
|
1677
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1678
|
+
}
|
|
1493
1679
|
}
|
|
1494
1680
|
return 0;
|
|
1495
1681
|
}
|
|
@@ -1498,34 +1684,57 @@ function createNapiModule(options) {
|
|
|
1498
1684
|
abort();
|
|
1499
1685
|
return 1;
|
|
1500
1686
|
}
|
|
1501
|
-
|
|
1502
|
-
var
|
|
1503
|
-
|
|
1504
|
-
|
|
1687
|
+
func >>>= 0;
|
|
1688
|
+
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2;
|
|
1689
|
+
var arr = new Uint32Array(wasmMemory.buffer);
|
|
1690
|
+
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1691
|
+
if (!currentValue) {
|
|
1505
1692
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1506
1693
|
}
|
|
1694
|
+
Atomics.store(arr, asyncRefOffset, currentValue + 1);
|
|
1507
1695
|
return 0;
|
|
1508
1696
|
}
|
|
1509
1697
|
var emnapiAWMT = {
|
|
1510
|
-
|
|
1511
|
-
runningWorkers: [],
|
|
1512
|
-
workQueue: [],
|
|
1698
|
+
pool: [],
|
|
1513
1699
|
workerReady: null,
|
|
1700
|
+
globalAddress: 0,
|
|
1701
|
+
globalOffset: {
|
|
1702
|
+
idle_threads: 0,
|
|
1703
|
+
q: 1 * 4,
|
|
1704
|
+
next: 1 * 4,
|
|
1705
|
+
prev: 2 * 4,
|
|
1706
|
+
mutex: 3 * 4,
|
|
1707
|
+
cond: 4 * 4,
|
|
1708
|
+
exit_message: 5 * 4,
|
|
1709
|
+
end: 7 * 4
|
|
1710
|
+
},
|
|
1514
1711
|
offset: {
|
|
1515
1712
|
resource: 0,
|
|
1516
1713
|
async_id: 8,
|
|
1517
1714
|
trigger_async_id: 16,
|
|
1518
1715
|
env: 24,
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1716
|
+
status: 1 * 4 + 24,
|
|
1717
|
+
queue: 2 * 4 + 24,
|
|
1718
|
+
queue_next: 2 * 4 + 24,
|
|
1719
|
+
queue_prev: 3 * 4 + 24,
|
|
1720
|
+
data: 4 * 4 + 24,
|
|
1721
|
+
execute: 5 * 4 + 24,
|
|
1722
|
+
complete: 6 * 4 + 24,
|
|
1723
|
+
end: 7 * 4 + 24
|
|
1523
1724
|
},
|
|
1524
1725
|
init: function () {
|
|
1525
|
-
emnapiAWMT.
|
|
1526
|
-
emnapiAWMT.runningWorkers = [];
|
|
1527
|
-
emnapiAWMT.workQueue = [];
|
|
1726
|
+
emnapiAWMT.pool = [];
|
|
1528
1727
|
emnapiAWMT.workerReady = null;
|
|
1728
|
+
if (typeof PThread !== 'undefined') {
|
|
1729
|
+
PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
|
|
1730
|
+
PThread.runningWorkers.forEach(emnapiAWMT.addListener);
|
|
1731
|
+
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
1732
|
+
PThread.getNewWorker = function () {
|
|
1733
|
+
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
1734
|
+
emnapiAWMT.addListener(r);
|
|
1735
|
+
return r;
|
|
1736
|
+
};
|
|
1737
|
+
}
|
|
1529
1738
|
},
|
|
1530
1739
|
addListener: function (worker) {
|
|
1531
1740
|
if (!worker)
|
|
@@ -1539,18 +1748,8 @@ function createNapiModule(options) {
|
|
|
1539
1748
|
var type = __emnapi__.type;
|
|
1540
1749
|
var payload = __emnapi__.payload;
|
|
1541
1750
|
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
1751
|
emnapiAWMT.callComplete(payload.work, 0);
|
|
1547
1752
|
}
|
|
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
1753
|
}
|
|
1555
1754
|
};
|
|
1556
1755
|
var dispose = function () {
|
|
@@ -1571,142 +1770,221 @@ function createNapiModule(options) {
|
|
|
1571
1770
|
}
|
|
1572
1771
|
return true;
|
|
1573
1772
|
},
|
|
1773
|
+
initGlobal: function () {
|
|
1774
|
+
if (!emnapiAWMT.globalAddress) {
|
|
1775
|
+
emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end);
|
|
1776
|
+
emnapiAWMT.globalAddress >>>= 0;
|
|
1777
|
+
var size = emnapiAWMT.globalOffset.end;
|
|
1778
|
+
var addr = emnapiAWMT.globalAddress;
|
|
1779
|
+
new Uint8Array(wasmMemory.buffer, addr, size).fill(0);
|
|
1780
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
|
|
1781
|
+
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
|
|
1782
|
+
}
|
|
1783
|
+
},
|
|
1784
|
+
terminateWorkers: function () {
|
|
1785
|
+
emnapiAWMT.pool.forEach(function (w) {
|
|
1786
|
+
var _a, _b;
|
|
1787
|
+
(_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
1788
|
+
(_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
1789
|
+
w.terminate();
|
|
1790
|
+
});
|
|
1791
|
+
emnapiAWMT.pool.length = 0;
|
|
1792
|
+
},
|
|
1574
1793
|
initWorkers: function (n) {
|
|
1575
1794
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
1576
1795
|
return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve());
|
|
1577
1796
|
}
|
|
1578
1797
|
if (emnapiAWMT.workerReady)
|
|
1579
1798
|
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
1799
|
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
1586
1800
|
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
1587
1801
|
}
|
|
1802
|
+
var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create;
|
|
1803
|
+
var args = [];
|
|
1804
|
+
emnapiAWMT.initGlobal();
|
|
1588
1805
|
for (var i = 0; i < n; ++i) {
|
|
1589
|
-
args.push(
|
|
1806
|
+
args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress));
|
|
1590
1807
|
}
|
|
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);
|
|
1808
|
+
var promises = args.map(function (index) {
|
|
1809
|
+
if (index === 0) {
|
|
1810
|
+
return Promise.reject(new Error('Failed to create async worker'));
|
|
1613
1811
|
}
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1812
|
+
var worker;
|
|
1813
|
+
if (index < 0) {
|
|
1814
|
+
worker = emnapiAWMT.pool[-index - 1];
|
|
1815
|
+
if (worker)
|
|
1816
|
+
return worker.whenLoaded;
|
|
1619
1817
|
}
|
|
1620
|
-
|
|
1621
|
-
|
|
1818
|
+
index >>>= 0;
|
|
1819
|
+
var view = new DataView(wasmMemory.buffer);
|
|
1820
|
+
var tidOffset = 20;
|
|
1821
|
+
var tid = view.getInt32(index + tidOffset, true);
|
|
1822
|
+
worker = PThread.pthreads[tid];
|
|
1823
|
+
return worker.whenLoaded;
|
|
1824
|
+
});
|
|
1622
1825
|
emnapiAWMT.workerReady = Promise.all(promises);
|
|
1623
1826
|
return emnapiAWMT.workerReady;
|
|
1624
1827
|
},
|
|
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
1828
|
getResource: function (work) {
|
|
1639
|
-
|
|
1829
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1830
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
|
|
1640
1831
|
},
|
|
1641
1832
|
getExecute: function (work) {
|
|
1642
|
-
|
|
1833
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1834
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
|
|
1643
1835
|
},
|
|
1644
1836
|
getComplete: function (work) {
|
|
1645
|
-
|
|
1837
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1838
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
|
|
1646
1839
|
},
|
|
1647
1840
|
getEnv: function (work) {
|
|
1648
|
-
|
|
1841
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1842
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
|
|
1649
1843
|
},
|
|
1650
1844
|
getData: function (work) {
|
|
1651
|
-
|
|
1845
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1846
|
+
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
|
|
1847
|
+
},
|
|
1848
|
+
getMutex: function () {
|
|
1849
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex;
|
|
1850
|
+
var mutex = {
|
|
1851
|
+
lock: function () {
|
|
1852
|
+
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1853
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
1854
|
+
if (isBrowserMain) {
|
|
1855
|
+
while (true) {
|
|
1856
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1857
|
+
if (oldValue === 0) {
|
|
1858
|
+
return;
|
|
1859
|
+
}
|
|
1860
|
+
}
|
|
1861
|
+
}
|
|
1862
|
+
else {
|
|
1863
|
+
while (true) {
|
|
1864
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
1865
|
+
if (oldValue === 0) {
|
|
1866
|
+
return;
|
|
1867
|
+
}
|
|
1868
|
+
Atomics.wait(i32a, 0, 10);
|
|
1869
|
+
}
|
|
1870
|
+
}
|
|
1871
|
+
},
|
|
1872
|
+
unlock: function () {
|
|
1873
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
1874
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1875
|
+
if (oldValue !== 10) {
|
|
1876
|
+
throw new Error('Tried to unlock while not holding the mutex');
|
|
1877
|
+
}
|
|
1878
|
+
Atomics.notify(i32a, 0, 1);
|
|
1879
|
+
},
|
|
1880
|
+
execute: function (fn) {
|
|
1881
|
+
mutex.lock();
|
|
1882
|
+
try {
|
|
1883
|
+
return fn();
|
|
1884
|
+
}
|
|
1885
|
+
finally {
|
|
1886
|
+
mutex.unlock();
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
};
|
|
1890
|
+
return mutex;
|
|
1891
|
+
},
|
|
1892
|
+
getCond: function () {
|
|
1893
|
+
var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond;
|
|
1894
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1895
|
+
var cond = {
|
|
1896
|
+
wait: function () {
|
|
1897
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
1898
|
+
var value = Atomics.load(i32a, 0);
|
|
1899
|
+
mutex.unlock();
|
|
1900
|
+
Atomics.wait(i32a, 0, value);
|
|
1901
|
+
mutex.lock();
|
|
1902
|
+
},
|
|
1903
|
+
signal: function () {
|
|
1904
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
1905
|
+
Atomics.add(i32a, 0, 1);
|
|
1906
|
+
Atomics.notify(i32a, 0, 1);
|
|
1907
|
+
}
|
|
1908
|
+
};
|
|
1909
|
+
return cond;
|
|
1910
|
+
},
|
|
1911
|
+
queueInit: function (q) {
|
|
1912
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1913
|
+
HEAP_DATA_VIEW.setUint32(q, q, true);
|
|
1914
|
+
HEAP_DATA_VIEW.setUint32(q + 4, q, true);
|
|
1915
|
+
},
|
|
1916
|
+
queueInsertTail: function (h, q) {
|
|
1917
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1918
|
+
HEAP_DATA_VIEW.setUint32(q, h, true);
|
|
1919
|
+
var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
|
|
1920
|
+
HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true);
|
|
1921
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1922
|
+
HEAP_DATA_VIEW.setUint32(qprev, q, true);
|
|
1923
|
+
HEAP_DATA_VIEW.setUint32(h + 4, q, true);
|
|
1924
|
+
},
|
|
1925
|
+
queueRemove: function (q) {
|
|
1926
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1927
|
+
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1928
|
+
var qnext = HEAP_DATA_VIEW.getUint32(q, true);
|
|
1929
|
+
HEAP_DATA_VIEW.setUint32(qprev, qnext, true);
|
|
1930
|
+
HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
|
|
1931
|
+
},
|
|
1932
|
+
queueEmpty: function (q) {
|
|
1933
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1934
|
+
return q == HEAP_DATA_VIEW.getUint32(q, true);
|
|
1652
1935
|
},
|
|
1653
1936
|
scheduleWork: function (work) {
|
|
1654
1937
|
var _a;
|
|
1655
|
-
if (
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
}
|
|
1938
|
+
if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) {
|
|
1939
|
+
emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
|
|
1940
|
+
emnapiAWMT.workerReady.ready = true;
|
|
1941
|
+
}).catch(function (err) {
|
|
1942
|
+
emnapiAWMT.workerReady = null;
|
|
1943
|
+
throw err;
|
|
1662
1944
|
});
|
|
1663
|
-
return;
|
|
1664
1945
|
}
|
|
1665
1946
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1666
|
-
emnapiAWMT.
|
|
1667
|
-
|
|
1668
|
-
|
|
1947
|
+
var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
|
|
1948
|
+
Atomics.store(statusBuffer, 0, 0);
|
|
1949
|
+
var mutex = emnapiAWMT.getMutex();
|
|
1950
|
+
var cond = emnapiAWMT.getCond();
|
|
1951
|
+
mutex.lock();
|
|
1952
|
+
try {
|
|
1953
|
+
emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue);
|
|
1669
1954
|
}
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
};
|
|
1675
|
-
try {
|
|
1676
|
-
emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () {
|
|
1677
|
-
emnapiAWMT.workerReady.ready = true;
|
|
1678
|
-
emnapiAWMT.checkIdleWorker();
|
|
1679
|
-
}, fail);
|
|
1680
|
-
}
|
|
1681
|
-
catch (err) {
|
|
1682
|
-
fail(err);
|
|
1683
|
-
}
|
|
1955
|
+
catch (err) {
|
|
1956
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1957
|
+
mutex.unlock();
|
|
1958
|
+
throw err;
|
|
1684
1959
|
}
|
|
1960
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1961
|
+
if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
|
|
1962
|
+
cond.signal();
|
|
1963
|
+
}
|
|
1964
|
+
mutex.unlock();
|
|
1685
1965
|
},
|
|
1686
1966
|
cancelWork: function (work) {
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1967
|
+
var cancelled = false;
|
|
1968
|
+
emnapiAWMT.getMutex().execute(function () {
|
|
1969
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1970
|
+
cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
|
|
1971
|
+
if (cancelled) {
|
|
1972
|
+
emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue);
|
|
1973
|
+
}
|
|
1974
|
+
});
|
|
1975
|
+
if (!cancelled) {
|
|
1976
|
+
return 9;
|
|
1696
1977
|
}
|
|
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;
|
|
1978
|
+
if (Atomics.compareExchange(new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
|
|
1979
|
+
return 9;
|
|
1706
1980
|
}
|
|
1707
|
-
|
|
1981
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
1982
|
+
emnapiAWMT.callComplete(work, 11);
|
|
1983
|
+
});
|
|
1984
|
+
return 0;
|
|
1708
1985
|
},
|
|
1709
1986
|
callComplete: function (work, status) {
|
|
1987
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1710
1988
|
var complete = emnapiAWMT.getComplete(work);
|
|
1711
1989
|
var env = emnapiAWMT.getEnv(work);
|
|
1712
1990
|
var data = emnapiAWMT.getData(work);
|
|
@@ -1741,6 +2019,7 @@ function createNapiModule(options) {
|
|
|
1741
2019
|
}
|
|
1742
2020
|
}
|
|
1743
2021
|
};
|
|
2022
|
+
emnapiAWMT.init();
|
|
1744
2023
|
var napi_create_async_work = singleThreadAsyncWork
|
|
1745
2024
|
? function (env, resource, resource_name, execute, complete, data, result) {
|
|
1746
2025
|
if (!env)
|
|
@@ -1762,8 +2041,9 @@ function createNapiModule(options) {
|
|
|
1762
2041
|
return envObject.setLastError(1);
|
|
1763
2042
|
var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
|
|
1764
2043
|
var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
|
|
2044
|
+
result >>>= 0;
|
|
1765
2045
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1766
|
-
HEAP_DATA_VIEW.
|
|
2046
|
+
HEAP_DATA_VIEW.setUint32(result, id, true);
|
|
1767
2047
|
return envObject.clearLastError();
|
|
1768
2048
|
}
|
|
1769
2049
|
: function (env, resource, resource_name, execute, complete, data, result) {
|
|
@@ -1788,18 +2068,21 @@ function createNapiModule(options) {
|
|
|
1788
2068
|
var aw = _malloc(sizeofAW);
|
|
1789
2069
|
if (!aw)
|
|
1790
2070
|
return envObject.setLastError(9);
|
|
2071
|
+
aw >>>= 0;
|
|
1791
2072
|
new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0);
|
|
1792
2073
|
var s = envObject.ensureHandleId(resourceObject);
|
|
1793
2074
|
var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
|
|
1794
2075
|
var resource_ = resourceRef.id;
|
|
1795
2076
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1796
|
-
HEAP_DATA_VIEW.
|
|
2077
|
+
HEAP_DATA_VIEW.setUint32(aw, resource_, true);
|
|
1797
2078
|
_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
|
-
|
|
2079
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true);
|
|
2080
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true);
|
|
2081
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true);
|
|
2082
|
+
HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true);
|
|
2083
|
+
emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue);
|
|
2084
|
+
result >>>= 0;
|
|
2085
|
+
HEAP_DATA_VIEW.setUint32(result, aw, true);
|
|
1803
2086
|
return envObject.clearLastError();
|
|
1804
2087
|
};
|
|
1805
2088
|
var napi_delete_async_work = singleThreadAsyncWork
|
|
@@ -1810,6 +2093,7 @@ function createNapiModule(options) {
|
|
|
1810
2093
|
envObject.checkGCAccess();
|
|
1811
2094
|
if (!work)
|
|
1812
2095
|
return envObject.setLastError(1);
|
|
2096
|
+
work >>>= 0;
|
|
1813
2097
|
emnapiAWST.remove(work);
|
|
1814
2098
|
return envObject.clearLastError();
|
|
1815
2099
|
}
|
|
@@ -1820,6 +2104,7 @@ function createNapiModule(options) {
|
|
|
1820
2104
|
envObject.checkGCAccess();
|
|
1821
2105
|
if (!work)
|
|
1822
2106
|
return envObject.setLastError(1);
|
|
2107
|
+
work >>>= 0;
|
|
1823
2108
|
var resource = emnapiAWMT.getResource(work);
|
|
1824
2109
|
emnapiCtx.refStore.get(resource).dispose();
|
|
1825
2110
|
if (emnapiNodeBinding) {
|
|
@@ -1838,6 +2123,7 @@ function createNapiModule(options) {
|
|
|
1838
2123
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1839
2124
|
if (!work)
|
|
1840
2125
|
return envObject.setLastError(1);
|
|
2126
|
+
work >>>= 0;
|
|
1841
2127
|
emnapiAWST.queue(work);
|
|
1842
2128
|
return envObject.clearLastError();
|
|
1843
2129
|
}
|
|
@@ -1847,6 +2133,7 @@ function createNapiModule(options) {
|
|
|
1847
2133
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1848
2134
|
if (!work)
|
|
1849
2135
|
return envObject.setLastError(1);
|
|
2136
|
+
work >>>= 0;
|
|
1850
2137
|
emnapiAWMT.scheduleWork(work);
|
|
1851
2138
|
return envObject.clearLastError();
|
|
1852
2139
|
};
|
|
@@ -1857,6 +2144,7 @@ function createNapiModule(options) {
|
|
|
1857
2144
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1858
2145
|
if (!work)
|
|
1859
2146
|
return envObject.setLastError(1);
|
|
2147
|
+
work >>>= 0;
|
|
1860
2148
|
var status = emnapiAWST.cancel(work);
|
|
1861
2149
|
if (status === 0)
|
|
1862
2150
|
return envObject.clearLastError();
|
|
@@ -1868,41 +2156,124 @@ function createNapiModule(options) {
|
|
|
1868
2156
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1869
2157
|
if (!work)
|
|
1870
2158
|
return envObject.setLastError(1);
|
|
2159
|
+
work >>>= 0;
|
|
1871
2160
|
var status = emnapiAWMT.cancelWork(work);
|
|
1872
2161
|
if (status === 0)
|
|
1873
2162
|
return envObject.clearLastError();
|
|
1874
2163
|
return envObject.setLastError(status);
|
|
1875
2164
|
};
|
|
1876
|
-
function
|
|
2165
|
+
function _emnapi_async_worker(globalAddress) {
|
|
2166
|
+
globalAddress >>>= 0;
|
|
2167
|
+
emnapiAWMT.globalAddress = globalAddress;
|
|
2168
|
+
var mutex = emnapiAWMT.getMutex();
|
|
2169
|
+
var cond = emnapiAWMT.getCond();
|
|
2170
|
+
mutex.lock();
|
|
2171
|
+
var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message;
|
|
2172
|
+
var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads;
|
|
2173
|
+
var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
|
|
2174
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2175
|
+
for (;;) {
|
|
2176
|
+
while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
|
|
2177
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
|
|
2178
|
+
cond.wait();
|
|
2179
|
+
Atomics.sub(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1);
|
|
2180
|
+
}
|
|
2181
|
+
var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
|
|
2182
|
+
if (q === exitMessageAddr) {
|
|
2183
|
+
cond.signal();
|
|
2184
|
+
mutex.unlock();
|
|
2185
|
+
break;
|
|
2186
|
+
}
|
|
2187
|
+
var work = q - emnapiAWMT.offset.queue;
|
|
2188
|
+
emnapiAWMT.queueRemove(q);
|
|
2189
|
+
emnapiAWMT.queueInit(q);
|
|
2190
|
+
mutex.unlock();
|
|
2191
|
+
var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1);
|
|
2192
|
+
if (Atomics.load(statusBuffer, 0) === 1) {
|
|
2193
|
+
abort('unreachable');
|
|
2194
|
+
}
|
|
2195
|
+
var execute = emnapiAWMT.getExecute(work);
|
|
2196
|
+
var env = emnapiAWMT.getEnv(work);
|
|
2197
|
+
var data = emnapiAWMT.getData(work);
|
|
2198
|
+
(wasmTable.get(execute))(env, data);
|
|
2199
|
+
Atomics.store(statusBuffer, 0, 2);
|
|
2200
|
+
var postMessage_1 = napiModule.postMessage;
|
|
2201
|
+
postMessage_1({
|
|
2202
|
+
__emnapi__: {
|
|
2203
|
+
type: 'async-work-complete',
|
|
2204
|
+
payload: { work: work }
|
|
2205
|
+
}
|
|
2206
|
+
});
|
|
2207
|
+
mutex.lock();
|
|
2208
|
+
}
|
|
2209
|
+
return 0;
|
|
2210
|
+
}
|
|
2211
|
+
function _emnapi_spawn_worker(f, globalAddress) {
|
|
2212
|
+
if (typeof onCreateWorker !== 'function') {
|
|
2213
|
+
throw new TypeError('`options.onCreateWorker` is not a function');
|
|
2214
|
+
}
|
|
2215
|
+
var promises = [];
|
|
2216
|
+
var args = [];
|
|
2217
|
+
if (!('emnapi_async_worker_create' in wasmInstance.exports)) {
|
|
2218
|
+
throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags');
|
|
2219
|
+
}
|
|
2220
|
+
args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0));
|
|
2221
|
+
var handleError = function (e) {
|
|
2222
|
+
if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) {
|
|
2223
|
+
emnapiAWMT.terminateWorkers();
|
|
2224
|
+
}
|
|
2225
|
+
};
|
|
2226
|
+
var ret;
|
|
2227
|
+
try {
|
|
2228
|
+
var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' });
|
|
2229
|
+
var p = PThread.loadWasmModuleToWorker(worker_1);
|
|
2230
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
2231
|
+
worker_1.on('error', handleError);
|
|
2232
|
+
}
|
|
2233
|
+
else {
|
|
2234
|
+
worker_1.addEventListener('error', handleError, false);
|
|
2235
|
+
}
|
|
2236
|
+
emnapiAWMT.addListener(worker_1);
|
|
2237
|
+
emnapiTSFN.addListener(worker_1);
|
|
2238
|
+
promises.push(p.then(function () {
|
|
2239
|
+
if (typeof worker_1.unref === 'function') {
|
|
2240
|
+
worker_1.unref();
|
|
2241
|
+
}
|
|
2242
|
+
}));
|
|
2243
|
+
ret = emnapiAWMT.pool.push(worker_1) - 1;
|
|
2244
|
+
var arg = args[0];
|
|
2245
|
+
worker_1.threadBlockBase = arg;
|
|
2246
|
+
worker_1.postMessage({
|
|
2247
|
+
__emnapi__: {
|
|
2248
|
+
type: 'async-worker-init',
|
|
2249
|
+
payload: { arg: arg, func: [f, globalAddress] }
|
|
2250
|
+
}
|
|
2251
|
+
});
|
|
2252
|
+
}
|
|
2253
|
+
catch (err) {
|
|
2254
|
+
var arg = args[0];
|
|
2255
|
+
_free(arg);
|
|
2256
|
+
throw err;
|
|
2257
|
+
}
|
|
2258
|
+
return ret;
|
|
2259
|
+
}
|
|
2260
|
+
function initWorker(startArg, func) {
|
|
1877
2261
|
if (napiModule.childThread) {
|
|
1878
2262
|
if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') {
|
|
1879
2263
|
throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags');
|
|
1880
2264
|
}
|
|
1881
2265
|
wasmInstance.exports.emnapi_async_worker_init(startArg);
|
|
2266
|
+
(wasmTable.get(func[0]))(func[1]);
|
|
1882
2267
|
}
|
|
1883
2268
|
else {
|
|
1884
2269
|
throw new Error('startThread is only available in child threads');
|
|
1885
2270
|
}
|
|
1886
2271
|
}
|
|
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
2272
|
napiModule.initWorker = initWorker;
|
|
1903
|
-
napiModule.executeAsyncWork = executeAsyncWork;
|
|
1904
2273
|
var asyncWorkMod = Object.freeze({
|
|
1905
2274
|
__proto__: null,
|
|
2275
|
+
_emnapi_async_worker: _emnapi_async_worker,
|
|
2276
|
+
_emnapi_spawn_worker: _emnapi_spawn_worker,
|
|
1906
2277
|
napi_cancel_async_work: napi_cancel_async_work,
|
|
1907
2278
|
napi_create_async_work: napi_create_async_work,
|
|
1908
2279
|
napi_delete_async_work: napi_delete_async_work,
|
|
@@ -1917,6 +2288,10 @@ function createNapiModule(options) {
|
|
|
1917
2288
|
emnapiExternalMemory.table = new WeakMap();
|
|
1918
2289
|
emnapiExternalMemory.wasmMemoryViewTable = new WeakMap();
|
|
1919
2290
|
},
|
|
2291
|
+
isSharedArrayBuffer: function (value) {
|
|
2292
|
+
return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) ||
|
|
2293
|
+
(Object.prototype.toString.call(value) === '[object SharedArrayBuffer]'));
|
|
2294
|
+
},
|
|
1920
2295
|
isDetachedArrayBuffer: function (arrayBuffer) {
|
|
1921
2296
|
if (arrayBuffer.byteLength === 0) {
|
|
1922
2297
|
try {
|
|
@@ -1959,6 +2334,7 @@ function createNapiModule(options) {
|
|
|
1959
2334
|
var pointer = _malloc(arrayBuffer.byteLength);
|
|
1960
2335
|
if (!pointer)
|
|
1961
2336
|
throw new Error('Out of memory');
|
|
2337
|
+
pointer >>>= 0;
|
|
1962
2338
|
new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer);
|
|
1963
2339
|
info.address = pointer;
|
|
1964
2340
|
info.ownership = emnapiExternalMemory.registry ? 0 : 1;
|
|
@@ -1980,8 +2356,7 @@ function createNapiModule(options) {
|
|
|
1980
2356
|
}
|
|
1981
2357
|
return view;
|
|
1982
2358
|
}
|
|
1983
|
-
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) ||
|
|
1984
|
-
((typeof SharedArrayBuffer === 'function') && (view.buffer instanceof SharedArrayBuffer));
|
|
2359
|
+
var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer);
|
|
1985
2360
|
if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) {
|
|
1986
2361
|
var info = emnapiExternalMemory.wasmMemoryViewTable.get(view);
|
|
1987
2362
|
var Ctor = info.Ctor;
|
|
@@ -2114,7 +2489,7 @@ function createNapiModule(options) {
|
|
|
2114
2489
|
ptr >>>= 0;
|
|
2115
2490
|
var HEAPU8 = new Uint8Array(wasmMemory.buffer);
|
|
2116
2491
|
var end = ptr;
|
|
2117
|
-
if (length === -1) {
|
|
2492
|
+
if (length === -1 || length === 4294967295) {
|
|
2118
2493
|
for (; HEAPU8[end];)
|
|
2119
2494
|
++end;
|
|
2120
2495
|
}
|
|
@@ -2205,12 +2580,12 @@ function createNapiModule(options) {
|
|
|
2205
2580
|
return '';
|
|
2206
2581
|
ptr >>>= 0;
|
|
2207
2582
|
var end = ptr;
|
|
2208
|
-
if (length === -1) {
|
|
2209
|
-
var idx = end
|
|
2583
|
+
if (length === -1 || length === 4294967295) {
|
|
2584
|
+
var idx = end >>> 1;
|
|
2210
2585
|
var HEAPU16 = new Uint16Array(wasmMemory.buffer);
|
|
2211
2586
|
while (HEAPU16[idx])
|
|
2212
2587
|
++idx;
|
|
2213
|
-
end = idx << 1;
|
|
2588
|
+
end = (idx << 1) >>> 0;
|
|
2214
2589
|
}
|
|
2215
2590
|
else {
|
|
2216
2591
|
end = ptr + (length >>> 0) * 2;
|
|
@@ -2241,11 +2616,12 @@ function createNapiModule(options) {
|
|
|
2241
2616
|
return outPtr - startPtr;
|
|
2242
2617
|
},
|
|
2243
2618
|
newString: function (env, str, length, result, stringMaker) {
|
|
2619
|
+
length >>>= 0;
|
|
2244
2620
|
if (!env)
|
|
2245
2621
|
return 1;
|
|
2246
2622
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2247
2623
|
envObject.checkGCAccess();
|
|
2248
|
-
var autoLength = length === -1;
|
|
2624
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2249
2625
|
var sizelength = length >>> 0;
|
|
2250
2626
|
if (length !== 0) {
|
|
2251
2627
|
if (!str)
|
|
@@ -2255,18 +2631,21 @@ function createNapiModule(options) {
|
|
|
2255
2631
|
return envObject.setLastError(1);
|
|
2256
2632
|
if (!(autoLength || (sizelength <= 2147483647)))
|
|
2257
2633
|
return envObject.setLastError(1);
|
|
2634
|
+
str >>>= 0;
|
|
2258
2635
|
var strValue = stringMaker(str, autoLength, sizelength);
|
|
2636
|
+
result >>>= 0;
|
|
2259
2637
|
var value = emnapiCtx.addToCurrentScope(strValue).id;
|
|
2260
2638
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2261
|
-
HEAP_DATA_VIEW.
|
|
2639
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
2262
2640
|
return envObject.clearLastError();
|
|
2263
2641
|
},
|
|
2264
2642
|
newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
|
|
2643
|
+
length >>>= 0;
|
|
2265
2644
|
if (!env)
|
|
2266
2645
|
return 1;
|
|
2267
2646
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2268
2647
|
envObject.checkGCAccess();
|
|
2269
|
-
var autoLength = length === -1;
|
|
2648
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
2270
2649
|
var sizelength = length >>> 0;
|
|
2271
2650
|
if (length !== 0) {
|
|
2272
2651
|
if (!str)
|
|
@@ -2308,6 +2687,7 @@ function createNapiModule(options) {
|
|
|
2308
2687
|
if (!handle.isArray()) {
|
|
2309
2688
|
return envObject.setLastError(8);
|
|
2310
2689
|
}
|
|
2690
|
+
result >>>= 0;
|
|
2311
2691
|
var v = handle.value.length >>> 0;
|
|
2312
2692
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2313
2693
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2326,19 +2706,55 @@ function createNapiModule(options) {
|
|
|
2326
2706
|
if (!arraybuffer)
|
|
2327
2707
|
return envObject.setLastError(1);
|
|
2328
2708
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
2329
|
-
if (!handle.isArrayBuffer()) {
|
|
2709
|
+
if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
2330
2710
|
return envObject.setLastError(1);
|
|
2331
2711
|
}
|
|
2332
2712
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2333
2713
|
if (data) {
|
|
2714
|
+
data >>>= 0;
|
|
2334
2715
|
var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address;
|
|
2335
|
-
HEAP_DATA_VIEW.
|
|
2716
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2336
2717
|
}
|
|
2337
2718
|
if (byte_length) {
|
|
2719
|
+
byte_length >>>= 0;
|
|
2338
2720
|
HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true);
|
|
2339
2721
|
}
|
|
2340
2722
|
return envObject.clearLastError();
|
|
2341
2723
|
}
|
|
2724
|
+
function node_api_set_prototype(env, object, value) {
|
|
2725
|
+
if (!env)
|
|
2726
|
+
return 1;
|
|
2727
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
2728
|
+
envObject.checkGCAccess();
|
|
2729
|
+
if (!envObject.tryCatch.isEmpty())
|
|
2730
|
+
return envObject.setLastError(10);
|
|
2731
|
+
if (!envObject.canCallIntoJs())
|
|
2732
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
2733
|
+
envObject.clearLastError();
|
|
2734
|
+
try {
|
|
2735
|
+
if (!value)
|
|
2736
|
+
return envObject.setLastError(1);
|
|
2737
|
+
var obj = emnapiCtx.handleStore.get(object).value;
|
|
2738
|
+
if (obj == null) {
|
|
2739
|
+
throw new TypeError('Cannot convert undefined or null to object');
|
|
2740
|
+
}
|
|
2741
|
+
var type = typeof obj;
|
|
2742
|
+
var v = void 0;
|
|
2743
|
+
try {
|
|
2744
|
+
v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj);
|
|
2745
|
+
}
|
|
2746
|
+
catch (_) {
|
|
2747
|
+
return envObject.setLastError(2);
|
|
2748
|
+
}
|
|
2749
|
+
var val = emnapiCtx.handleStore.get(value).value;
|
|
2750
|
+
Object.setPrototypeOf(v, val);
|
|
2751
|
+
return envObject.getReturnStatus();
|
|
2752
|
+
}
|
|
2753
|
+
catch (err) {
|
|
2754
|
+
envObject.tryCatch.setError(err);
|
|
2755
|
+
return envObject.setLastError(10);
|
|
2756
|
+
}
|
|
2757
|
+
}
|
|
2342
2758
|
function napi_get_prototype(env, value, result) {
|
|
2343
2759
|
if (!env)
|
|
2344
2760
|
return 1;
|
|
@@ -2365,9 +2781,10 @@ function createNapiModule(options) {
|
|
|
2365
2781
|
catch (_) {
|
|
2366
2782
|
return envObject.setLastError(2);
|
|
2367
2783
|
}
|
|
2784
|
+
result >>>= 0;
|
|
2368
2785
|
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
2369
2786
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2370
|
-
HEAP_DATA_VIEW.
|
|
2787
|
+
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
2371
2788
|
return envObject.getReturnStatus();
|
|
2372
2789
|
}
|
|
2373
2790
|
catch (err) {
|
|
@@ -2389,6 +2806,7 @@ function createNapiModule(options) {
|
|
|
2389
2806
|
var v = handle.value;
|
|
2390
2807
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2391
2808
|
if (type) {
|
|
2809
|
+
type >>>= 0;
|
|
2392
2810
|
var t = void 0;
|
|
2393
2811
|
if (v instanceof Int8Array) {
|
|
2394
2812
|
t = 0;
|
|
@@ -2411,6 +2829,9 @@ function createNapiModule(options) {
|
|
|
2411
2829
|
else if (v instanceof Uint32Array) {
|
|
2412
2830
|
t = 6;
|
|
2413
2831
|
}
|
|
2832
|
+
else if (typeof Float16Array === 'function' && v instanceof Float16Array) {
|
|
2833
|
+
t = 11;
|
|
2834
|
+
}
|
|
2414
2835
|
else if (v instanceof Float32Array) {
|
|
2415
2836
|
t = 7;
|
|
2416
2837
|
}
|
|
@@ -2428,22 +2849,25 @@ function createNapiModule(options) {
|
|
|
2428
2849
|
}
|
|
2429
2850
|
HEAP_DATA_VIEW.setInt32(type, t, true);
|
|
2430
2851
|
}
|
|
2852
|
+
v = emnapiExternalMemory.getOrUpdateMemoryView(v);
|
|
2431
2853
|
if (length) {
|
|
2854
|
+
length >>>= 0;
|
|
2432
2855
|
HEAP_DATA_VIEW.setUint32(length, v.length, true);
|
|
2433
2856
|
}
|
|
2434
|
-
var buffer;
|
|
2435
2857
|
if (data || arraybuffer) {
|
|
2436
|
-
buffer = v.buffer;
|
|
2437
2858
|
if (data) {
|
|
2859
|
+
data >>>= 0;
|
|
2438
2860
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2439
|
-
HEAP_DATA_VIEW.
|
|
2861
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2440
2862
|
}
|
|
2441
2863
|
if (arraybuffer) {
|
|
2442
|
-
|
|
2443
|
-
|
|
2864
|
+
arraybuffer >>>= 0;
|
|
2865
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2866
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2444
2867
|
}
|
|
2445
2868
|
}
|
|
2446
2869
|
if (byte_offset) {
|
|
2870
|
+
byte_offset >>>= 0;
|
|
2447
2871
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2448
2872
|
}
|
|
2449
2873
|
return envObject.clearLastError();
|
|
@@ -2474,24 +2898,26 @@ function createNapiModule(options) {
|
|
|
2474
2898
|
if (!handle.isDataView()) {
|
|
2475
2899
|
return envObject.setLastError(1);
|
|
2476
2900
|
}
|
|
2477
|
-
var v = handle.value;
|
|
2901
|
+
var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value);
|
|
2478
2902
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2479
2903
|
if (byte_length) {
|
|
2904
|
+
byte_length >>>= 0;
|
|
2480
2905
|
HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true);
|
|
2481
2906
|
}
|
|
2482
|
-
var buffer;
|
|
2483
2907
|
if (data || arraybuffer) {
|
|
2484
|
-
buffer = v.buffer;
|
|
2485
2908
|
if (data) {
|
|
2909
|
+
data >>>= 0;
|
|
2486
2910
|
var p = emnapiExternalMemory.getViewPointer(v, true).address;
|
|
2487
|
-
HEAP_DATA_VIEW.
|
|
2911
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
2488
2912
|
}
|
|
2489
2913
|
if (arraybuffer) {
|
|
2490
|
-
|
|
2491
|
-
|
|
2914
|
+
arraybuffer >>>= 0;
|
|
2915
|
+
var ab = envObject.ensureHandleId(v.buffer);
|
|
2916
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true);
|
|
2492
2917
|
}
|
|
2493
2918
|
}
|
|
2494
2919
|
if (byte_offset) {
|
|
2920
|
+
byte_offset >>>= 0;
|
|
2495
2921
|
HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true);
|
|
2496
2922
|
}
|
|
2497
2923
|
return envObject.clearLastError();
|
|
@@ -2516,6 +2942,7 @@ function createNapiModule(options) {
|
|
|
2516
2942
|
if (!handle.isDate()) {
|
|
2517
2943
|
return envObject.setLastError(1);
|
|
2518
2944
|
}
|
|
2945
|
+
result >>>= 0;
|
|
2519
2946
|
v = handle.value.valueOf();
|
|
2520
2947
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2521
2948
|
HEAP_DATA_VIEW.setFloat64(result, v, true);
|
|
@@ -2539,6 +2966,7 @@ function createNapiModule(options) {
|
|
|
2539
2966
|
if (typeof handle.value !== 'boolean') {
|
|
2540
2967
|
return envObject.setLastError(7);
|
|
2541
2968
|
}
|
|
2969
|
+
result >>>= 0;
|
|
2542
2970
|
var r = handle.value ? 1 : 0;
|
|
2543
2971
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2544
2972
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -2557,6 +2985,7 @@ function createNapiModule(options) {
|
|
|
2557
2985
|
if (typeof handle.value !== 'number') {
|
|
2558
2986
|
return envObject.setLastError(6);
|
|
2559
2987
|
}
|
|
2988
|
+
result >>>= 0;
|
|
2560
2989
|
var r = handle.value;
|
|
2561
2990
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2562
2991
|
HEAP_DATA_VIEW.setFloat64(result, r, true);
|
|
@@ -2581,6 +3010,8 @@ function createNapiModule(options) {
|
|
|
2581
3010
|
if (typeof numberValue !== 'bigint') {
|
|
2582
3011
|
return envObject.setLastError(6);
|
|
2583
3012
|
}
|
|
3013
|
+
lossless >>>= 0;
|
|
3014
|
+
result >>>= 0;
|
|
2584
3015
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2585
3016
|
if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) {
|
|
2586
3017
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2617,6 +3048,8 @@ function createNapiModule(options) {
|
|
|
2617
3048
|
if (typeof numberValue !== 'bigint') {
|
|
2618
3049
|
return envObject.setLastError(6);
|
|
2619
3050
|
}
|
|
3051
|
+
lossless >>>= 0;
|
|
3052
|
+
result >>>= 0;
|
|
2620
3053
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2621
3054
|
if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) {
|
|
2622
3055
|
HEAP_DATA_VIEW.setInt8(lossless, 1, true);
|
|
@@ -2648,8 +3081,12 @@ function createNapiModule(options) {
|
|
|
2648
3081
|
return envObject.setLastError(17);
|
|
2649
3082
|
}
|
|
2650
3083
|
var isMinus = handle.value < BigInt(0);
|
|
3084
|
+
sign_bit >>>= 0;
|
|
3085
|
+
words >>>= 0;
|
|
3086
|
+
word_count >>>= 0;
|
|
2651
3087
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2652
3088
|
var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true);
|
|
3089
|
+
word_count_int >>>= 0;
|
|
2653
3090
|
var wordCount = 0;
|
|
2654
3091
|
var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value;
|
|
2655
3092
|
while (bigintValue !== BigInt(0)) {
|
|
@@ -2697,9 +3134,10 @@ function createNapiModule(options) {
|
|
|
2697
3134
|
if (!handle.isExternal()) {
|
|
2698
3135
|
return envObject.setLastError(1);
|
|
2699
3136
|
}
|
|
3137
|
+
result >>>= 0;
|
|
2700
3138
|
var p = handle.data();
|
|
2701
3139
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2702
|
-
HEAP_DATA_VIEW.
|
|
3140
|
+
HEAP_DATA_VIEW.setUint32(result, p, true);
|
|
2703
3141
|
return envObject.clearLastError();
|
|
2704
3142
|
}
|
|
2705
3143
|
function napi_get_value_int32(env, value, result) {
|
|
@@ -2715,6 +3153,7 @@ function createNapiModule(options) {
|
|
|
2715
3153
|
if (typeof handle.value !== 'number') {
|
|
2716
3154
|
return envObject.setLastError(6);
|
|
2717
3155
|
}
|
|
3156
|
+
result >>>= 0;
|
|
2718
3157
|
var v = new Int32Array([handle.value])[0];
|
|
2719
3158
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2720
3159
|
HEAP_DATA_VIEW.setInt32(result, v, true);
|
|
@@ -2734,6 +3173,7 @@ function createNapiModule(options) {
|
|
|
2734
3173
|
return envObject.setLastError(6);
|
|
2735
3174
|
}
|
|
2736
3175
|
var numberValue = handle.value;
|
|
3176
|
+
result >>>= 0;
|
|
2737
3177
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2738
3178
|
if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
|
|
2739
3179
|
HEAP_DATA_VIEW.setInt32(result, 0, true);
|
|
@@ -2759,6 +3199,9 @@ function createNapiModule(options) {
|
|
|
2759
3199
|
envObject.checkGCAccess();
|
|
2760
3200
|
if (!value)
|
|
2761
3201
|
return envObject.setLastError(1);
|
|
3202
|
+
result >>>= 0;
|
|
3203
|
+
buf >>>= 0;
|
|
3204
|
+
buf_size >>>= 0;
|
|
2762
3205
|
buf_size = buf_size >>> 0;
|
|
2763
3206
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2764
3207
|
if (typeof handle.value !== 'string') {
|
|
@@ -2795,6 +3238,9 @@ function createNapiModule(options) {
|
|
|
2795
3238
|
envObject.checkGCAccess();
|
|
2796
3239
|
if (!value)
|
|
2797
3240
|
return envObject.setLastError(1);
|
|
3241
|
+
result >>>= 0;
|
|
3242
|
+
buf >>>= 0;
|
|
3243
|
+
buf_size >>>= 0;
|
|
2798
3244
|
buf_size = buf_size >>> 0;
|
|
2799
3245
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2800
3246
|
if (typeof handle.value !== 'string') {
|
|
@@ -2825,6 +3271,9 @@ function createNapiModule(options) {
|
|
|
2825
3271
|
envObject.checkGCAccess();
|
|
2826
3272
|
if (!value)
|
|
2827
3273
|
return envObject.setLastError(1);
|
|
3274
|
+
result >>>= 0;
|
|
3275
|
+
buf >>>= 0;
|
|
3276
|
+
buf_size >>>= 0;
|
|
2828
3277
|
buf_size = buf_size >>> 0;
|
|
2829
3278
|
var handle = emnapiCtx.handleStore.get(value);
|
|
2830
3279
|
if (typeof handle.value !== 'string') {
|
|
@@ -2860,6 +3309,7 @@ function createNapiModule(options) {
|
|
|
2860
3309
|
if (typeof handle.value !== 'number') {
|
|
2861
3310
|
return envObject.setLastError(6);
|
|
2862
3311
|
}
|
|
3312
|
+
result >>>= 0;
|
|
2863
3313
|
var v = new Uint32Array([handle.value])[0];
|
|
2864
3314
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2865
3315
|
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
@@ -2885,7 +3335,8 @@ function createNapiModule(options) {
|
|
|
2885
3335
|
napi_get_value_string_latin1: napi_get_value_string_latin1,
|
|
2886
3336
|
napi_get_value_string_utf16: napi_get_value_string_utf16,
|
|
2887
3337
|
napi_get_value_string_utf8: napi_get_value_string_utf8,
|
|
2888
|
-
napi_get_value_uint32: napi_get_value_uint32
|
|
3338
|
+
napi_get_value_uint32: napi_get_value_uint32,
|
|
3339
|
+
node_api_set_prototype: node_api_set_prototype
|
|
2889
3340
|
});
|
|
2890
3341
|
function napi_create_int32(env, value, result) {
|
|
2891
3342
|
if (!env)
|
|
@@ -2894,9 +3345,10 @@ function createNapiModule(options) {
|
|
|
2894
3345
|
envObject.checkGCAccess();
|
|
2895
3346
|
if (!result)
|
|
2896
3347
|
return envObject.setLastError(1);
|
|
3348
|
+
result >>>= 0;
|
|
2897
3349
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2898
3350
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2899
|
-
HEAP_DATA_VIEW.
|
|
3351
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
2900
3352
|
return envObject.clearLastError();
|
|
2901
3353
|
}
|
|
2902
3354
|
function napi_create_uint32(env, value, result) {
|
|
@@ -2906,9 +3358,10 @@ function createNapiModule(options) {
|
|
|
2906
3358
|
envObject.checkGCAccess();
|
|
2907
3359
|
if (!result)
|
|
2908
3360
|
return envObject.setLastError(1);
|
|
3361
|
+
result >>>= 0;
|
|
2909
3362
|
var v = emnapiCtx.addToCurrentScope(value >>> 0).id;
|
|
2910
3363
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2911
|
-
HEAP_DATA_VIEW.
|
|
3364
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
2912
3365
|
return envObject.clearLastError();
|
|
2913
3366
|
}
|
|
2914
3367
|
function napi_create_int64(env, low, high, result) {
|
|
@@ -2921,8 +3374,9 @@ function createNapiModule(options) {
|
|
|
2921
3374
|
return envObject.setLastError(1);
|
|
2922
3375
|
value = Number(low);
|
|
2923
3376
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3377
|
+
high >>>= 0;
|
|
2924
3378
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2925
|
-
HEAP_DATA_VIEW.
|
|
3379
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
2926
3380
|
return envObject.clearLastError();
|
|
2927
3381
|
}
|
|
2928
3382
|
function napi_create_double(env, value, result) {
|
|
@@ -2932,9 +3386,10 @@ function createNapiModule(options) {
|
|
|
2932
3386
|
envObject.checkGCAccess();
|
|
2933
3387
|
if (!result)
|
|
2934
3388
|
return envObject.setLastError(1);
|
|
3389
|
+
result >>>= 0;
|
|
2935
3390
|
var v = emnapiCtx.addToCurrentScope(value).id;
|
|
2936
3391
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2937
|
-
HEAP_DATA_VIEW.
|
|
3392
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
2938
3393
|
return envObject.clearLastError();
|
|
2939
3394
|
}
|
|
2940
3395
|
function napi_create_string_latin1(env, str, length, result) {
|
|
@@ -3002,8 +3457,9 @@ function createNapiModule(options) {
|
|
|
3002
3457
|
return envObject.setLastError(1);
|
|
3003
3458
|
value = low;
|
|
3004
3459
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3460
|
+
high >>>= 0;
|
|
3005
3461
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3006
|
-
HEAP_DATA_VIEW.
|
|
3462
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3007
3463
|
return envObject.clearLastError();
|
|
3008
3464
|
}
|
|
3009
3465
|
function napi_create_bigint_uint64(env, low, high, result) {
|
|
@@ -3019,8 +3475,9 @@ function createNapiModule(options) {
|
|
|
3019
3475
|
return envObject.setLastError(1);
|
|
3020
3476
|
value = low & ((BigInt(1) << BigInt(64)) - BigInt(1));
|
|
3021
3477
|
var v1 = emnapiCtx.addToCurrentScope(value).id;
|
|
3478
|
+
high >>>= 0;
|
|
3022
3479
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3023
|
-
HEAP_DATA_VIEW.
|
|
3480
|
+
HEAP_DATA_VIEW.setUint32(high, v1, true);
|
|
3024
3481
|
return envObject.clearLastError();
|
|
3025
3482
|
}
|
|
3026
3483
|
function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
|
|
@@ -3040,6 +3497,8 @@ function createNapiModule(options) {
|
|
|
3040
3497
|
}
|
|
3041
3498
|
if (!result)
|
|
3042
3499
|
return envObject.setLastError(1);
|
|
3500
|
+
words >>>= 0;
|
|
3501
|
+
word_count >>>= 0;
|
|
3043
3502
|
word_count = word_count >>> 0;
|
|
3044
3503
|
if (word_count > 2147483647) {
|
|
3045
3504
|
return envObject.setLastError(1);
|
|
@@ -3056,8 +3515,9 @@ function createNapiModule(options) {
|
|
|
3056
3515
|
value += wordi << BigInt(64 * i);
|
|
3057
3516
|
}
|
|
3058
3517
|
value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1));
|
|
3518
|
+
result >>>= 0;
|
|
3059
3519
|
v = emnapiCtx.addToCurrentScope(value).id;
|
|
3060
|
-
HEAP_DATA_VIEW.
|
|
3520
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3061
3521
|
return envObject.getReturnStatus();
|
|
3062
3522
|
}
|
|
3063
3523
|
catch (err) {
|
|
@@ -3084,6 +3544,7 @@ function createNapiModule(options) {
|
|
|
3084
3544
|
node_api_create_property_key_utf8: node_api_create_property_key_utf8
|
|
3085
3545
|
});
|
|
3086
3546
|
function emnapiCreateFunction(envObject, utf8name, length, cb, data) {
|
|
3547
|
+
utf8name >>>= 0;
|
|
3087
3548
|
var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length));
|
|
3088
3549
|
var f;
|
|
3089
3550
|
var napiCallback = (wasmTable.get(cb));
|
|
@@ -3224,9 +3685,10 @@ function createNapiModule(options) {
|
|
|
3224
3685
|
if (!finalize_cb)
|
|
3225
3686
|
return envObject.setLastError(1);
|
|
3226
3687
|
reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint);
|
|
3688
|
+
result >>>= 0;
|
|
3227
3689
|
referenceId = reference.id;
|
|
3228
3690
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3229
|
-
HEAP_DATA_VIEW.
|
|
3691
|
+
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
3230
3692
|
}
|
|
3231
3693
|
else {
|
|
3232
3694
|
if (finalize_cb) {
|
|
@@ -3272,9 +3734,10 @@ function createNapiModule(options) {
|
|
|
3272
3734
|
if (!ref)
|
|
3273
3735
|
return envObject.setLastError(1);
|
|
3274
3736
|
if (result) {
|
|
3737
|
+
result >>>= 0;
|
|
3275
3738
|
data = ref.data();
|
|
3276
3739
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3277
|
-
HEAP_DATA_VIEW.
|
|
3740
|
+
HEAP_DATA_VIEW.setUint32(result, data, true);
|
|
3278
3741
|
}
|
|
3279
3742
|
if (action === 1) {
|
|
3280
3743
|
binding.wrapped = 0;
|
|
@@ -3308,12 +3771,15 @@ function createNapiModule(options) {
|
|
|
3308
3771
|
return envObject.setLastError(1);
|
|
3309
3772
|
if (!constructor)
|
|
3310
3773
|
return envObject.setLastError(1);
|
|
3774
|
+
length >>>= 0;
|
|
3775
|
+
properties >>>= 0;
|
|
3776
|
+
property_count >>>= 0;
|
|
3311
3777
|
property_count = property_count >>> 0;
|
|
3312
3778
|
if (property_count > 0) {
|
|
3313
3779
|
if (!properties)
|
|
3314
3780
|
return envObject.setLastError(1);
|
|
3315
3781
|
}
|
|
3316
|
-
if ((length
|
|
3782
|
+
if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) {
|
|
3317
3783
|
return envObject.setLastError(1);
|
|
3318
3784
|
}
|
|
3319
3785
|
var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data);
|
|
@@ -3324,14 +3790,15 @@ function createNapiModule(options) {
|
|
|
3324
3790
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3325
3791
|
for (var i = 0; i < property_count; i++) {
|
|
3326
3792
|
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.
|
|
3793
|
+
var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
|
|
3794
|
+
var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
|
|
3795
|
+
var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
|
|
3796
|
+
var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
|
|
3797
|
+
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
3798
|
+
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
3333
3799
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
3334
|
-
|
|
3800
|
+
attributes >>>= 0;
|
|
3801
|
+
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
3335
3802
|
if (utf8Name) {
|
|
3336
3803
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
3337
3804
|
}
|
|
@@ -3352,7 +3819,8 @@ function createNapiModule(options) {
|
|
|
3352
3819
|
}
|
|
3353
3820
|
var valueHandle = emnapiCtx.addToCurrentScope(F);
|
|
3354
3821
|
valueHandleId = valueHandle.id;
|
|
3355
|
-
|
|
3822
|
+
result >>>= 0;
|
|
3823
|
+
HEAP_DATA_VIEW.setUint32(result, valueHandleId, true);
|
|
3356
3824
|
return envObject.getReturnStatus();
|
|
3357
3825
|
}
|
|
3358
3826
|
catch (err) {
|
|
@@ -3387,6 +3855,7 @@ function createNapiModule(options) {
|
|
|
3387
3855
|
if (!(value.isObject() || value.isFunction())) {
|
|
3388
3856
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2);
|
|
3389
3857
|
}
|
|
3858
|
+
type_tag >>>= 0;
|
|
3390
3859
|
if (!type_tag) {
|
|
3391
3860
|
return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1);
|
|
3392
3861
|
}
|
|
@@ -3431,6 +3900,7 @@ function createNapiModule(options) {
|
|
|
3431
3900
|
}
|
|
3432
3901
|
var binding = envObject.getObjectBinding(value.value);
|
|
3433
3902
|
if (binding.tag !== null) {
|
|
3903
|
+
type_tag >>>= 0;
|
|
3434
3904
|
var tag = binding.tag;
|
|
3435
3905
|
var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4);
|
|
3436
3906
|
ret = (tag[0] === typeTag[0] &&
|
|
@@ -3441,6 +3911,7 @@ function createNapiModule(options) {
|
|
|
3441
3911
|
else {
|
|
3442
3912
|
ret = false;
|
|
3443
3913
|
}
|
|
3914
|
+
result >>>= 0;
|
|
3444
3915
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3445
3916
|
HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true);
|
|
3446
3917
|
return envObject.getReturnStatus();
|
|
@@ -3468,11 +3939,15 @@ function createNapiModule(options) {
|
|
|
3468
3939
|
}
|
|
3469
3940
|
var handle = handleResult.handle;
|
|
3470
3941
|
var ownership = !result ? 0 : 1;
|
|
3942
|
+
finalize_data >>>= 0;
|
|
3943
|
+
finalize_cb >>>= 0;
|
|
3944
|
+
finalize_hint >>>= 0;
|
|
3471
3945
|
var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint);
|
|
3472
3946
|
if (result) {
|
|
3947
|
+
result >>>= 0;
|
|
3473
3948
|
var referenceId = reference.id;
|
|
3474
3949
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3475
|
-
HEAP_DATA_VIEW.
|
|
3950
|
+
HEAP_DATA_VIEW.setUint32(result, referenceId, true);
|
|
3476
3951
|
}
|
|
3477
3952
|
return envObject.clearLastError();
|
|
3478
3953
|
}
|
|
@@ -3508,6 +3983,9 @@ function createNapiModule(options) {
|
|
|
3508
3983
|
try {
|
|
3509
3984
|
if (!result)
|
|
3510
3985
|
return envObject.setLastError(1);
|
|
3986
|
+
byte_length >>>= 0;
|
|
3987
|
+
external_data >>>= 0;
|
|
3988
|
+
result >>>= 0;
|
|
3511
3989
|
byte_length = byte_length >>> 0;
|
|
3512
3990
|
if (!external_data) {
|
|
3513
3991
|
byte_length = 0;
|
|
@@ -3559,6 +4037,12 @@ function createNapiModule(options) {
|
|
|
3559
4037
|
case -1:
|
|
3560
4038
|
viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 };
|
|
3561
4039
|
break;
|
|
4040
|
+
case 11:
|
|
4041
|
+
if (typeof Float16Array !== 'function') {
|
|
4042
|
+
return envObject.setLastError(1);
|
|
4043
|
+
}
|
|
4044
|
+
viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 };
|
|
4045
|
+
break;
|
|
3562
4046
|
case -2: {
|
|
3563
4047
|
if (!emnapiCtx.feature.Buffer) {
|
|
3564
4048
|
throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', '');
|
|
@@ -3587,7 +4071,7 @@ function createNapiModule(options) {
|
|
|
3587
4071
|
}
|
|
3588
4072
|
value = handle.id;
|
|
3589
4073
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3590
|
-
HEAP_DATA_VIEW.
|
|
4074
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3591
4075
|
return envObject.getReturnStatus();
|
|
3592
4076
|
}
|
|
3593
4077
|
catch (err) {
|
|
@@ -3608,11 +4092,11 @@ function createNapiModule(options) {
|
|
|
3608
4092
|
offset = offset !== null && offset !== void 0 ? offset : 0;
|
|
3609
4093
|
offset = offset >>> 0;
|
|
3610
4094
|
var view;
|
|
3611
|
-
if (arrayBufferOrView instanceof ArrayBuffer) {
|
|
4095
|
+
if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
3612
4096
|
var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address;
|
|
3613
4097
|
if (!pointer)
|
|
3614
4098
|
throw new Error('Unknown ArrayBuffer address');
|
|
3615
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4099
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3616
4100
|
len = arrayBufferOrView.byteLength - offset;
|
|
3617
4101
|
}
|
|
3618
4102
|
len = len >>> 0;
|
|
@@ -3634,7 +4118,7 @@ function createNapiModule(options) {
|
|
|
3634
4118
|
var pointer = viewPointerInfo.address;
|
|
3635
4119
|
if (!pointer)
|
|
3636
4120
|
throw new Error('Unknown ArrayBuffer address');
|
|
3637
|
-
if (typeof len !== 'number' || len === -1) {
|
|
4121
|
+
if (typeof len !== 'number' || len === -1 || len === 4294967295) {
|
|
3638
4122
|
len = latestView.byteLength - offset;
|
|
3639
4123
|
}
|
|
3640
4124
|
len = len >>> 0;
|
|
@@ -3666,16 +4150,20 @@ function createNapiModule(options) {
|
|
|
3666
4150
|
try {
|
|
3667
4151
|
if (!arraybuffer_or_view)
|
|
3668
4152
|
return envObject.setLastError(1);
|
|
4153
|
+
arraybuffer_or_view >>>= 0;
|
|
4154
|
+
offset >>>= 0;
|
|
4155
|
+
len >>>= 0;
|
|
3669
4156
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3670
|
-
var handleId = HEAP_DATA_VIEW.
|
|
4157
|
+
var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true);
|
|
3671
4158
|
var handle = envObject.ctx.handleStore.get(handleId);
|
|
3672
|
-
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView()) {
|
|
4159
|
+
if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) {
|
|
3673
4160
|
return envObject.setLastError(1);
|
|
3674
4161
|
}
|
|
3675
4162
|
var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len);
|
|
3676
4163
|
if (handle.value !== ret) {
|
|
4164
|
+
arraybuffer_or_view >>>= 0;
|
|
3677
4165
|
v = envObject.ensureHandleId(ret);
|
|
3678
|
-
HEAP_DATA_VIEW.
|
|
4166
|
+
HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true);
|
|
3679
4167
|
}
|
|
3680
4168
|
return envObject.getReturnStatus();
|
|
3681
4169
|
}
|
|
@@ -3688,7 +4176,7 @@ function createNapiModule(options) {
|
|
|
3688
4176
|
var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer;
|
|
3689
4177
|
var isDataView = arrayBufferOrView instanceof DataView;
|
|
3690
4178
|
var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView;
|
|
3691
|
-
if (!isArrayBuffer && !isTypedArray && !isDataView) {
|
|
4179
|
+
if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) {
|
|
3692
4180
|
throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter');
|
|
3693
4181
|
}
|
|
3694
4182
|
var info;
|
|
@@ -3727,13 +4215,16 @@ function createNapiModule(options) {
|
|
|
3727
4215
|
p = info.address;
|
|
3728
4216
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3729
4217
|
if (address) {
|
|
3730
|
-
|
|
4218
|
+
address >>>= 0;
|
|
4219
|
+
HEAP_DATA_VIEW.setUint32(address, p, true);
|
|
3731
4220
|
}
|
|
3732
4221
|
if (ownership) {
|
|
4222
|
+
ownership >>>= 0;
|
|
3733
4223
|
ownershipOut = info.ownership;
|
|
3734
4224
|
HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true);
|
|
3735
4225
|
}
|
|
3736
4226
|
if (runtime_allocated) {
|
|
4227
|
+
runtime_allocated >>>= 0;
|
|
3737
4228
|
runtimeAllocated = info.runtimeAllocated;
|
|
3738
4229
|
HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true);
|
|
3739
4230
|
}
|
|
@@ -3759,6 +4250,7 @@ function createNapiModule(options) {
|
|
|
3759
4250
|
}
|
|
3760
4251
|
var versions = runtimeVersion.split('.')
|
|
3761
4252
|
.map(function (n) { return Number(n); });
|
|
4253
|
+
version >>>= 0;
|
|
3762
4254
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3763
4255
|
HEAP_DATA_VIEW.setUint32(version, versions[0], true);
|
|
3764
4256
|
HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true);
|
|
@@ -3784,9 +4276,10 @@ function createNapiModule(options) {
|
|
|
3784
4276
|
envObject.checkGCAccess();
|
|
3785
4277
|
if (!result)
|
|
3786
4278
|
return envObject.setLastError(1);
|
|
4279
|
+
result >>>= 0;
|
|
3787
4280
|
var value = emnapiCtx.addToCurrentScope([]).id;
|
|
3788
4281
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3789
|
-
HEAP_DATA_VIEW.
|
|
4282
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3790
4283
|
return envObject.clearLastError();
|
|
3791
4284
|
}
|
|
3792
4285
|
function napi_create_array_with_length(env, length, result) {
|
|
@@ -3796,19 +4289,23 @@ function createNapiModule(options) {
|
|
|
3796
4289
|
envObject.checkGCAccess();
|
|
3797
4290
|
if (!result)
|
|
3798
4291
|
return envObject.setLastError(1);
|
|
4292
|
+
length >>>= 0;
|
|
4293
|
+
result >>>= 0;
|
|
3799
4294
|
length = length >>> 0;
|
|
3800
4295
|
var value = emnapiCtx.addToCurrentScope(new Array(length)).id;
|
|
3801
4296
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3802
|
-
HEAP_DATA_VIEW.
|
|
4297
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3803
4298
|
return envObject.clearLastError();
|
|
3804
4299
|
}
|
|
3805
|
-
function emnapiCreateArrayBuffer(byte_length, data) {
|
|
4300
|
+
function emnapiCreateArrayBuffer(byte_length, data, shared) {
|
|
4301
|
+
byte_length >>>= 0;
|
|
3806
4302
|
byte_length = byte_length >>> 0;
|
|
3807
|
-
var arrayBuffer = new ArrayBuffer(byte_length);
|
|
4303
|
+
var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length);
|
|
3808
4304
|
if (data) {
|
|
4305
|
+
data >>>= 0;
|
|
3809
4306
|
var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address;
|
|
3810
4307
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3811
|
-
HEAP_DATA_VIEW.
|
|
4308
|
+
HEAP_DATA_VIEW.setUint32(data, p, true);
|
|
3812
4309
|
}
|
|
3813
4310
|
return arrayBuffer;
|
|
3814
4311
|
}
|
|
@@ -3826,10 +4323,37 @@ function createNapiModule(options) {
|
|
|
3826
4323
|
try {
|
|
3827
4324
|
if (!result)
|
|
3828
4325
|
return envObject.setLastError(1);
|
|
3829
|
-
|
|
4326
|
+
result >>>= 0;
|
|
4327
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false);
|
|
3830
4328
|
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
3831
4329
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3832
|
-
HEAP_DATA_VIEW.
|
|
4330
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4331
|
+
return envObject.getReturnStatus();
|
|
4332
|
+
}
|
|
4333
|
+
catch (err) {
|
|
4334
|
+
envObject.tryCatch.setError(err);
|
|
4335
|
+
return envObject.setLastError(10);
|
|
4336
|
+
}
|
|
4337
|
+
}
|
|
4338
|
+
function node_api_create_sharedarraybuffer(env, byte_length, data, result) {
|
|
4339
|
+
var value;
|
|
4340
|
+
if (!env)
|
|
4341
|
+
return 1;
|
|
4342
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4343
|
+
envObject.checkGCAccess();
|
|
4344
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4345
|
+
return envObject.setLastError(10);
|
|
4346
|
+
if (!envObject.canCallIntoJs())
|
|
4347
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4348
|
+
envObject.clearLastError();
|
|
4349
|
+
try {
|
|
4350
|
+
if (!result)
|
|
4351
|
+
return envObject.setLastError(1);
|
|
4352
|
+
result >>>= 0;
|
|
4353
|
+
var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true);
|
|
4354
|
+
value = emnapiCtx.addToCurrentScope(arrayBuffer).id;
|
|
4355
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4356
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3833
4357
|
return envObject.getReturnStatus();
|
|
3834
4358
|
}
|
|
3835
4359
|
catch (err) {
|
|
@@ -3851,9 +4375,10 @@ function createNapiModule(options) {
|
|
|
3851
4375
|
try {
|
|
3852
4376
|
if (!result)
|
|
3853
4377
|
return envObject.setLastError(1);
|
|
4378
|
+
result >>>= 0;
|
|
3854
4379
|
value = emnapiCtx.addToCurrentScope(new Date(time)).id;
|
|
3855
4380
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3856
|
-
HEAP_DATA_VIEW.
|
|
4381
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3857
4382
|
return envObject.getReturnStatus();
|
|
3858
4383
|
}
|
|
3859
4384
|
catch (err) {
|
|
@@ -3882,9 +4407,10 @@ function createNapiModule(options) {
|
|
|
3882
4407
|
if (finalize_cb) {
|
|
3883
4408
|
emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint);
|
|
3884
4409
|
}
|
|
4410
|
+
result >>>= 0;
|
|
3885
4411
|
value = externalHandle.id;
|
|
3886
4412
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3887
|
-
HEAP_DATA_VIEW.
|
|
4413
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3888
4414
|
return envObject.clearLastError();
|
|
3889
4415
|
}
|
|
3890
4416
|
catch (err) {
|
|
@@ -3906,6 +4432,9 @@ function createNapiModule(options) {
|
|
|
3906
4432
|
try {
|
|
3907
4433
|
if (!result)
|
|
3908
4434
|
return envObject.setLastError(1);
|
|
4435
|
+
byte_length >>>= 0;
|
|
4436
|
+
external_data >>>= 0;
|
|
4437
|
+
result >>>= 0;
|
|
3909
4438
|
byte_length = byte_length >>> 0;
|
|
3910
4439
|
if (!external_data) {
|
|
3911
4440
|
byte_length = 0;
|
|
@@ -3948,7 +4477,7 @@ function createNapiModule(options) {
|
|
|
3948
4477
|
}
|
|
3949
4478
|
value = handle.id;
|
|
3950
4479
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3951
|
-
HEAP_DATA_VIEW.
|
|
4480
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3952
4481
|
return envObject.getReturnStatus();
|
|
3953
4482
|
}
|
|
3954
4483
|
catch (err) {
|
|
@@ -3963,9 +4492,55 @@ function createNapiModule(options) {
|
|
|
3963
4492
|
envObject.checkGCAccess();
|
|
3964
4493
|
if (!result)
|
|
3965
4494
|
return envObject.setLastError(1);
|
|
4495
|
+
result >>>= 0;
|
|
3966
4496
|
var value = emnapiCtx.addToCurrentScope({}).id;
|
|
3967
4497
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3968
|
-
HEAP_DATA_VIEW.
|
|
4498
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4499
|
+
return envObject.clearLastError();
|
|
4500
|
+
}
|
|
4501
|
+
function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) {
|
|
4502
|
+
if (!env)
|
|
4503
|
+
return 1;
|
|
4504
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4505
|
+
envObject.checkGCAccess();
|
|
4506
|
+
if (!result)
|
|
4507
|
+
return envObject.setLastError(1);
|
|
4508
|
+
property_count >>>= 0;
|
|
4509
|
+
property_count = property_count >>> 0;
|
|
4510
|
+
if (property_count > 0) {
|
|
4511
|
+
if (!property_names)
|
|
4512
|
+
return envObject.setLastError(1);
|
|
4513
|
+
if (!property_values)
|
|
4514
|
+
return envObject.setLastError(1);
|
|
4515
|
+
}
|
|
4516
|
+
var v8_prototype_or_null = prototype_or_null
|
|
4517
|
+
? emnapiCtx.handleStore.get(prototype_or_null).value
|
|
4518
|
+
: null;
|
|
4519
|
+
var properties = {};
|
|
4520
|
+
property_names >>>= 0;
|
|
4521
|
+
property_values >>>= 0;
|
|
4522
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4523
|
+
for (var i = 0; i < property_count; i++) {
|
|
4524
|
+
var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value;
|
|
4525
|
+
if (!(typeof name_value === "string" || typeof name_value === "symbol"))
|
|
4526
|
+
return envObject.setLastError(4);
|
|
4527
|
+
properties[name_value] = {
|
|
4528
|
+
value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value,
|
|
4529
|
+
writable: true,
|
|
4530
|
+
enumerable: true,
|
|
4531
|
+
configurable: true
|
|
4532
|
+
};
|
|
4533
|
+
}
|
|
4534
|
+
var obj;
|
|
4535
|
+
try {
|
|
4536
|
+
obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties);
|
|
4537
|
+
}
|
|
4538
|
+
catch (_) {
|
|
4539
|
+
return envObject.setLastError(9);
|
|
4540
|
+
}
|
|
4541
|
+
var value = emnapiCtx.addToCurrentScope(obj).id;
|
|
4542
|
+
result >>>= 0;
|
|
4543
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3969
4544
|
return envObject.clearLastError();
|
|
3970
4545
|
}
|
|
3971
4546
|
function napi_create_symbol(env, description, result) {
|
|
@@ -3975,10 +4550,11 @@ function createNapiModule(options) {
|
|
|
3975
4550
|
envObject.checkGCAccess();
|
|
3976
4551
|
if (!result)
|
|
3977
4552
|
return envObject.setLastError(1);
|
|
4553
|
+
result >>>= 0;
|
|
3978
4554
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
3979
4555
|
if (!description) {
|
|
3980
4556
|
var value = emnapiCtx.addToCurrentScope(Symbol()).id;
|
|
3981
|
-
HEAP_DATA_VIEW.
|
|
4557
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
3982
4558
|
}
|
|
3983
4559
|
else {
|
|
3984
4560
|
var handle = emnapiCtx.handleStore.get(description);
|
|
@@ -3987,7 +4563,7 @@ function createNapiModule(options) {
|
|
|
3987
4563
|
return envObject.setLastError(3);
|
|
3988
4564
|
}
|
|
3989
4565
|
var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id;
|
|
3990
|
-
HEAP_DATA_VIEW.
|
|
4566
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
3991
4567
|
}
|
|
3992
4568
|
return envObject.clearLastError();
|
|
3993
4569
|
}
|
|
@@ -4012,6 +4588,8 @@ function createNapiModule(options) {
|
|
|
4012
4588
|
return envObject.setLastError(1);
|
|
4013
4589
|
}
|
|
4014
4590
|
var buffer = handle.value;
|
|
4591
|
+
byte_offset >>>= 0;
|
|
4592
|
+
length >>>= 0;
|
|
4015
4593
|
var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) {
|
|
4016
4594
|
var _a;
|
|
4017
4595
|
byte_offset = byte_offset >>> 0;
|
|
@@ -4042,9 +4620,10 @@ function createNapiModule(options) {
|
|
|
4042
4620
|
});
|
|
4043
4621
|
}
|
|
4044
4622
|
}
|
|
4623
|
+
result >>>= 0;
|
|
4045
4624
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4046
4625
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4047
|
-
HEAP_DATA_VIEW.
|
|
4626
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4048
4627
|
return envObject.getReturnStatus();
|
|
4049
4628
|
};
|
|
4050
4629
|
switch (type) {
|
|
@@ -4070,6 +4649,11 @@ function createNapiModule(options) {
|
|
|
4070
4649
|
return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
|
|
4071
4650
|
case 10:
|
|
4072
4651
|
return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
|
|
4652
|
+
case 11:
|
|
4653
|
+
if (typeof Float16Array !== 'function') {
|
|
4654
|
+
return envObject.setLastError(1);
|
|
4655
|
+
}
|
|
4656
|
+
return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
|
|
4073
4657
|
default:
|
|
4074
4658
|
return envObject.setLastError(1);
|
|
4075
4659
|
}
|
|
@@ -4098,18 +4682,21 @@ function createNapiModule(options) {
|
|
|
4098
4682
|
if (!Buffer) {
|
|
4099
4683
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', '');
|
|
4100
4684
|
}
|
|
4685
|
+
result >>>= 0;
|
|
4101
4686
|
var buffer = void 0;
|
|
4687
|
+
size >>>= 0;
|
|
4102
4688
|
size = size >>> 0;
|
|
4103
4689
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4104
4690
|
if (!data || (size === 0)) {
|
|
4105
4691
|
buffer = Buffer.alloc(size);
|
|
4106
4692
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4107
|
-
HEAP_DATA_VIEW.
|
|
4693
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4108
4694
|
}
|
|
4109
4695
|
else {
|
|
4110
4696
|
pointer = _malloc(size);
|
|
4111
4697
|
if (!pointer)
|
|
4112
4698
|
throw new Error('Out of memory');
|
|
4699
|
+
pointer >>>= 0;
|
|
4113
4700
|
new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0);
|
|
4114
4701
|
var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size);
|
|
4115
4702
|
var viewDescriptor = {
|
|
@@ -4122,8 +4709,9 @@ function createNapiModule(options) {
|
|
|
4122
4709
|
emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor);
|
|
4123
4710
|
(_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer);
|
|
4124
4711
|
value = emnapiCtx.addToCurrentScope(buffer_1).id;
|
|
4125
|
-
HEAP_DATA_VIEW.
|
|
4126
|
-
|
|
4712
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4713
|
+
data >>>= 0;
|
|
4714
|
+
HEAP_DATA_VIEW.setUint32(data, pointer, true);
|
|
4127
4715
|
}
|
|
4128
4716
|
return envObject.getReturnStatus();
|
|
4129
4717
|
}
|
|
@@ -4150,12 +4738,15 @@ function createNapiModule(options) {
|
|
|
4150
4738
|
if (!Buffer) {
|
|
4151
4739
|
throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', '');
|
|
4152
4740
|
}
|
|
4153
|
-
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data);
|
|
4741
|
+
var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false);
|
|
4154
4742
|
var buffer = Buffer.from(arrayBuffer);
|
|
4743
|
+
data >>>= 0;
|
|
4744
|
+
length >>>= 0;
|
|
4155
4745
|
buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length));
|
|
4156
4746
|
value = emnapiCtx.addToCurrentScope(buffer).id;
|
|
4747
|
+
result >>>= 0;
|
|
4157
4748
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4158
|
-
HEAP_DATA_VIEW.
|
|
4749
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4159
4750
|
return envObject.getReturnStatus();
|
|
4160
4751
|
}
|
|
4161
4752
|
catch (err) {
|
|
@@ -4182,6 +4773,8 @@ function createNapiModule(options) {
|
|
|
4182
4773
|
return envObject.setLastError(1);
|
|
4183
4774
|
if (!result)
|
|
4184
4775
|
return envObject.setLastError(1);
|
|
4776
|
+
byte_offset >>>= 0;
|
|
4777
|
+
byte_length >>>= 0;
|
|
4185
4778
|
byte_offset = byte_offset >>> 0;
|
|
4186
4779
|
byte_length = byte_length >>> 0;
|
|
4187
4780
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
@@ -4210,9 +4803,10 @@ function createNapiModule(options) {
|
|
|
4210
4803
|
});
|
|
4211
4804
|
}
|
|
4212
4805
|
}
|
|
4806
|
+
result >>>= 0;
|
|
4213
4807
|
value = emnapiCtx.addToCurrentScope(out).id;
|
|
4214
4808
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4215
|
-
HEAP_DATA_VIEW.
|
|
4809
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4216
4810
|
return envObject.getReturnStatus();
|
|
4217
4811
|
}
|
|
4218
4812
|
catch (err) {
|
|
@@ -4221,7 +4815,6 @@ function createNapiModule(options) {
|
|
|
4221
4815
|
}
|
|
4222
4816
|
}
|
|
4223
4817
|
function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) {
|
|
4224
|
-
var value;
|
|
4225
4818
|
if (!env)
|
|
4226
4819
|
return 1;
|
|
4227
4820
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4236,34 +4829,41 @@ function createNapiModule(options) {
|
|
|
4236
4829
|
return envObject.setLastError(1);
|
|
4237
4830
|
if (!result)
|
|
4238
4831
|
return envObject.setLastError(1);
|
|
4832
|
+
byte_length >>>= 0;
|
|
4833
|
+
byte_offset >>>= 0;
|
|
4239
4834
|
byte_length = byte_length >>> 0;
|
|
4240
4835
|
byte_offset = byte_offset >>> 0;
|
|
4241
|
-
var
|
|
4242
|
-
|
|
4243
|
-
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
|
|
4247
|
-
var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
|
|
4248
|
-
err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
|
|
4249
|
-
throw err;
|
|
4250
|
-
}
|
|
4251
|
-
var dataview = new DataView(buffer, byte_offset, byte_length);
|
|
4252
|
-
if (buffer === wasmMemory.buffer) {
|
|
4253
|
-
if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
|
|
4254
|
-
emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
|
|
4255
|
-
Ctor: DataView,
|
|
4256
|
-
address: byte_offset,
|
|
4257
|
-
length: byte_length,
|
|
4258
|
-
ownership: 1,
|
|
4259
|
-
runtimeAllocated: 0
|
|
4260
|
-
});
|
|
4836
|
+
var value = emnapiCtx.handleStore.get(arraybuffer).value;
|
|
4837
|
+
var createDataview = function (buffer) {
|
|
4838
|
+
if ((byte_length + byte_offset) > buffer.byteLength) {
|
|
4839
|
+
var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in');
|
|
4840
|
+
err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS';
|
|
4841
|
+
throw err;
|
|
4261
4842
|
}
|
|
4843
|
+
var dataview = new DataView(buffer, byte_offset, byte_length);
|
|
4844
|
+
if (buffer === wasmMemory.buffer) {
|
|
4845
|
+
if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) {
|
|
4846
|
+
emnapiExternalMemory.wasmMemoryViewTable.set(dataview, {
|
|
4847
|
+
Ctor: DataView,
|
|
4848
|
+
address: byte_offset,
|
|
4849
|
+
length: byte_length,
|
|
4850
|
+
ownership: 1,
|
|
4851
|
+
runtimeAllocated: 0
|
|
4852
|
+
});
|
|
4853
|
+
}
|
|
4854
|
+
}
|
|
4855
|
+
result >>>= 0;
|
|
4856
|
+
var v = emnapiCtx.addToCurrentScope(dataview).id;
|
|
4857
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4858
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4859
|
+
return envObject.getReturnStatus();
|
|
4860
|
+
};
|
|
4861
|
+
if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) {
|
|
4862
|
+
return createDataview(value);
|
|
4863
|
+
}
|
|
4864
|
+
else {
|
|
4865
|
+
return envObject.setLastError(1);
|
|
4262
4866
|
}
|
|
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
4867
|
}
|
|
4268
4868
|
catch (err) {
|
|
4269
4869
|
envObject.tryCatch.setError(err);
|
|
@@ -4277,7 +4877,10 @@ function createNapiModule(options) {
|
|
|
4277
4877
|
envObject.checkGCAccess();
|
|
4278
4878
|
if (!result)
|
|
4279
4879
|
return envObject.setLastError(1);
|
|
4280
|
-
|
|
4880
|
+
length >>>= 0;
|
|
4881
|
+
utf8description >>>= 0;
|
|
4882
|
+
result >>>= 0;
|
|
4883
|
+
var autoLength = length === -1 || length === 4294967295;
|
|
4281
4884
|
var sizelength = length >>> 0;
|
|
4282
4885
|
if (length !== 0) {
|
|
4283
4886
|
if (!utf8description)
|
|
@@ -4289,7 +4892,7 @@ function createNapiModule(options) {
|
|
|
4289
4892
|
var descriptionString = emnapiString.UTF8ToString(utf8description, length);
|
|
4290
4893
|
var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id;
|
|
4291
4894
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4292
|
-
HEAP_DATA_VIEW.
|
|
4895
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4293
4896
|
return envObject.clearLastError();
|
|
4294
4897
|
}
|
|
4295
4898
|
var createMod = Object.freeze({
|
|
@@ -4308,6 +4911,8 @@ function createNapiModule(options) {
|
|
|
4308
4911
|
napi_create_symbol: napi_create_symbol,
|
|
4309
4912
|
napi_create_typedarray: napi_create_typedarray,
|
|
4310
4913
|
node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
|
|
4914
|
+
node_api_create_object_with_properties: node_api_create_object_with_properties,
|
|
4915
|
+
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
4311
4916
|
node_api_symbol_for: node_api_symbol_for
|
|
4312
4917
|
});
|
|
4313
4918
|
function napi_get_boolean(env, value, result) {
|
|
@@ -4317,9 +4922,10 @@ function createNapiModule(options) {
|
|
|
4317
4922
|
envObject.checkGCAccess();
|
|
4318
4923
|
if (!result)
|
|
4319
4924
|
return envObject.setLastError(1);
|
|
4925
|
+
result >>>= 0;
|
|
4320
4926
|
var v = value === 0 ? 3 : 4;
|
|
4321
4927
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4322
|
-
HEAP_DATA_VIEW.
|
|
4928
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4323
4929
|
return envObject.clearLastError();
|
|
4324
4930
|
}
|
|
4325
4931
|
function napi_get_global(env, result) {
|
|
@@ -4329,9 +4935,10 @@ function createNapiModule(options) {
|
|
|
4329
4935
|
envObject.checkGCAccess();
|
|
4330
4936
|
if (!result)
|
|
4331
4937
|
return envObject.setLastError(1);
|
|
4938
|
+
result >>>= 0;
|
|
4332
4939
|
var value = 5;
|
|
4333
4940
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4334
|
-
HEAP_DATA_VIEW.
|
|
4941
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4335
4942
|
return envObject.clearLastError();
|
|
4336
4943
|
}
|
|
4337
4944
|
function napi_get_null(env, result) {
|
|
@@ -4341,9 +4948,10 @@ function createNapiModule(options) {
|
|
|
4341
4948
|
envObject.checkGCAccess();
|
|
4342
4949
|
if (!result)
|
|
4343
4950
|
return envObject.setLastError(1);
|
|
4951
|
+
result >>>= 0;
|
|
4344
4952
|
var value = 2;
|
|
4345
4953
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4346
|
-
HEAP_DATA_VIEW.
|
|
4954
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4347
4955
|
return envObject.clearLastError();
|
|
4348
4956
|
}
|
|
4349
4957
|
function napi_get_undefined(env, result) {
|
|
@@ -4353,9 +4961,10 @@ function createNapiModule(options) {
|
|
|
4353
4961
|
envObject.checkGCAccess();
|
|
4354
4962
|
if (!result)
|
|
4355
4963
|
return envObject.setLastError(1);
|
|
4964
|
+
result >>>= 0;
|
|
4356
4965
|
var value = 1;
|
|
4357
4966
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4358
|
-
HEAP_DATA_VIEW.
|
|
4967
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4359
4968
|
return envObject.clearLastError();
|
|
4360
4969
|
}
|
|
4361
4970
|
var globalMod = Object.freeze({
|
|
@@ -4369,6 +4978,9 @@ function createNapiModule(options) {
|
|
|
4369
4978
|
if (!env)
|
|
4370
4979
|
return 1;
|
|
4371
4980
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4981
|
+
data >>>= 0;
|
|
4982
|
+
finalize_cb >>>= 0;
|
|
4983
|
+
finalize_hint >>>= 0;
|
|
4372
4984
|
envObject.setInstanceData(data, finalize_cb, finalize_hint);
|
|
4373
4985
|
return envObject.clearLastError();
|
|
4374
4986
|
}
|
|
@@ -4378,9 +4990,10 @@ function createNapiModule(options) {
|
|
|
4378
4990
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4379
4991
|
if (!data)
|
|
4380
4992
|
return envObject.setLastError(1);
|
|
4993
|
+
data >>>= 0;
|
|
4381
4994
|
var value = envObject.getInstanceData();
|
|
4382
4995
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4383
|
-
HEAP_DATA_VIEW.
|
|
4996
|
+
HEAP_DATA_VIEW.setUint32(data, value, true);
|
|
4384
4997
|
return envObject.clearLastError();
|
|
4385
4998
|
}
|
|
4386
4999
|
var envMod = Object.freeze({
|
|
@@ -4389,15 +5002,19 @@ function createNapiModule(options) {
|
|
|
4389
5002
|
napi_set_instance_data: napi_set_instance_data
|
|
4390
5003
|
});
|
|
4391
5004
|
function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) {
|
|
5005
|
+
error_code >>>= 0;
|
|
5006
|
+
engine_error_code >>>= 0;
|
|
5007
|
+
engine_reserved >>>= 0;
|
|
4392
5008
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4393
5009
|
var lastError = envObject.lastError;
|
|
4394
5010
|
var errorCode = lastError.errorCode;
|
|
4395
5011
|
var engineErrorCode = lastError.engineErrorCode >>> 0;
|
|
4396
5012
|
var engineReserved = lastError.engineReserved;
|
|
5013
|
+
engineReserved >>>= 0;
|
|
4397
5014
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4398
5015
|
HEAP_DATA_VIEW.setInt32(error_code, errorCode, true);
|
|
4399
5016
|
HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true);
|
|
4400
|
-
HEAP_DATA_VIEW.
|
|
5017
|
+
HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true);
|
|
4401
5018
|
}
|
|
4402
5019
|
function napi_throw(env, error) {
|
|
4403
5020
|
if (!env)
|
|
@@ -4433,6 +5050,8 @@ function createNapiModule(options) {
|
|
|
4433
5050
|
try {
|
|
4434
5051
|
if (!msg)
|
|
4435
5052
|
return envObject.setLastError(1);
|
|
5053
|
+
code >>>= 0;
|
|
5054
|
+
msg >>>= 0;
|
|
4436
5055
|
var error = new Error(emnapiString.UTF8ToString(msg, -1));
|
|
4437
5056
|
if (code)
|
|
4438
5057
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4457,6 +5076,8 @@ function createNapiModule(options) {
|
|
|
4457
5076
|
try {
|
|
4458
5077
|
if (!msg)
|
|
4459
5078
|
return envObject.setLastError(1);
|
|
5079
|
+
code >>>= 0;
|
|
5080
|
+
msg >>>= 0;
|
|
4460
5081
|
var error = new TypeError(emnapiString.UTF8ToString(msg, -1));
|
|
4461
5082
|
if (code)
|
|
4462
5083
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4481,6 +5102,8 @@ function createNapiModule(options) {
|
|
|
4481
5102
|
try {
|
|
4482
5103
|
if (!msg)
|
|
4483
5104
|
return envObject.setLastError(1);
|
|
5105
|
+
code >>>= 0;
|
|
5106
|
+
msg >>>= 0;
|
|
4484
5107
|
var error = new RangeError(emnapiString.UTF8ToString(msg, -1));
|
|
4485
5108
|
if (code)
|
|
4486
5109
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4505,6 +5128,8 @@ function createNapiModule(options) {
|
|
|
4505
5128
|
try {
|
|
4506
5129
|
if (!msg)
|
|
4507
5130
|
return envObject.setLastError(1);
|
|
5131
|
+
code >>>= 0;
|
|
5132
|
+
msg >>>= 0;
|
|
4508
5133
|
var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1));
|
|
4509
5134
|
if (code)
|
|
4510
5135
|
error.code = emnapiString.UTF8ToString(code, -1);
|
|
@@ -4524,6 +5149,7 @@ function createNapiModule(options) {
|
|
|
4524
5149
|
if (!result)
|
|
4525
5150
|
return envObject.setLastError(1);
|
|
4526
5151
|
var r = envObject.tryCatch.hasCaught();
|
|
5152
|
+
result >>>= 0;
|
|
4527
5153
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4528
5154
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
4529
5155
|
return envObject.clearLastError();
|
|
@@ -4549,9 +5175,10 @@ function createNapiModule(options) {
|
|
|
4549
5175
|
}
|
|
4550
5176
|
error.code = codeValue;
|
|
4551
5177
|
}
|
|
5178
|
+
result >>>= 0;
|
|
4552
5179
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4553
5180
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4554
|
-
HEAP_DATA_VIEW.
|
|
5181
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4555
5182
|
return envObject.clearLastError();
|
|
4556
5183
|
}
|
|
4557
5184
|
function napi_create_type_error(env, code, msg, result) {
|
|
@@ -4575,9 +5202,10 @@ function createNapiModule(options) {
|
|
|
4575
5202
|
}
|
|
4576
5203
|
error.code = codeValue;
|
|
4577
5204
|
}
|
|
5205
|
+
result >>>= 0;
|
|
4578
5206
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4579
5207
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4580
|
-
HEAP_DATA_VIEW.
|
|
5208
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4581
5209
|
return envObject.clearLastError();
|
|
4582
5210
|
}
|
|
4583
5211
|
function napi_create_range_error(env, code, msg, result) {
|
|
@@ -4601,9 +5229,10 @@ function createNapiModule(options) {
|
|
|
4601
5229
|
}
|
|
4602
5230
|
error.code = codeValue;
|
|
4603
5231
|
}
|
|
5232
|
+
result >>>= 0;
|
|
4604
5233
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4605
5234
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4606
|
-
HEAP_DATA_VIEW.
|
|
5235
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4607
5236
|
return envObject.clearLastError();
|
|
4608
5237
|
}
|
|
4609
5238
|
function node_api_create_syntax_error(env, code, msg, result) {
|
|
@@ -4627,9 +5256,10 @@ function createNapiModule(options) {
|
|
|
4627
5256
|
}
|
|
4628
5257
|
error.code = codeValue;
|
|
4629
5258
|
}
|
|
5259
|
+
result >>>= 0;
|
|
4630
5260
|
var value = emnapiCtx.addToCurrentScope(error).id;
|
|
4631
5261
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4632
|
-
HEAP_DATA_VIEW.
|
|
5262
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4633
5263
|
return envObject.clearLastError();
|
|
4634
5264
|
}
|
|
4635
5265
|
function napi_get_and_clear_last_exception(env, result) {
|
|
@@ -4639,20 +5269,25 @@ function createNapiModule(options) {
|
|
|
4639
5269
|
envObject.checkGCAccess();
|
|
4640
5270
|
if (!result)
|
|
4641
5271
|
return envObject.setLastError(1);
|
|
5272
|
+
result >>>= 0;
|
|
4642
5273
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4643
5274
|
if (!envObject.tryCatch.hasCaught()) {
|
|
4644
|
-
HEAP_DATA_VIEW.
|
|
5275
|
+
HEAP_DATA_VIEW.setUint32(result, 1, true);
|
|
4645
5276
|
return envObject.clearLastError();
|
|
4646
5277
|
}
|
|
4647
5278
|
else {
|
|
4648
5279
|
var err = envObject.tryCatch.exception();
|
|
4649
5280
|
var value = envObject.ensureHandleId(err);
|
|
4650
|
-
HEAP_DATA_VIEW.
|
|
5281
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4651
5282
|
envObject.tryCatch.reset();
|
|
4652
5283
|
}
|
|
4653
5284
|
return envObject.clearLastError();
|
|
4654
5285
|
}
|
|
4655
5286
|
function napi_fatal_error(location, location_len, message, message_len) {
|
|
5287
|
+
location >>>= 0;
|
|
5288
|
+
location_len >>>= 0;
|
|
5289
|
+
message >>>= 0;
|
|
5290
|
+
message_len >>>= 0;
|
|
4656
5291
|
var locationStr = emnapiString.UTF8ToString(location, location_len);
|
|
4657
5292
|
var messageStr = emnapiString.UTF8ToString(message, message_len);
|
|
4658
5293
|
if (emnapiNodeBinding) {
|
|
@@ -4706,8 +5341,21 @@ function createNapiModule(options) {
|
|
|
4706
5341
|
node_api_create_syntax_error: node_api_create_syntax_error,
|
|
4707
5342
|
node_api_throw_syntax_error: node_api_throw_syntax_error
|
|
4708
5343
|
});
|
|
5344
|
+
function _emnapi_create_function(env, utf8name, length, cb, data, result) {
|
|
5345
|
+
length >>>= 0;
|
|
5346
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5347
|
+
var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data);
|
|
5348
|
+
if (fresult.status !== 0)
|
|
5349
|
+
return envObject.setLastError(fresult.status);
|
|
5350
|
+
var f = fresult.f;
|
|
5351
|
+
var valueHandle = emnapiCtx.addToCurrentScope(f);
|
|
5352
|
+
result >>>= 0;
|
|
5353
|
+
var value = valueHandle.id;
|
|
5354
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5355
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5356
|
+
return envObject.getReturnStatus();
|
|
5357
|
+
}
|
|
4709
5358
|
function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
4710
|
-
var value;
|
|
4711
5359
|
if (!env)
|
|
4712
5360
|
return 1;
|
|
4713
5361
|
var envObject = emnapiCtx.envStore.get(env);
|
|
@@ -4722,15 +5370,7 @@ function createNapiModule(options) {
|
|
|
4722
5370
|
return envObject.setLastError(1);
|
|
4723
5371
|
if (!cb)
|
|
4724
5372
|
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();
|
|
5373
|
+
return _emnapi_create_function(env, utf8name, length, cb, data, result);
|
|
4734
5374
|
}
|
|
4735
5375
|
catch (err) {
|
|
4736
5376
|
envObject.tryCatch.setError(err);
|
|
@@ -4744,21 +5384,24 @@ function createNapiModule(options) {
|
|
|
4744
5384
|
if (!cbinfo)
|
|
4745
5385
|
return envObject.setLastError(1);
|
|
4746
5386
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
5387
|
+
argc >>>= 0;
|
|
5388
|
+
argv >>>= 0;
|
|
4747
5389
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4748
5390
|
if (argv) {
|
|
4749
5391
|
if (!argc)
|
|
4750
5392
|
return envObject.setLastError(1);
|
|
4751
5393
|
var argcValue = HEAP_DATA_VIEW.getUint32(argc, true);
|
|
5394
|
+
argcValue >>>= 0;
|
|
4752
5395
|
var len = cbinfoValue.args.length;
|
|
4753
5396
|
var arrlen = argcValue < len ? argcValue : len;
|
|
4754
5397
|
var i = 0;
|
|
4755
5398
|
for (; i < arrlen; i++) {
|
|
4756
5399
|
var argVal = envObject.ensureHandleId(cbinfoValue.args[i]);
|
|
4757
|
-
HEAP_DATA_VIEW.
|
|
5400
|
+
HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true);
|
|
4758
5401
|
}
|
|
4759
5402
|
if (i < argcValue) {
|
|
4760
5403
|
for (; i < argcValue; i++) {
|
|
4761
|
-
HEAP_DATA_VIEW.
|
|
5404
|
+
HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true);
|
|
4762
5405
|
}
|
|
4763
5406
|
}
|
|
4764
5407
|
}
|
|
@@ -4766,11 +5409,13 @@ function createNapiModule(options) {
|
|
|
4766
5409
|
HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true);
|
|
4767
5410
|
}
|
|
4768
5411
|
if (this_arg) {
|
|
5412
|
+
this_arg >>>= 0;
|
|
4769
5413
|
var v = envObject.ensureHandleId(cbinfoValue.thiz);
|
|
4770
|
-
HEAP_DATA_VIEW.
|
|
5414
|
+
HEAP_DATA_VIEW.setUint32(this_arg, v, true);
|
|
4771
5415
|
}
|
|
4772
5416
|
if (data) {
|
|
4773
|
-
|
|
5417
|
+
data >>>= 0;
|
|
5418
|
+
HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true);
|
|
4774
5419
|
}
|
|
4775
5420
|
return envObject.clearLastError();
|
|
4776
5421
|
}
|
|
@@ -4789,6 +5434,9 @@ function createNapiModule(options) {
|
|
|
4789
5434
|
try {
|
|
4790
5435
|
if (!recv)
|
|
4791
5436
|
return envObject.setLastError(1);
|
|
5437
|
+
argc >>>= 0;
|
|
5438
|
+
argv >>>= 0;
|
|
5439
|
+
result >>>= 0;
|
|
4792
5440
|
argc = argc >>> 0;
|
|
4793
5441
|
if (argc > 0) {
|
|
4794
5442
|
if (!argv)
|
|
@@ -4803,13 +5451,13 @@ function createNapiModule(options) {
|
|
|
4803
5451
|
var args = [];
|
|
4804
5452
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4805
5453
|
for (; i < argc; i++) {
|
|
4806
|
-
var argVal = HEAP_DATA_VIEW.
|
|
5454
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
4807
5455
|
args.push(emnapiCtx.handleStore.get(argVal).value);
|
|
4808
5456
|
}
|
|
4809
5457
|
var ret = v8func.apply(v8recv, args);
|
|
4810
5458
|
if (result) {
|
|
4811
5459
|
v = envObject.ensureHandleId(ret);
|
|
4812
|
-
HEAP_DATA_VIEW.
|
|
5460
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4813
5461
|
}
|
|
4814
5462
|
return envObject.clearLastError();
|
|
4815
5463
|
}
|
|
@@ -4833,6 +5481,9 @@ function createNapiModule(options) {
|
|
|
4833
5481
|
try {
|
|
4834
5482
|
if (!constructor)
|
|
4835
5483
|
return envObject.setLastError(1);
|
|
5484
|
+
argc >>>= 0;
|
|
5485
|
+
argv >>>= 0;
|
|
5486
|
+
result >>>= 0;
|
|
4836
5487
|
argc = argc >>> 0;
|
|
4837
5488
|
if (argc > 0) {
|
|
4838
5489
|
if (!argv)
|
|
@@ -4848,7 +5499,7 @@ function createNapiModule(options) {
|
|
|
4848
5499
|
if (emnapiCtx.feature.supportReflect) {
|
|
4849
5500
|
var argList = Array(argc);
|
|
4850
5501
|
for (i = 0; i < argc; i++) {
|
|
4851
|
-
var argVal = HEAP_DATA_VIEW.
|
|
5502
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
4852
5503
|
argList[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
4853
5504
|
}
|
|
4854
5505
|
ret = Reflect.construct(Ctor, argList, Ctor);
|
|
@@ -4857,7 +5508,7 @@ function createNapiModule(options) {
|
|
|
4857
5508
|
var args = Array(argc + 1);
|
|
4858
5509
|
args[0] = undefined;
|
|
4859
5510
|
for (i = 0; i < argc; i++) {
|
|
4860
|
-
var argVal = HEAP_DATA_VIEW.
|
|
5511
|
+
var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true);
|
|
4861
5512
|
args[i + 1] = emnapiCtx.handleStore.get(argVal).value;
|
|
4862
5513
|
}
|
|
4863
5514
|
var BoundCtor = Ctor.bind.apply(Ctor, args);
|
|
@@ -4865,7 +5516,7 @@ function createNapiModule(options) {
|
|
|
4865
5516
|
}
|
|
4866
5517
|
if (result) {
|
|
4867
5518
|
v = envObject.ensureHandleId(ret);
|
|
4868
|
-
HEAP_DATA_VIEW.
|
|
5519
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
4869
5520
|
}
|
|
4870
5521
|
return envObject.getReturnStatus();
|
|
4871
5522
|
}
|
|
@@ -4883,6 +5534,7 @@ function createNapiModule(options) {
|
|
|
4883
5534
|
return envObject.setLastError(1);
|
|
4884
5535
|
if (!result)
|
|
4885
5536
|
return envObject.setLastError(1);
|
|
5537
|
+
result >>>= 0;
|
|
4886
5538
|
var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo;
|
|
4887
5539
|
var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn;
|
|
4888
5540
|
var value = thiz == null || thiz.constructor == null
|
|
@@ -4891,11 +5543,12 @@ function createNapiModule(options) {
|
|
|
4891
5543
|
? envObject.ensureHandleId(thiz.constructor)
|
|
4892
5544
|
: 0;
|
|
4893
5545
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4894
|
-
HEAP_DATA_VIEW.
|
|
5546
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4895
5547
|
return envObject.clearLastError();
|
|
4896
5548
|
}
|
|
4897
5549
|
var functionMod = Object.freeze({
|
|
4898
5550
|
__proto__: null,
|
|
5551
|
+
_emnapi_create_function: _emnapi_create_function,
|
|
4899
5552
|
napi_call_function: napi_call_function,
|
|
4900
5553
|
napi_create_function: napi_create_function,
|
|
4901
5554
|
napi_get_cb_info: napi_get_cb_info,
|
|
@@ -4910,8 +5563,9 @@ function createNapiModule(options) {
|
|
|
4910
5563
|
if (!result)
|
|
4911
5564
|
return envObject.setLastError(1);
|
|
4912
5565
|
var scope = emnapiCtx.openScope(envObject);
|
|
5566
|
+
result >>>= 0;
|
|
4913
5567
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4914
|
-
HEAP_DATA_VIEW.
|
|
5568
|
+
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4915
5569
|
return envObject.clearLastError();
|
|
4916
5570
|
}
|
|
4917
5571
|
function napi_close_handle_scope(env, scope) {
|
|
@@ -4935,8 +5589,9 @@ function createNapiModule(options) {
|
|
|
4935
5589
|
if (!result)
|
|
4936
5590
|
return envObject.setLastError(1);
|
|
4937
5591
|
var scope = emnapiCtx.openScope(envObject);
|
|
5592
|
+
result >>>= 0;
|
|
4938
5593
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4939
|
-
HEAP_DATA_VIEW.
|
|
5594
|
+
HEAP_DATA_VIEW.setUint32(result, scope.id, true);
|
|
4940
5595
|
return envObject.clearLastError();
|
|
4941
5596
|
}
|
|
4942
5597
|
function napi_close_escapable_handle_scope(env, scope) {
|
|
@@ -4965,10 +5620,12 @@ function createNapiModule(options) {
|
|
|
4965
5620
|
return envObject.setLastError(1);
|
|
4966
5621
|
var scopeObject = emnapiCtx.scopeStore.get(scope);
|
|
4967
5622
|
if (!scopeObject.escapeCalled()) {
|
|
5623
|
+
escapee >>>= 0;
|
|
5624
|
+
result >>>= 0;
|
|
4968
5625
|
var newHandle = scopeObject.escape(escapee);
|
|
4969
5626
|
var value = newHandle ? newHandle.id : 0;
|
|
4970
5627
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4971
|
-
HEAP_DATA_VIEW.
|
|
5628
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4972
5629
|
return envObject.clearLastError();
|
|
4973
5630
|
}
|
|
4974
5631
|
return envObject.setLastError(12);
|
|
@@ -4989,8 +5646,9 @@ function createNapiModule(options) {
|
|
|
4989
5646
|
}
|
|
4990
5647
|
}
|
|
4991
5648
|
var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1);
|
|
5649
|
+
result >>>= 0;
|
|
4992
5650
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4993
|
-
HEAP_DATA_VIEW.
|
|
5651
|
+
HEAP_DATA_VIEW.setUint32(result, ref.id, true);
|
|
4994
5652
|
return envObject.clearLastError();
|
|
4995
5653
|
}
|
|
4996
5654
|
function napi_delete_reference(env, ref) {
|
|
@@ -5011,6 +5669,7 @@ function createNapiModule(options) {
|
|
|
5011
5669
|
return envObject.setLastError(1);
|
|
5012
5670
|
var count = emnapiCtx.refStore.get(ref).ref();
|
|
5013
5671
|
if (result) {
|
|
5672
|
+
result >>>= 0;
|
|
5014
5673
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5015
5674
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5016
5675
|
}
|
|
@@ -5030,6 +5689,7 @@ function createNapiModule(options) {
|
|
|
5030
5689
|
}
|
|
5031
5690
|
var count = reference.unref();
|
|
5032
5691
|
if (result) {
|
|
5692
|
+
result >>>= 0;
|
|
5033
5693
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5034
5694
|
HEAP_DATA_VIEW.setUint32(result, count, true);
|
|
5035
5695
|
}
|
|
@@ -5046,8 +5706,9 @@ function createNapiModule(options) {
|
|
|
5046
5706
|
return envObject.setLastError(1);
|
|
5047
5707
|
var reference = emnapiCtx.refStore.get(ref);
|
|
5048
5708
|
var handleId = reference.get(envObject);
|
|
5709
|
+
result >>>= 0;
|
|
5049
5710
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5050
|
-
HEAP_DATA_VIEW.
|
|
5711
|
+
HEAP_DATA_VIEW.setUint32(result, handleId, true);
|
|
5051
5712
|
return envObject.clearLastError();
|
|
5052
5713
|
}
|
|
5053
5714
|
function napi_add_env_cleanup_hook(env, fun, arg) {
|
|
@@ -5056,6 +5717,8 @@ function createNapiModule(options) {
|
|
|
5056
5717
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5057
5718
|
if (!fun)
|
|
5058
5719
|
return envObject.setLastError(1);
|
|
5720
|
+
fun >>>= 0;
|
|
5721
|
+
arg >>>= 0;
|
|
5059
5722
|
emnapiCtx.addCleanupHook(envObject, fun, arg);
|
|
5060
5723
|
return 0;
|
|
5061
5724
|
}
|
|
@@ -5065,6 +5728,8 @@ function createNapiModule(options) {
|
|
|
5065
5728
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5066
5729
|
if (!fun)
|
|
5067
5730
|
return envObject.setLastError(1);
|
|
5731
|
+
fun >>>= 0;
|
|
5732
|
+
arg >>>= 0;
|
|
5068
5733
|
emnapiCtx.removeCleanupHook(envObject, fun, arg);
|
|
5069
5734
|
return 0;
|
|
5070
5735
|
}
|
|
@@ -5125,10 +5790,12 @@ function createNapiModule(options) {
|
|
|
5125
5790
|
var p = new Promise(function (resolve, reject) {
|
|
5126
5791
|
var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject });
|
|
5127
5792
|
deferredObjectId = deferredObject.id;
|
|
5128
|
-
|
|
5793
|
+
deferred >>>= 0;
|
|
5794
|
+
HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true);
|
|
5129
5795
|
});
|
|
5796
|
+
promise >>>= 0;
|
|
5130
5797
|
value = emnapiCtx.addToCurrentScope(p).id;
|
|
5131
|
-
HEAP_DATA_VIEW.
|
|
5798
|
+
HEAP_DATA_VIEW.setUint32(promise, value, true);
|
|
5132
5799
|
return envObject.getReturnStatus();
|
|
5133
5800
|
}
|
|
5134
5801
|
catch (err) {
|
|
@@ -5194,6 +5861,7 @@ function createNapiModule(options) {
|
|
|
5194
5861
|
if (!is_promise)
|
|
5195
5862
|
return envObject.setLastError(1);
|
|
5196
5863
|
var h = emnapiCtx.handleStore.get(value);
|
|
5864
|
+
is_promise >>>= 0;
|
|
5197
5865
|
var r = h.isPromise() ? 1 : 0;
|
|
5198
5866
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5199
5867
|
HEAP_DATA_VIEW.setInt8(is_promise, r, true);
|
|
@@ -5337,9 +6005,10 @@ function createNapiModule(options) {
|
|
|
5337
6005
|
}
|
|
5338
6006
|
}
|
|
5339
6007
|
}
|
|
6008
|
+
result >>>= 0;
|
|
5340
6009
|
value = emnapiCtx.addToCurrentScope(ret).id;
|
|
5341
6010
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5342
|
-
HEAP_DATA_VIEW.
|
|
6011
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5343
6012
|
return envObject.getReturnStatus();
|
|
5344
6013
|
}
|
|
5345
6014
|
catch (err) {
|
|
@@ -5408,6 +6077,7 @@ function createNapiModule(options) {
|
|
|
5408
6077
|
catch (_) {
|
|
5409
6078
|
return envObject.setLastError(2);
|
|
5410
6079
|
}
|
|
6080
|
+
result >>>= 0;
|
|
5411
6081
|
r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0;
|
|
5412
6082
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5413
6083
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5447,9 +6117,10 @@ function createNapiModule(options) {
|
|
|
5447
6117
|
catch (_) {
|
|
5448
6118
|
return envObject.setLastError(2);
|
|
5449
6119
|
}
|
|
6120
|
+
result >>>= 0;
|
|
5450
6121
|
value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]);
|
|
5451
6122
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5452
|
-
HEAP_DATA_VIEW.
|
|
6123
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5453
6124
|
return envObject.getReturnStatus();
|
|
5454
6125
|
}
|
|
5455
6126
|
catch (err) {
|
|
@@ -5490,6 +6161,7 @@ function createNapiModule(options) {
|
|
|
5490
6161
|
}
|
|
5491
6162
|
}
|
|
5492
6163
|
if (result) {
|
|
6164
|
+
result >>>= 0;
|
|
5493
6165
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5494
6166
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5495
6167
|
}
|
|
@@ -5534,6 +6206,7 @@ function createNapiModule(options) {
|
|
|
5534
6206
|
return envObject.setLastError(4);
|
|
5535
6207
|
}
|
|
5536
6208
|
r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value);
|
|
6209
|
+
result >>>= 0;
|
|
5537
6210
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5538
6211
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5539
6212
|
return envObject.getReturnStatus();
|
|
@@ -5565,6 +6238,7 @@ function createNapiModule(options) {
|
|
|
5565
6238
|
if (!cname) {
|
|
5566
6239
|
return envObject.setLastError(1);
|
|
5567
6240
|
}
|
|
6241
|
+
cname >>>= 0;
|
|
5568
6242
|
emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value;
|
|
5569
6243
|
return envObject.getReturnStatus();
|
|
5570
6244
|
}
|
|
@@ -5603,6 +6277,8 @@ function createNapiModule(options) {
|
|
|
5603
6277
|
catch (_) {
|
|
5604
6278
|
return envObject.setLastError(2);
|
|
5605
6279
|
}
|
|
6280
|
+
utf8name >>>= 0;
|
|
6281
|
+
result >>>= 0;
|
|
5606
6282
|
r = emnapiString.UTF8ToString(utf8name, -1) in v;
|
|
5607
6283
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5608
6284
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
@@ -5643,9 +6319,11 @@ function createNapiModule(options) {
|
|
|
5643
6319
|
catch (_) {
|
|
5644
6320
|
return envObject.setLastError(2);
|
|
5645
6321
|
}
|
|
6322
|
+
utf8name >>>= 0;
|
|
6323
|
+
result >>>= 0;
|
|
5646
6324
|
value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]);
|
|
5647
6325
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5648
|
-
HEAP_DATA_VIEW.
|
|
6326
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5649
6327
|
return envObject.getReturnStatus();
|
|
5650
6328
|
}
|
|
5651
6329
|
catch (err) {
|
|
@@ -5707,6 +6385,7 @@ function createNapiModule(options) {
|
|
|
5707
6385
|
catch (_) {
|
|
5708
6386
|
return envObject.setLastError(2);
|
|
5709
6387
|
}
|
|
6388
|
+
result >>>= 0;
|
|
5710
6389
|
r = ((index >>> 0) in v) ? 1 : 0;
|
|
5711
6390
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5712
6391
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -5744,9 +6423,10 @@ function createNapiModule(options) {
|
|
|
5744
6423
|
catch (_) {
|
|
5745
6424
|
return envObject.setLastError(2);
|
|
5746
6425
|
}
|
|
6426
|
+
result >>>= 0;
|
|
5747
6427
|
value = envObject.ensureHandleId(v[index >>> 0]);
|
|
5748
6428
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5749
|
-
HEAP_DATA_VIEW.
|
|
6429
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5750
6430
|
return envObject.getReturnStatus();
|
|
5751
6431
|
}
|
|
5752
6432
|
catch (err) {
|
|
@@ -5784,6 +6464,7 @@ function createNapiModule(options) {
|
|
|
5784
6464
|
}
|
|
5785
6465
|
}
|
|
5786
6466
|
if (result) {
|
|
6467
|
+
result >>>= 0;
|
|
5787
6468
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5788
6469
|
HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true);
|
|
5789
6470
|
}
|
|
@@ -5806,6 +6487,8 @@ function createNapiModule(options) {
|
|
|
5806
6487
|
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
5807
6488
|
envObject.clearLastError();
|
|
5808
6489
|
try {
|
|
6490
|
+
properties >>>= 0;
|
|
6491
|
+
property_count >>>= 0;
|
|
5809
6492
|
property_count = property_count >>> 0;
|
|
5810
6493
|
if (property_count > 0) {
|
|
5811
6494
|
if (!properties)
|
|
@@ -5822,14 +6505,15 @@ function createNapiModule(options) {
|
|
|
5822
6505
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5823
6506
|
for (var i = 0; i < property_count; i++) {
|
|
5824
6507
|
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.
|
|
6508
|
+
var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true);
|
|
6509
|
+
var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true);
|
|
6510
|
+
var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true);
|
|
6511
|
+
var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true);
|
|
6512
|
+
var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true);
|
|
6513
|
+
var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true);
|
|
5831
6514
|
attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true);
|
|
5832
|
-
|
|
6515
|
+
attributes >>>= 0;
|
|
6516
|
+
var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true);
|
|
5833
6517
|
if (utf8Name) {
|
|
5834
6518
|
propertyName = emnapiString.UTF8ToString(utf8Name, -1);
|
|
5835
6519
|
}
|
|
@@ -5946,9 +6630,10 @@ function createNapiModule(options) {
|
|
|
5946
6630
|
}
|
|
5947
6631
|
var g = emnapiCtx.handleStore.get(5).value;
|
|
5948
6632
|
var ret = g.eval(v8Script.value);
|
|
6633
|
+
result >>>= 0;
|
|
5949
6634
|
value = envObject.ensureHandleId(ret);
|
|
5950
6635
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
5951
|
-
HEAP_DATA_VIEW.
|
|
6636
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
5952
6637
|
status = envObject.getReturnStatus();
|
|
5953
6638
|
}
|
|
5954
6639
|
catch (err) {
|
|
@@ -5971,6 +6656,7 @@ function createNapiModule(options) {
|
|
|
5971
6656
|
if (!result)
|
|
5972
6657
|
return envObject.setLastError(1);
|
|
5973
6658
|
var v = emnapiCtx.handleStore.get(value);
|
|
6659
|
+
result >>>= 0;
|
|
5974
6660
|
var r;
|
|
5975
6661
|
if (v.isNumber()) {
|
|
5976
6662
|
r = 3;
|
|
@@ -6026,9 +6712,10 @@ function createNapiModule(options) {
|
|
|
6026
6712
|
if (!result)
|
|
6027
6713
|
return envObject.setLastError(1);
|
|
6028
6714
|
var handle = emnapiCtx.handleStore.get(value);
|
|
6715
|
+
result >>>= 0;
|
|
6029
6716
|
v = handle.value ? 4 : 3;
|
|
6030
6717
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6031
|
-
HEAP_DATA_VIEW.
|
|
6718
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6032
6719
|
return envObject.getReturnStatus();
|
|
6033
6720
|
}
|
|
6034
6721
|
catch (err) {
|
|
@@ -6056,9 +6743,10 @@ function createNapiModule(options) {
|
|
|
6056
6743
|
if (handle.isBigInt()) {
|
|
6057
6744
|
throw new TypeError('Cannot convert a BigInt value to a number');
|
|
6058
6745
|
}
|
|
6746
|
+
result >>>= 0;
|
|
6059
6747
|
v = emnapiCtx.addToCurrentScope(Number(handle.value)).id;
|
|
6060
6748
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6061
|
-
HEAP_DATA_VIEW.
|
|
6749
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6062
6750
|
return envObject.getReturnStatus();
|
|
6063
6751
|
}
|
|
6064
6752
|
catch (err) {
|
|
@@ -6086,9 +6774,10 @@ function createNapiModule(options) {
|
|
|
6086
6774
|
if (handle.value == null) {
|
|
6087
6775
|
throw new TypeError('Cannot convert undefined or null to object');
|
|
6088
6776
|
}
|
|
6777
|
+
result >>>= 0;
|
|
6089
6778
|
v = envObject.ensureHandleId(Object(handle.value));
|
|
6090
6779
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6091
|
-
HEAP_DATA_VIEW.
|
|
6780
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6092
6781
|
return envObject.getReturnStatus();
|
|
6093
6782
|
}
|
|
6094
6783
|
catch (err) {
|
|
@@ -6116,9 +6805,10 @@ function createNapiModule(options) {
|
|
|
6116
6805
|
if (handle.isSymbol()) {
|
|
6117
6806
|
throw new TypeError('Cannot convert a Symbol value to a string');
|
|
6118
6807
|
}
|
|
6808
|
+
result >>>= 0;
|
|
6119
6809
|
v = emnapiCtx.addToCurrentScope(String(handle.value)).id;
|
|
6120
6810
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6121
|
-
HEAP_DATA_VIEW.
|
|
6811
|
+
HEAP_DATA_VIEW.setUint32(result, v, true);
|
|
6122
6812
|
return envObject.getReturnStatus();
|
|
6123
6813
|
}
|
|
6124
6814
|
catch (err) {
|
|
@@ -6144,6 +6834,7 @@ function createNapiModule(options) {
|
|
|
6144
6834
|
return envObject.setLastError(1);
|
|
6145
6835
|
if (!constructor)
|
|
6146
6836
|
return envObject.setLastError(1);
|
|
6837
|
+
result >>>= 0;
|
|
6147
6838
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6148
6839
|
HEAP_DATA_VIEW.setInt8(result, 0, true);
|
|
6149
6840
|
var ctor = emnapiCtx.handleStore.get(constructor);
|
|
@@ -6171,6 +6862,7 @@ function createNapiModule(options) {
|
|
|
6171
6862
|
if (!result)
|
|
6172
6863
|
return envObject.setLastError(1);
|
|
6173
6864
|
var h = emnapiCtx.handleStore.get(value);
|
|
6865
|
+
result >>>= 0;
|
|
6174
6866
|
var r = h.isArray() ? 1 : 0;
|
|
6175
6867
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6176
6868
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6186,11 +6878,31 @@ function createNapiModule(options) {
|
|
|
6186
6878
|
if (!result)
|
|
6187
6879
|
return envObject.setLastError(1);
|
|
6188
6880
|
var h = emnapiCtx.handleStore.get(value);
|
|
6881
|
+
result >>>= 0;
|
|
6189
6882
|
var r = h.isArrayBuffer() ? 1 : 0;
|
|
6190
6883
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6191
6884
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
6192
6885
|
return envObject.clearLastError();
|
|
6193
6886
|
}
|
|
6887
|
+
function node_api_is_sharedarraybuffer(env, value, result) {
|
|
6888
|
+
if (!env)
|
|
6889
|
+
return 1;
|
|
6890
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
6891
|
+
envObject.checkGCAccess();
|
|
6892
|
+
if (!value)
|
|
6893
|
+
return envObject.setLastError(1);
|
|
6894
|
+
if (!result)
|
|
6895
|
+
return envObject.setLastError(1);
|
|
6896
|
+
var h = emnapiCtx.handleStore.get(value);
|
|
6897
|
+
result >>>= 0;
|
|
6898
|
+
var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) ||
|
|
6899
|
+
(Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]'))
|
|
6900
|
+
? 1
|
|
6901
|
+
: 0;
|
|
6902
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6903
|
+
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
6904
|
+
return envObject.clearLastError();
|
|
6905
|
+
}
|
|
6194
6906
|
function napi_is_date(env, value, result) {
|
|
6195
6907
|
if (!env)
|
|
6196
6908
|
return 1;
|
|
@@ -6201,6 +6913,7 @@ function createNapiModule(options) {
|
|
|
6201
6913
|
if (!result)
|
|
6202
6914
|
return envObject.setLastError(1);
|
|
6203
6915
|
var h = emnapiCtx.handleStore.get(value);
|
|
6916
|
+
result >>>= 0;
|
|
6204
6917
|
var r = h.isDate() ? 1 : 0;
|
|
6205
6918
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6206
6919
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6216,6 +6929,7 @@ function createNapiModule(options) {
|
|
|
6216
6929
|
if (!result)
|
|
6217
6930
|
return envObject.setLastError(1);
|
|
6218
6931
|
var val = emnapiCtx.handleStore.get(value).value;
|
|
6932
|
+
result >>>= 0;
|
|
6219
6933
|
var r = (val instanceof Error) ? 1 : 0;
|
|
6220
6934
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6221
6935
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6231,6 +6945,7 @@ function createNapiModule(options) {
|
|
|
6231
6945
|
if (!result)
|
|
6232
6946
|
return envObject.setLastError(1);
|
|
6233
6947
|
var h = emnapiCtx.handleStore.get(value);
|
|
6948
|
+
result >>>= 0;
|
|
6234
6949
|
var r = h.isTypedArray() ? 1 : 0;
|
|
6235
6950
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6236
6951
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6246,6 +6961,7 @@ function createNapiModule(options) {
|
|
|
6246
6961
|
if (!result)
|
|
6247
6962
|
return envObject.setLastError(1);
|
|
6248
6963
|
var h = emnapiCtx.handleStore.get(value);
|
|
6964
|
+
result >>>= 0;
|
|
6249
6965
|
var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0;
|
|
6250
6966
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6251
6967
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6261,6 +6977,7 @@ function createNapiModule(options) {
|
|
|
6261
6977
|
if (!result)
|
|
6262
6978
|
return envObject.setLastError(1);
|
|
6263
6979
|
var h = emnapiCtx.handleStore.get(value);
|
|
6980
|
+
result >>>= 0;
|
|
6264
6981
|
var r = h.isDataView() ? 1 : 0;
|
|
6265
6982
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6266
6983
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6286,6 +7003,7 @@ function createNapiModule(options) {
|
|
|
6286
7003
|
return envObject.setLastError(1);
|
|
6287
7004
|
var lv = emnapiCtx.handleStore.get(lhs).value;
|
|
6288
7005
|
var rv = emnapiCtx.handleStore.get(rhs).value;
|
|
7006
|
+
result >>>= 0;
|
|
6289
7007
|
r = (lv === rv) ? 1 : 0;
|
|
6290
7008
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6291
7009
|
HEAP_DATA_VIEW.setInt8(result, r, true);
|
|
@@ -6336,6 +7054,7 @@ function createNapiModule(options) {
|
|
|
6336
7054
|
if (!result)
|
|
6337
7055
|
return envObject.setLastError(1);
|
|
6338
7056
|
var h = emnapiCtx.handleStore.get(arraybuffer);
|
|
7057
|
+
result >>>= 0;
|
|
6339
7058
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
6340
7059
|
if (h.isArrayBuffer() && h.value.byteLength === 0) {
|
|
6341
7060
|
try {
|
|
@@ -6371,7 +7090,8 @@ function createNapiModule(options) {
|
|
|
6371
7090
|
napi_is_error: napi_is_error,
|
|
6372
7091
|
napi_is_typedarray: napi_is_typedarray,
|
|
6373
7092
|
napi_strict_equals: napi_strict_equals,
|
|
6374
|
-
napi_typeof: napi_typeof
|
|
7093
|
+
napi_typeof: napi_typeof,
|
|
7094
|
+
node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer
|
|
6375
7095
|
});
|
|
6376
7096
|
function napi_get_version(env, result) {
|
|
6377
7097
|
if (!env)
|
|
@@ -6522,9 +7242,9 @@ function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) {
|
|
|
6522
7242
|
}
|
|
6523
7243
|
const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table;
|
|
6524
7244
|
if (wasi && !exportMemory) {
|
|
6525
|
-
const exports = Object.create(null);
|
|
6526
|
-
Object.assign(exports, originalExports, { memory });
|
|
6527
|
-
instance = { exports };
|
|
7245
|
+
const exports$1 = Object.create(null);
|
|
7246
|
+
Object.assign(exports$1, originalExports, { memory });
|
|
7247
|
+
instance = { exports: exports$1 };
|
|
6528
7248
|
}
|
|
6529
7249
|
const module = source.module;
|
|
6530
7250
|
if (wasi) {
|
|
@@ -6609,7 +7329,23 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6609
7329
|
if (typeof options.onLoad !== 'function') {
|
|
6610
7330
|
throw new TypeError('options.onLoad is not a function');
|
|
6611
7331
|
}
|
|
6612
|
-
|
|
7332
|
+
const userOnError = options.onError;
|
|
7333
|
+
super({
|
|
7334
|
+
...options,
|
|
7335
|
+
onError: (err, type) => {
|
|
7336
|
+
var _a;
|
|
7337
|
+
const emnapi_thread_crashed = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed;
|
|
7338
|
+
if (typeof emnapi_thread_crashed === 'function') {
|
|
7339
|
+
emnapi_thread_crashed();
|
|
7340
|
+
}
|
|
7341
|
+
if (typeof userOnError === 'function') {
|
|
7342
|
+
userOnError(err, type);
|
|
7343
|
+
}
|
|
7344
|
+
else {
|
|
7345
|
+
throw err;
|
|
7346
|
+
}
|
|
7347
|
+
}
|
|
7348
|
+
});
|
|
6613
7349
|
this.napiModule = undefined;
|
|
6614
7350
|
}
|
|
6615
7351
|
instantiate(data) {
|
|
@@ -6630,21 +7366,21 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
6630
7366
|
if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) {
|
|
6631
7367
|
const type = e.data.__emnapi__.type;
|
|
6632
7368
|
const payload = e.data.__emnapi__.payload;
|
|
6633
|
-
|
|
6634
|
-
|
|
6635
|
-
this.
|
|
6636
|
-
|
|
7369
|
+
try {
|
|
7370
|
+
if (type === 'async-worker-init') {
|
|
7371
|
+
this.handleAfterLoad(e, () => {
|
|
7372
|
+
this.napiModule.initWorker(payload.arg, payload.func);
|
|
7373
|
+
});
|
|
7374
|
+
}
|
|
6637
7375
|
}
|
|
6638
|
-
|
|
6639
|
-
this.
|
|
6640
|
-
this.napiModule.executeAsyncWork(payload.work);
|
|
6641
|
-
});
|
|
7376
|
+
catch (err) {
|
|
7377
|
+
this.onError(err, type);
|
|
6642
7378
|
}
|
|
6643
7379
|
}
|
|
6644
7380
|
}
|
|
6645
7381
|
}
|
|
6646
7382
|
|
|
6647
|
-
const version = "1.
|
|
7383
|
+
const version = "1.10.0";
|
|
6648
7384
|
|
|
6649
7385
|
exports.MessageHandler = MessageHandler;
|
|
6650
7386
|
exports.createNapiModule = createNapiModule;
|