emnapi 0.33.1 → 0.35.0
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/CMakeLists.txt +43 -1
- package/README.md +93 -19
- package/dist/library_napi.js +1262 -425
- package/lib/wasm32/libdlmalloc-mt.a +0 -0
- package/lib/wasm32/libdlmalloc.a +0 -0
- package/lib/wasm32/libemmalloc-mt.a +0 -0
- package/lib/wasm32/libemnapi-basic-mt.a +0 -0
- package/lib/wasm32-emscripten/libemnapi-mt.a +0 -0
- package/lib/wasm32-wasi/libemnapi-basic-mt.a +0 -0
- package/package.json +1 -1
- package/src/malloc/dlmalloc/malloc.c +2 -2
- package/src/thread/async_worker_create.c +76 -0
- package/src/thread/async_worker_init.S +33 -0
- package/src/threadsafe_function.c +3 -4
- package/src/uv/threadpool.c +9 -3
package/dist/library_napi.js
CHANGED
|
@@ -1,37 +1,33 @@
|
|
|
1
1
|
{{{ ((DEFAULT_LIBRARY_FUNCS_TO_INCLUDE.indexOf("$emnapiInit") === -1 ? DEFAULT_LIBRARY_FUNCS_TO_INCLUDE.push("$emnapiInit") : undefined), "") }}}
|
|
2
2
|
{{{ ((EXPORTED_RUNTIME_METHODS.indexOf("emnapiInit") === -1 ? EXPORTED_RUNTIME_METHODS.push("emnapiInit") : undefined), "") }}}
|
|
3
|
-
|
|
4
|
-
function emnapiCreateIdGenerator() {
|
|
5
|
-
var obj = {
|
|
6
|
-
nextId: 1,
|
|
7
|
-
list: [],
|
|
8
|
-
generate: function () {
|
|
9
|
-
var id;
|
|
10
|
-
if (obj.list.length) {
|
|
11
|
-
id = obj.list.shift();
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
id = obj.nextId;
|
|
15
|
-
obj.nextId++;
|
|
16
|
-
}
|
|
17
|
-
return id;
|
|
18
|
-
},
|
|
19
|
-
reuse: function (id) {
|
|
20
|
-
obj.list.push(id);
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
return obj;
|
|
24
|
-
}
|
|
25
|
-
var emnapiAsyncWork = {
|
|
3
|
+
var emnapiAWST = {
|
|
26
4
|
idGen: {},
|
|
27
5
|
values: [undefined],
|
|
28
6
|
queued: new Set(),
|
|
29
7
|
pending: [],
|
|
30
8
|
init: function () {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
9
|
+
var idGen = {
|
|
10
|
+
nextId: 1,
|
|
11
|
+
list: [],
|
|
12
|
+
generate: function () {
|
|
13
|
+
var id;
|
|
14
|
+
if (idGen.list.length) {
|
|
15
|
+
id = idGen.list.shift();
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
id = idGen.nextId;
|
|
19
|
+
idGen.nextId++;
|
|
20
|
+
}
|
|
21
|
+
return id;
|
|
22
|
+
},
|
|
23
|
+
reuse: function (id) {
|
|
24
|
+
idGen.list.push(id);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
emnapiAWST.idGen = idGen;
|
|
28
|
+
emnapiAWST.values = [undefined];
|
|
29
|
+
emnapiAWST.queued = new Set();
|
|
30
|
+
emnapiAWST.pending = [];
|
|
35
31
|
},
|
|
36
32
|
create: function (env, resource, resourceName, execute, complete, data) {
|
|
37
33
|
var asyncId = 0;
|
|
@@ -41,12 +37,11 @@ var emnapiAsyncWork = {
|
|
|
41
37
|
asyncId = asyncContext.asyncId;
|
|
42
38
|
triggerAsyncId = asyncContext.triggerAsyncId;
|
|
43
39
|
}
|
|
44
|
-
var id =
|
|
45
|
-
|
|
40
|
+
var id = emnapiAWST.idGen.generate();
|
|
41
|
+
emnapiAWST.values[id] = {
|
|
46
42
|
env: env,
|
|
47
43
|
id: id,
|
|
48
44
|
resource: resource,
|
|
49
|
-
resourceName: resourceName,
|
|
50
45
|
asyncId: asyncId,
|
|
51
46
|
triggerAsyncId: triggerAsyncId,
|
|
52
47
|
status: 0,
|
|
@@ -62,6 +57,8 @@ var emnapiAsyncWork = {
|
|
|
62
57
|
var env = work.env;
|
|
63
58
|
var data = work.data;
|
|
64
59
|
var callback = function () {
|
|
60
|
+
if (!complete)
|
|
61
|
+
return;
|
|
65
62
|
var envObject = emnapiCtx.envStore.get(env);
|
|
66
63
|
var scope = emnapiCtx.openScope(envObject);
|
|
67
64
|
try {
|
|
@@ -84,16 +81,16 @@ var emnapiAsyncWork = {
|
|
|
84
81
|
}
|
|
85
82
|
},
|
|
86
83
|
queue: function (id) {
|
|
87
|
-
var work =
|
|
84
|
+
var work = emnapiAWST.values[id];
|
|
88
85
|
if (!work)
|
|
89
86
|
return;
|
|
90
87
|
if (work.status === 0) {
|
|
91
88
|
work.status = 1;
|
|
92
|
-
if (
|
|
93
|
-
|
|
89
|
+
if (emnapiAWST.queued.size >= (Math.abs(emnapiAsyncWorkPoolSize) || 4)) {
|
|
90
|
+
emnapiAWST.pending.push(id);
|
|
94
91
|
return;
|
|
95
92
|
}
|
|
96
|
-
|
|
93
|
+
emnapiAWST.queued.add(id);
|
|
97
94
|
var env_1 = work.env;
|
|
98
95
|
var data_1 = work.data;
|
|
99
96
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -101,25 +98,29 @@ var emnapiAsyncWork = {
|
|
|
101
98
|
work.status = 2;
|
|
102
99
|
emnapiCtx.feature.setImmediate(function () {
|
|
103
100
|
{{{ makeDynCall('vpp', 'execute') }}}(env_1, data_1);
|
|
104
|
-
|
|
101
|
+
emnapiAWST.queued.delete(id);
|
|
105
102
|
work.status = 3;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
103
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
104
|
+
emnapiAWST.callComplete(work, 0 /* napi_status.napi_ok */);
|
|
105
|
+
});
|
|
106
|
+
if (emnapiAWST.pending.length > 0) {
|
|
107
|
+
var nextWorkId = emnapiAWST.pending.shift();
|
|
108
|
+
emnapiAWST.values[nextWorkId].status = 0;
|
|
109
|
+
emnapiAWST.queue(nextWorkId);
|
|
111
110
|
}
|
|
112
111
|
});
|
|
113
112
|
}
|
|
114
113
|
},
|
|
115
114
|
cancel: function (id) {
|
|
116
|
-
var index =
|
|
115
|
+
var index = emnapiAWST.pending.indexOf(id);
|
|
117
116
|
if (index !== -1) {
|
|
118
|
-
var
|
|
119
|
-
if (
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
117
|
+
var work_1 = emnapiAWST.values[id];
|
|
118
|
+
if (work_1 && (work_1.status === 1)) {
|
|
119
|
+
work_1.status = 4;
|
|
120
|
+
emnapiAWST.pending.splice(index, 1);
|
|
121
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
122
|
+
emnapiAWST.callComplete(work_1, 11 /* napi_status.napi_cancelled */);
|
|
123
|
+
});
|
|
123
124
|
return 0 /* napi_status.napi_ok */;
|
|
124
125
|
}
|
|
125
126
|
else {
|
|
@@ -129,7 +130,7 @@ var emnapiAsyncWork = {
|
|
|
129
130
|
return 9 /* napi_status.napi_generic_failure */;
|
|
130
131
|
},
|
|
131
132
|
remove: function (id) {
|
|
132
|
-
var work =
|
|
133
|
+
var work = emnapiAWST.values[id];
|
|
133
134
|
if (!work)
|
|
134
135
|
return;
|
|
135
136
|
if (emnapiNodeBinding) {
|
|
@@ -138,68 +139,11 @@ var emnapiAsyncWork = {
|
|
|
138
139
|
triggerAsyncId: work.triggerAsyncId
|
|
139
140
|
});
|
|
140
141
|
}
|
|
141
|
-
|
|
142
|
-
|
|
142
|
+
emnapiAWST.values[id] = undefined;
|
|
143
|
+
emnapiAWST.idGen.reuse(id);
|
|
143
144
|
}
|
|
144
145
|
};
|
|
145
|
-
|
|
146
|
-
if (env == 0)
|
|
147
|
-
return 1 /* napi_status.napi_invalid_arg */;
|
|
148
|
-
var envObject = emnapiCtx.envStore.get(env);
|
|
149
|
-
if (execute == 0)
|
|
150
|
-
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
151
|
-
if (result == 0)
|
|
152
|
-
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
153
|
-
var resourceObject;
|
|
154
|
-
if (resource) {
|
|
155
|
-
resourceObject = Object(emnapiCtx.handleStore.get(resource).value);
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
resourceObject = {};
|
|
159
|
-
}
|
|
160
|
-
if (resource_name == 0)
|
|
161
|
-
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
162
|
-
var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
|
|
163
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
164
|
-
var id = emnapiAsyncWork.create(env, resourceObject, resourceName, execute, complete, data);
|
|
165
|
-
{{{ makeSetValue('result', 0, 'id', '*') }}};
|
|
166
|
-
return envObject.clearLastError();
|
|
167
|
-
}
|
|
168
|
-
function _napi_delete_async_work(env, work) {
|
|
169
|
-
if (env == 0)
|
|
170
|
-
return 1 /* napi_status.napi_invalid_arg */;
|
|
171
|
-
var envObject = emnapiCtx.envStore.get(env);
|
|
172
|
-
if (work == 0)
|
|
173
|
-
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
174
|
-
emnapiAsyncWork.remove(work);
|
|
175
|
-
return envObject.clearLastError();
|
|
176
|
-
}
|
|
177
|
-
function _napi_queue_async_work(env, work) {
|
|
178
|
-
if (env == 0)
|
|
179
|
-
return 1 /* napi_status.napi_invalid_arg */;
|
|
180
|
-
var envObject = emnapiCtx.envStore.get(env);
|
|
181
|
-
if (work == 0)
|
|
182
|
-
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
183
|
-
emnapiAsyncWork.queue(work);
|
|
184
|
-
return envObject.clearLastError();
|
|
185
|
-
}
|
|
186
|
-
function _napi_cancel_async_work(env, work) {
|
|
187
|
-
if (env == 0)
|
|
188
|
-
return 1 /* napi_status.napi_invalid_arg */;
|
|
189
|
-
var envObject = emnapiCtx.envStore.get(env);
|
|
190
|
-
if (work == 0)
|
|
191
|
-
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
192
|
-
var status = emnapiAsyncWork.cancel(work);
|
|
193
|
-
if (status === 0 /* napi_status.napi_ok */)
|
|
194
|
-
return envObject.clearLastError();
|
|
195
|
-
return envObject.setLastError(status);
|
|
196
|
-
}
|
|
197
|
-
emnapiImplementHelper('$emnapiCreateIdGenerator', undefined, emnapiCreateIdGenerator, []);
|
|
198
|
-
emnapiDefineVar('$emnapiAsyncWork', emnapiAsyncWork, ['$emnapiCreateIdGenerator'], 'emnapiAsyncWork.init();');
|
|
199
|
-
emnapiImplement('napi_create_async_work', 'ippppppp', _napi_create_async_work, ['$emnapiAsyncWork']);
|
|
200
|
-
emnapiImplement('napi_delete_async_work', 'ipp', _napi_delete_async_work, ['$emnapiAsyncWork']);
|
|
201
|
-
emnapiImplement('napi_queue_async_work', 'ipp', _napi_queue_async_work, ['$emnapiAsyncWork']);
|
|
202
|
-
emnapiImplement('napi_cancel_async_work', 'ipp', _napi_cancel_async_work, ['$emnapiAsyncWork']);
|
|
146
|
+
emnapiDefineVar('$emnapiAWST', emnapiAWST, ['$emnapiAsyncWorkPoolSize'], 'emnapiAWST.init();');
|
|
203
147
|
function _emnapi_create_memory_view(env, typedarray_type, external_data, byte_length, finalize_cb, finalize_hint, result
|
|
204
148
|
// @ts-expect-error
|
|
205
149
|
) {
|
|
@@ -800,14 +744,14 @@ emnapiImplement('node_api_create_syntax_error', 'ipppp', node_api_create_syntax_
|
|
|
800
744
|
emnapiImplement('napi_is_exception_pending', 'ipp', napi_is_exception_pending);
|
|
801
745
|
emnapiImplement('napi_fatal_error', 'vpppp', napi_fatal_error, ['$emnapiUtf8ToString']);
|
|
802
746
|
emnapiImplement('napi_fatal_exception', 'ipp', napi_fatal_exception);
|
|
803
|
-
/* eslint-disable @typescript-eslint/restrict-plus-operands */
|
|
804
747
|
// @ts-expect-error
|
|
805
748
|
function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
806
749
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
807
750
|
var value;
|
|
808
751
|
if (env == 0)
|
|
809
752
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
810
|
-
var envObject_10 = emnapiCtx
|
|
753
|
+
var envObject_10 = emnapiCtx
|
|
754
|
+
.envStore.get(env);
|
|
811
755
|
if (envObject_10.tryCatch.hasCaught())
|
|
812
756
|
return envObject_10.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
813
757
|
envObject_10.clearLastError();
|
|
@@ -881,7 +825,8 @@ function napi_call_function(env, recv, func, argc, argv, result
|
|
|
881
825
|
var v;
|
|
882
826
|
if (env == 0)
|
|
883
827
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
884
|
-
var envObject_11 = emnapiCtx
|
|
828
|
+
var envObject_11 = emnapiCtx
|
|
829
|
+
.envStore.get(env);
|
|
885
830
|
if (envObject_11.tryCatch.hasCaught())
|
|
886
831
|
return envObject_11.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
887
832
|
envObject_11.clearLastError();
|
|
@@ -927,7 +872,8 @@ function napi_new_instance(env, constructor, argc, argv, result
|
|
|
927
872
|
var v;
|
|
928
873
|
if (env == 0)
|
|
929
874
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
930
|
-
var envObject_12 = emnapiCtx
|
|
875
|
+
var envObject_12 = emnapiCtx
|
|
876
|
+
.envStore.get(env);
|
|
931
877
|
if (envObject_12.tryCatch.hasCaught())
|
|
932
878
|
return envObject_12.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
933
879
|
envObject_12.clearLastError();
|
|
@@ -1545,7 +1491,6 @@ function __emnapi_node_make_callback(env, async_resource, cb, argv, size, async_
|
|
|
1545
1491
|
size = size >>> 0;
|
|
1546
1492
|
var arr = Array(size);
|
|
1547
1493
|
for (; i < size; i++) {
|
|
1548
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/restrict-plus-operands
|
|
1549
1494
|
var argVal = {{{ makeGetValue('argv', 'i * ' + POINTER_SIZE, '*') }}};
|
|
1550
1495
|
arr[i] = emnapiCtx.handleStore.get(argVal).value;
|
|
1551
1496
|
}
|
|
@@ -1641,7 +1586,6 @@ function napi_make_callback(env, async_context, recv, func, argc, argv, result)
|
|
|
1641
1586
|
argc = argc >>> 0;
|
|
1642
1587
|
var arr_1 = Array(argc);
|
|
1643
1588
|
for (; i < argc; i++) {
|
|
1644
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/restrict-plus-operands
|
|
1645
1589
|
var argVal_4 = {{{ makeGetValue("argv", "i * " + POINTER_SIZE, "*") }}};
|
|
1646
1590
|
arr_1[i] = emnapiCtx.handleStore.get(argVal_4).value;
|
|
1647
1591
|
}
|
|
@@ -2517,69 +2461,844 @@ function napi_run_script(env, script, result) {
|
|
|
2517
2461
|
return status;
|
|
2518
2462
|
}
|
|
2519
2463
|
emnapiImplement('napi_run_script', 'ippp', napi_run_script, ['napi_set_last_error']);
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
{{{
|
|
2529
|
-
|
|
2530
|
-
}
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2464
|
+
/* eslint-disable @typescript-eslint/indent */
|
|
2465
|
+
var emnapiTSFN = {
|
|
2466
|
+
offset: {
|
|
2467
|
+
/* napi_ref */ resource: 0,
|
|
2468
|
+
/* double */ async_id: 8,
|
|
2469
|
+
/* double */ trigger_async_id: 16,
|
|
2470
|
+
/* size_t */ queue_size: 24,
|
|
2471
|
+
/* void* */ queue: 1 * {{{ POINTER_SIZE }}} + 24,
|
|
2472
|
+
/* size_t */ thread_count: 2 * {{{ POINTER_SIZE }}} + 24,
|
|
2473
|
+
/* bool */ is_closing: 3 * {{{ POINTER_SIZE }}} + 24,
|
|
2474
|
+
/* atomic_uchar */ dispatch_state: 3 * {{{ POINTER_SIZE }}} + 28,
|
|
2475
|
+
/* void* */ context: 3 * {{{ POINTER_SIZE }}} + 32,
|
|
2476
|
+
/* size_t */ max_queue_size: 4 * {{{ POINTER_SIZE }}} + 32,
|
|
2477
|
+
/* napi_ref */ ref: 5 * {{{ POINTER_SIZE }}} + 32,
|
|
2478
|
+
/* napi_env */ env: 6 * {{{ POINTER_SIZE }}} + 32,
|
|
2479
|
+
/* void* */ finalize_data: 7 * {{{ POINTER_SIZE }}} + 32,
|
|
2480
|
+
/* napi_finalize */ finalize_cb: 8 * {{{ POINTER_SIZE }}} + 32,
|
|
2481
|
+
/* napi_threadsafe_function_call_js */ call_js_cb: 9 * {{{ POINTER_SIZE }}} + 32,
|
|
2482
|
+
/* bool */ handles_closing: 10 * {{{ POINTER_SIZE }}} + 32,
|
|
2483
|
+
/* bool */ async_ref: 10 * {{{ POINTER_SIZE }}} + 36,
|
|
2484
|
+
/* int32_t */ mutex: 10 * {{{ POINTER_SIZE }}} + 40,
|
|
2485
|
+
/* int32_t */ cond: 10 * {{{ POINTER_SIZE }}} + 44,
|
|
2486
|
+
end: 10 * {{{ POINTER_SIZE }}} + 48
|
|
2487
|
+
},
|
|
2488
|
+
init: function () {
|
|
2489
|
+
if (typeof PThread !== 'undefined') {
|
|
2490
|
+
PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
|
|
2491
|
+
PThread.runningWorkers.forEach(emnapiTSFN.addListener);
|
|
2492
|
+
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
2493
|
+
PThread.getNewWorker = function () {
|
|
2494
|
+
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
2495
|
+
emnapiTSFN.addListener(r);
|
|
2496
|
+
return r;
|
|
2497
|
+
};
|
|
2498
|
+
}
|
|
2499
|
+
},
|
|
2500
|
+
addListener: function (worker) {
|
|
2501
|
+
if (!worker)
|
|
2502
|
+
return false;
|
|
2503
|
+
if (worker._emnapiTSFNListener)
|
|
2504
|
+
return true;
|
|
2505
|
+
var handler = function (e) {
|
|
2506
|
+
var data = ENVIRONMENT_IS_NODE ? e : e.data;
|
|
2507
|
+
var __emnapi__ = data.__emnapi__;
|
|
2508
|
+
if (__emnapi__) {
|
|
2509
|
+
var type = __emnapi__.type;
|
|
2510
|
+
var payload = __emnapi__.payload;
|
|
2511
|
+
if (type === 'tsfn-send') {
|
|
2512
|
+
emnapiTSFN.dispatch(payload.tsfn);
|
|
2513
|
+
}
|
|
2514
|
+
}
|
|
2515
|
+
};
|
|
2516
|
+
var dispose = function () {
|
|
2517
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
2518
|
+
worker.off('message', handler);
|
|
2519
|
+
}
|
|
2520
|
+
else {
|
|
2521
|
+
worker.removeEventListener('message', handler, false);
|
|
2522
|
+
}
|
|
2523
|
+
delete worker._emnapiTSFNListener;
|
|
2524
|
+
};
|
|
2525
|
+
worker._emnapiTSFNListener = { handler: handler, dispose: dispose };
|
|
2526
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
2527
|
+
worker.on('message', handler);
|
|
2528
|
+
}
|
|
2529
|
+
else {
|
|
2530
|
+
worker.addEventListener('message', handler, false);
|
|
2531
|
+
}
|
|
2532
|
+
return true;
|
|
2533
|
+
},
|
|
2534
|
+
initQueue: function (func) {
|
|
2535
|
+
var size = 2 * {{{ POINTER_SIZE }}};
|
|
2536
|
+
var queue = {{{ makeMalloc('emnapiTSFN.initQueue', 'size') }}};
|
|
2537
|
+
if (!queue)
|
|
2538
|
+
return false;
|
|
2539
|
+
new Uint8Array(wasmMemory.buffer, queue, size).fill(0);
|
|
2540
|
+
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
2541
|
+
return true;
|
|
2542
|
+
},
|
|
2543
|
+
destroyQueue: function (func) {
|
|
2544
|
+
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
2545
|
+
if (queue) {
|
|
2546
|
+
_free({{{ to64('queue') }}});
|
|
2547
|
+
}
|
|
2548
|
+
},
|
|
2549
|
+
pushQueue: function (func, data) {
|
|
2550
|
+
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
2551
|
+
var head = emnapiTSFN.loadSizeTypeValue(queue, false);
|
|
2552
|
+
var tail = emnapiTSFN.loadSizeTypeValue(queue + {{{ POINTER_SIZE }}}, false);
|
|
2553
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2554
|
+
var size = 2 * {{{ POINTER_SIZE }}};
|
|
2555
|
+
var node = {{{ makeMalloc('emnapiTSFN.pushQueue', 'size') }}};
|
|
2556
|
+
if (!node)
|
|
2557
|
+
throw new Error('OOM');
|
|
2558
|
+
emnapiTSFN.storeSizeTypeValue(node, data, false);
|
|
2559
|
+
emnapiTSFN.storeSizeTypeValue(node + {{{ POINTER_SIZE }}}, 0, false);
|
|
2560
|
+
if (head === 0 && tail === 0) {
|
|
2561
|
+
emnapiTSFN.storeSizeTypeValue(queue, node, false);
|
|
2562
|
+
emnapiTSFN.storeSizeTypeValue(queue + {{{ POINTER_SIZE }}}, node, false);
|
|
2563
|
+
}
|
|
2564
|
+
else {
|
|
2565
|
+
emnapiTSFN.storeSizeTypeValue(tail + {{{ POINTER_SIZE }}}, node, false);
|
|
2566
|
+
emnapiTSFN.storeSizeTypeValue(queue + {{{ POINTER_SIZE }}}, node, false);
|
|
2567
|
+
}
|
|
2568
|
+
emnapiTSFN.addQueueSize(func);
|
|
2569
|
+
},
|
|
2570
|
+
shiftQueue: function (func) {
|
|
2571
|
+
var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false);
|
|
2572
|
+
var head = emnapiTSFN.loadSizeTypeValue(queue, false);
|
|
2573
|
+
if (head === 0)
|
|
2574
|
+
return 0;
|
|
2575
|
+
var node = head;
|
|
2576
|
+
var next = emnapiTSFN.loadSizeTypeValue(head + {{{ POINTER_SIZE }}}, false);
|
|
2577
|
+
emnapiTSFN.storeSizeTypeValue(queue, next, false);
|
|
2578
|
+
if (next === 0) {
|
|
2579
|
+
emnapiTSFN.storeSizeTypeValue(queue + {{{ POINTER_SIZE }}}, 0, false);
|
|
2580
|
+
}
|
|
2581
|
+
emnapiTSFN.storeSizeTypeValue(node + {{{ POINTER_SIZE }}}, 0, false);
|
|
2582
|
+
var value = emnapiTSFN.loadSizeTypeValue(node, false);
|
|
2583
|
+
_free({{{ to64('node') }}});
|
|
2584
|
+
emnapiTSFN.subQueueSize(func);
|
|
2585
|
+
return value;
|
|
2586
|
+
},
|
|
2587
|
+
push: function (func, data, mode) {
|
|
2588
|
+
var mutex = emnapiTSFN.getMutex(func);
|
|
2589
|
+
var cond = emnapiTSFN.getCond(func);
|
|
2590
|
+
var waitCondition = function () {
|
|
2591
|
+
var queueSize = emnapiTSFN.getQueueSize(func);
|
|
2592
|
+
var maxSize = emnapiTSFN.getMaxQueueSize(func);
|
|
2593
|
+
var isClosing = emnapiTSFN.getIsClosing(func);
|
|
2594
|
+
return queueSize >= maxSize && maxSize > 0 && !isClosing;
|
|
2595
|
+
};
|
|
2596
|
+
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
2597
|
+
return mutex.execute(function () {
|
|
2598
|
+
while (waitCondition()) {
|
|
2599
|
+
if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) {
|
|
2600
|
+
return 15 /* napi_status.napi_queue_full */;
|
|
2601
|
+
}
|
|
2602
|
+
/**
|
|
2603
|
+
* Browser JS main thread can not use `Atomics.wait`
|
|
2604
|
+
*
|
|
2605
|
+
* Related:
|
|
2606
|
+
* https://github.com/nodejs/node/pull/32689
|
|
2607
|
+
* https://github.com/nodejs/node/pull/33453
|
|
2608
|
+
*/
|
|
2609
|
+
if (isBrowserMain) {
|
|
2610
|
+
return 21 /* napi_status.napi_would_deadlock */;
|
|
2611
|
+
}
|
|
2612
|
+
cond.wait();
|
|
2613
|
+
}
|
|
2614
|
+
if (emnapiTSFN.getIsClosing(func)) {
|
|
2615
|
+
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
2616
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
2617
|
+
}
|
|
2618
|
+
else {
|
|
2619
|
+
emnapiTSFN.subThreadCount(func);
|
|
2620
|
+
return 16 /* napi_status.napi_closing */;
|
|
2621
|
+
}
|
|
2622
|
+
}
|
|
2623
|
+
else {
|
|
2624
|
+
emnapiTSFN.pushQueue(func, data);
|
|
2625
|
+
emnapiTSFN.send(func);
|
|
2626
|
+
return 0 /* napi_status.napi_ok */;
|
|
2627
|
+
}
|
|
2537
2628
|
});
|
|
2538
|
-
}
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2629
|
+
},
|
|
2630
|
+
getMutex: function (func) {
|
|
2631
|
+
var index = func + emnapiTSFN.offset.mutex;
|
|
2632
|
+
var mutex = {
|
|
2633
|
+
lock: function () {
|
|
2634
|
+
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
2635
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
2636
|
+
if (isBrowserMain) {
|
|
2637
|
+
while (true) {
|
|
2638
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
|
|
2639
|
+
if (oldValue === 0) {
|
|
2640
|
+
return;
|
|
2641
|
+
}
|
|
2642
|
+
}
|
|
2643
|
+
}
|
|
2644
|
+
else {
|
|
2645
|
+
while (true) {
|
|
2646
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 0, 1);
|
|
2647
|
+
if (oldValue === 0) {
|
|
2648
|
+
return;
|
|
2649
|
+
}
|
|
2650
|
+
Atomics.wait(i32a, 0, 1);
|
|
2651
|
+
}
|
|
2652
|
+
}
|
|
2653
|
+
},
|
|
2654
|
+
/* lockAsync () {
|
|
2655
|
+
return new Promise<void>(resolve => {
|
|
2656
|
+
const again = (): void => { fn() }
|
|
2657
|
+
const fn = (): void => {
|
|
2658
|
+
const i32a = new Int32Array(wasmMemory.buffer, index, 1)
|
|
2659
|
+
const oldValue = Atomics.compareExchange(i32a, 0, 0, 1)
|
|
2660
|
+
if (oldValue === 0) {
|
|
2661
|
+
resolve()
|
|
2662
|
+
return
|
|
2663
|
+
}
|
|
2664
|
+
(Atomics as any).waitAsync(i32a, 0, 1).value.then(again)
|
|
2665
|
+
}
|
|
2666
|
+
fn()
|
|
2667
|
+
})
|
|
2668
|
+
}, */
|
|
2669
|
+
unlock: function () {
|
|
2670
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
2671
|
+
var oldValue = Atomics.compareExchange(i32a, 0, 1, 0);
|
|
2672
|
+
if (oldValue !== 1) {
|
|
2673
|
+
throw new Error('Tried to unlock while not holding the mutex');
|
|
2674
|
+
}
|
|
2675
|
+
Atomics.notify(i32a, 0, 1);
|
|
2676
|
+
},
|
|
2677
|
+
execute: function (fn) {
|
|
2678
|
+
mutex.lock();
|
|
2679
|
+
try {
|
|
2680
|
+
return fn();
|
|
2681
|
+
}
|
|
2682
|
+
finally {
|
|
2683
|
+
mutex.unlock();
|
|
2684
|
+
}
|
|
2685
|
+
} /* ,
|
|
2686
|
+
executeAsync<T> (fn: () => Promise<T>): Promise<T> {
|
|
2687
|
+
return mutex.lockAsync().then(() => {
|
|
2688
|
+
const r = fn()
|
|
2689
|
+
mutex.unlock()
|
|
2690
|
+
return r
|
|
2691
|
+
}, (err) => {
|
|
2692
|
+
mutex.unlock()
|
|
2693
|
+
throw err
|
|
2694
|
+
})
|
|
2695
|
+
} */
|
|
2696
|
+
};
|
|
2697
|
+
return mutex;
|
|
2698
|
+
},
|
|
2699
|
+
getCond: function (func) {
|
|
2700
|
+
var index = func + emnapiTSFN.offset.cond;
|
|
2701
|
+
var mutex = emnapiTSFN.getMutex(func);
|
|
2702
|
+
var cond = {
|
|
2703
|
+
wait: function () {
|
|
2704
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
2705
|
+
var value = Atomics.load(i32a, 0);
|
|
2706
|
+
mutex.unlock();
|
|
2707
|
+
Atomics.wait(i32a, 0, value);
|
|
2708
|
+
mutex.lock();
|
|
2709
|
+
},
|
|
2710
|
+
/* waitAsync () {
|
|
2711
|
+
const i32a = new Int32Array(wasmMemory.buffer, index, 1)
|
|
2712
|
+
const value = Atomics.load(i32a, 0)
|
|
2713
|
+
mutex.unlock()
|
|
2714
|
+
const lock = (): Promise<void> => mutex.lockAsync()
|
|
2715
|
+
try {
|
|
2716
|
+
return (Atomics as any).waitAsync(i32a, 0, value).value.then(lock, lock)
|
|
2717
|
+
} catch (err) {
|
|
2718
|
+
return lock()
|
|
2719
|
+
}
|
|
2720
|
+
}, */
|
|
2721
|
+
signal: function () {
|
|
2722
|
+
var i32a = new Int32Array(wasmMemory.buffer, index, 1);
|
|
2723
|
+
Atomics.add(i32a, 0, 1);
|
|
2724
|
+
Atomics.notify(i32a, 0, 1);
|
|
2725
|
+
}
|
|
2726
|
+
};
|
|
2727
|
+
return cond;
|
|
2728
|
+
},
|
|
2729
|
+
getQueueSize: function (func) {
|
|
2730
|
+
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue_size, true);
|
|
2731
|
+
},
|
|
2732
|
+
addQueueSize: function (func) {
|
|
2733
|
+
var offset = emnapiTSFN.offset.queue_size;
|
|
2734
|
+
var arr, index;
|
|
2735
|
+
#if MEMORY64
|
|
2736
|
+
arr = new BigUint64Array(wasmMemory.buffer);
|
|
2737
|
+
index = (func + offset) >> 3;
|
|
2738
|
+
#else
|
|
2739
|
+
arr = new Uint32Array(wasmMemory.buffer);
|
|
2740
|
+
index = (func + offset) >> 2;
|
|
2741
|
+
#endif
|
|
2742
|
+
Atomics.add(arr, index, {{{ to64('1') }}});
|
|
2743
|
+
},
|
|
2744
|
+
subQueueSize: function (func) {
|
|
2745
|
+
var offset = emnapiTSFN.offset.queue_size;
|
|
2746
|
+
var arr, index;
|
|
2747
|
+
#if MEMORY64
|
|
2748
|
+
arr = new BigUint64Array(wasmMemory.buffer);
|
|
2749
|
+
index = (func + offset) >> 3;
|
|
2750
|
+
#else
|
|
2751
|
+
arr = new Uint32Array(wasmMemory.buffer);
|
|
2752
|
+
index = (func + offset) >> 2;
|
|
2753
|
+
#endif
|
|
2754
|
+
Atomics.sub(arr, index, {{{ to64('1') }}});
|
|
2755
|
+
},
|
|
2756
|
+
getThreadCount: function (func) {
|
|
2757
|
+
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.thread_count, true);
|
|
2758
|
+
},
|
|
2759
|
+
addThreadCount: function (func) {
|
|
2760
|
+
var offset = emnapiTSFN.offset.thread_count;
|
|
2761
|
+
var arr, index;
|
|
2762
|
+
#if MEMORY64
|
|
2763
|
+
arr = new BigUint64Array(wasmMemory.buffer);
|
|
2764
|
+
index = (func + offset) >> 3;
|
|
2765
|
+
#else
|
|
2766
|
+
arr = new Uint32Array(wasmMemory.buffer);
|
|
2767
|
+
index = (func + offset) >> 2;
|
|
2768
|
+
#endif
|
|
2769
|
+
Atomics.add(arr, index, {{{ to64('1') }}});
|
|
2770
|
+
},
|
|
2771
|
+
subThreadCount: function (func) {
|
|
2772
|
+
var offset = emnapiTSFN.offset.thread_count;
|
|
2773
|
+
var arr, index;
|
|
2774
|
+
#if MEMORY64
|
|
2775
|
+
arr = new BigUint64Array(wasmMemory.buffer);
|
|
2776
|
+
index = (func + offset) >> 3;
|
|
2777
|
+
#else
|
|
2778
|
+
arr = new Uint32Array(wasmMemory.buffer);
|
|
2779
|
+
index = (func + offset) >> 2;
|
|
2780
|
+
#endif
|
|
2781
|
+
Atomics.sub(arr, index, {{{ to64('1') }}});
|
|
2782
|
+
},
|
|
2783
|
+
getIsClosing: function (func) {
|
|
2784
|
+
return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2);
|
|
2785
|
+
},
|
|
2786
|
+
setIsClosing: function (func, value) {
|
|
2787
|
+
Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.is_closing) >> 2, value);
|
|
2788
|
+
},
|
|
2789
|
+
getHandlesClosing: function (func) {
|
|
2790
|
+
return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2);
|
|
2791
|
+
},
|
|
2792
|
+
setHandlesClosing: function (func, value) {
|
|
2793
|
+
Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing) >> 2, value);
|
|
2794
|
+
},
|
|
2795
|
+
getDispatchState: function (func) {
|
|
2796
|
+
return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2);
|
|
2797
|
+
},
|
|
2798
|
+
getContext: function (func) {
|
|
2799
|
+
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
2800
|
+
},
|
|
2801
|
+
getMaxQueueSize: function (func) {
|
|
2802
|
+
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.max_queue_size, true);
|
|
2803
|
+
},
|
|
2804
|
+
getEnv: function (func) {
|
|
2805
|
+
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.env, false);
|
|
2806
|
+
},
|
|
2807
|
+
getCallJSCb: function (func) {
|
|
2808
|
+
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.call_js_cb, false);
|
|
2809
|
+
},
|
|
2810
|
+
getRef: function (func) {
|
|
2811
|
+
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.ref, false);
|
|
2812
|
+
},
|
|
2813
|
+
getResource: function (func) {
|
|
2814
|
+
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.resource, false);
|
|
2815
|
+
},
|
|
2816
|
+
getFinalizeCb: function (func) {
|
|
2817
|
+
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_cb, false);
|
|
2818
|
+
},
|
|
2819
|
+
getFinalizeData: function (func) {
|
|
2820
|
+
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_data, false);
|
|
2821
|
+
},
|
|
2822
|
+
loadSizeTypeValue: function (offset, unsigned) {
|
|
2823
|
+
var ret;
|
|
2824
|
+
var arr;
|
|
2825
|
+
if (unsigned) {
|
|
2826
|
+
#if MEMORY64
|
|
2827
|
+
arr = new BigUint64Array(wasmMemory.buffer);
|
|
2828
|
+
ret = Number(Atomics.load(arr, offset >> 3));
|
|
2829
|
+
#else
|
|
2830
|
+
arr = new Uint32Array(wasmMemory.buffer);
|
|
2831
|
+
ret = Atomics.load(arr, offset >> 2);
|
|
2832
|
+
#endif
|
|
2833
|
+
return ret;
|
|
2834
|
+
}
|
|
2835
|
+
else {
|
|
2836
|
+
#if MEMORY64
|
|
2837
|
+
arr = new BigInt64Array(wasmMemory.buffer);
|
|
2838
|
+
ret = Number(Atomics.load(arr, offset >> 3));
|
|
2839
|
+
#else
|
|
2840
|
+
arr = new Int32Array(wasmMemory.buffer);
|
|
2841
|
+
ret = Atomics.load(arr, offset >> 2);
|
|
2842
|
+
#endif
|
|
2843
|
+
return ret;
|
|
2844
|
+
}
|
|
2845
|
+
},
|
|
2846
|
+
storeSizeTypeValue: function (offset, value, unsigned) {
|
|
2847
|
+
var arr;
|
|
2848
|
+
if (unsigned) {
|
|
2849
|
+
#if MEMORY64
|
|
2850
|
+
arr = new BigUint64Array(wasmMemory.buffer);
|
|
2851
|
+
Atomics.store(arr, offset >> 3, BigInt(value));
|
|
2852
|
+
#else
|
|
2853
|
+
arr = new Uint32Array(wasmMemory.buffer);
|
|
2854
|
+
Atomics.store(arr, offset >> 2, value);
|
|
2855
|
+
#endif
|
|
2856
|
+
return undefined;
|
|
2857
|
+
}
|
|
2858
|
+
else {
|
|
2859
|
+
#if MEMORY64
|
|
2860
|
+
arr = new BigInt64Array(wasmMemory.buffer);
|
|
2861
|
+
Atomics.store(arr, offset >> 3, BigInt(value >>> 0));
|
|
2862
|
+
#else
|
|
2863
|
+
arr = new Int32Array(wasmMemory.buffer);
|
|
2864
|
+
Atomics.store(arr, offset >> 2, value >>> 0);
|
|
2865
|
+
#endif
|
|
2866
|
+
return undefined;
|
|
2867
|
+
}
|
|
2868
|
+
},
|
|
2869
|
+
destroy: function (func) {
|
|
2870
|
+
emnapiTSFN.destroyQueue(func);
|
|
2871
|
+
var env = emnapiTSFN.getEnv(func);
|
|
2872
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
2873
|
+
var ref = emnapiTSFN.getRef(func);
|
|
2874
|
+
if (ref) {
|
|
2875
|
+
emnapiCtx.refStore.get(ref).dispose();
|
|
2876
|
+
}
|
|
2877
|
+
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
2878
|
+
envObject.unref();
|
|
2879
|
+
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
|
|
2880
|
+
var arr = new Int32Array(wasmMemory.buffer);
|
|
2881
|
+
if (Atomics.load(arr, asyncRefOffset)) {
|
|
2882
|
+
Atomics.store(arr, asyncRefOffset, 0);
|
|
2883
|
+
__emnapi_runtime_keepalive_pop();
|
|
2884
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
2885
|
+
}
|
|
2886
|
+
var resource = emnapiTSFN.getResource(func);
|
|
2887
|
+
emnapiCtx.refStore.get(resource).dispose();
|
|
2888
|
+
if (emnapiNodeBinding) {
|
|
2889
|
+
var view = new DataView(wasmMemory.buffer);
|
|
2890
|
+
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
2891
|
+
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
2892
|
+
__emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
2893
|
+
}
|
|
2894
|
+
_free({{{ to64('func') }}});
|
|
2895
|
+
},
|
|
2896
|
+
emptyQueueAndDelete: function (func) {
|
|
2897
|
+
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
2898
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2899
|
+
var context = emnapiTSFN.getContext(func);
|
|
2900
|
+
var data;
|
|
2901
|
+
while (emnapiTSFN.getQueueSize(func) > 0) {
|
|
2902
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2903
|
+
data = emnapiTSFN.shiftQueue(func);
|
|
2904
|
+
if (callJsCb) {
|
|
2905
|
+
{{{ makeDynCall('vpppp', 'callJsCb') }}}({{{ to64('0') }}}, {{{ to64('0') }}}, {{{ to64('context') }}}, {{{ to64('data') }}});
|
|
2906
|
+
}
|
|
2907
|
+
}
|
|
2908
|
+
emnapiTSFN.destroy(func);
|
|
2909
|
+
},
|
|
2910
|
+
finalize: function (func) {
|
|
2911
|
+
var env = emnapiTSFN.getEnv(func);
|
|
2912
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
2913
|
+
emnapiCtx.openScope(envObject);
|
|
2914
|
+
var finalize = emnapiTSFN.getFinalizeCb(func);
|
|
2915
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2916
|
+
var data = emnapiTSFN.getFinalizeData(func);
|
|
2917
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2918
|
+
var context = emnapiTSFN.getContext(func);
|
|
2919
|
+
var f = function () {
|
|
2920
|
+
envObject.callFinalizer({{{ to64('finalize') }}}, {{{ to64('data') }}}, {{{ to64('context') }}});
|
|
2921
|
+
};
|
|
2922
|
+
try {
|
|
2923
|
+
if (finalize) {
|
|
2924
|
+
if (emnapiNodeBinding) {
|
|
2925
|
+
var resource = emnapiTSFN.getResource(func);
|
|
2926
|
+
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
2927
|
+
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
2928
|
+
var view = new DataView(wasmMemory.buffer);
|
|
2929
|
+
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
2930
|
+
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
2931
|
+
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
2932
|
+
asyncId: asyncId,
|
|
2933
|
+
triggerAsyncId: triggerAsyncId
|
|
2934
|
+
});
|
|
2935
|
+
}
|
|
2936
|
+
else {
|
|
2937
|
+
f();
|
|
2938
|
+
}
|
|
2939
|
+
}
|
|
2940
|
+
emnapiTSFN.emptyQueueAndDelete(func);
|
|
2941
|
+
}
|
|
2942
|
+
finally {
|
|
2542
2943
|
emnapiCtx.closeScope(envObject);
|
|
2543
2944
|
}
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
}
|
|
2548
|
-
function
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
}
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2945
|
+
},
|
|
2946
|
+
cleanup: function (func) {
|
|
2947
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 1);
|
|
2948
|
+
},
|
|
2949
|
+
closeHandlesAndMaybeDelete: function (func, set_closing) {
|
|
2950
|
+
var env = emnapiTSFN.getEnv(func);
|
|
2951
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
2952
|
+
emnapiCtx.openScope(envObject);
|
|
2953
|
+
try {
|
|
2954
|
+
if (set_closing) {
|
|
2955
|
+
emnapiTSFN.getMutex(func).execute(function () {
|
|
2956
|
+
emnapiTSFN.setIsClosing(func, 1);
|
|
2957
|
+
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
2958
|
+
emnapiTSFN.getCond(func).signal();
|
|
2959
|
+
}
|
|
2960
|
+
});
|
|
2961
|
+
}
|
|
2962
|
+
if (emnapiTSFN.getHandlesClosing(func)) {
|
|
2963
|
+
return;
|
|
2964
|
+
}
|
|
2965
|
+
emnapiTSFN.setHandlesClosing(func, 1);
|
|
2966
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
2967
|
+
emnapiTSFN.finalize(func);
|
|
2968
|
+
});
|
|
2969
|
+
}
|
|
2970
|
+
finally {
|
|
2971
|
+
emnapiCtx.closeScope(envObject);
|
|
2972
|
+
}
|
|
2973
|
+
},
|
|
2974
|
+
dispatchOne: function (func) {
|
|
2975
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2976
|
+
var data = 0;
|
|
2977
|
+
var popped_value = false;
|
|
2978
|
+
var has_more = false;
|
|
2979
|
+
var mutex = emnapiTSFN.getMutex(func);
|
|
2980
|
+
var cond = emnapiTSFN.getCond(func);
|
|
2981
|
+
mutex.execute(function () {
|
|
2982
|
+
if (emnapiTSFN.getIsClosing(func)) {
|
|
2983
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
2984
|
+
}
|
|
2985
|
+
else {
|
|
2986
|
+
var size = emnapiTSFN.getQueueSize(func);
|
|
2987
|
+
if (size > 0) {
|
|
2988
|
+
data = emnapiTSFN.shiftQueue(func);
|
|
2989
|
+
popped_value = true;
|
|
2990
|
+
var maxQueueSize = emnapiTSFN.getMaxQueueSize(func);
|
|
2991
|
+
if (size === maxQueueSize && maxQueueSize > 0) {
|
|
2992
|
+
cond.signal();
|
|
2993
|
+
}
|
|
2994
|
+
size--;
|
|
2995
|
+
}
|
|
2996
|
+
if (size === 0) {
|
|
2997
|
+
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
2998
|
+
emnapiTSFN.setIsClosing(func, 1);
|
|
2999
|
+
if (emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
3000
|
+
cond.signal();
|
|
3001
|
+
}
|
|
3002
|
+
emnapiTSFN.closeHandlesAndMaybeDelete(func, 0);
|
|
3003
|
+
}
|
|
3004
|
+
}
|
|
3005
|
+
else {
|
|
3006
|
+
has_more = true;
|
|
3007
|
+
}
|
|
3008
|
+
}
|
|
3009
|
+
});
|
|
3010
|
+
if (popped_value) {
|
|
3011
|
+
var env = emnapiTSFN.getEnv(func);
|
|
3012
|
+
var envObject_36 = emnapiCtx.envStore.get(env);
|
|
3013
|
+
emnapiCtx.openScope(envObject_36);
|
|
3014
|
+
var f = function () {
|
|
3015
|
+
envObject_36.callIntoModule(function () {
|
|
3016
|
+
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
3017
|
+
var ref = emnapiTSFN.getRef(func);
|
|
3018
|
+
var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0;
|
|
3019
|
+
if (callJsCb) {
|
|
3020
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3021
|
+
var context = emnapiTSFN.getContext(func);
|
|
3022
|
+
{{{ makeDynCall('vpppp', 'callJsCb') }}}({{{ to64('env') }}}, {{{ to64('js_callback') }}}, {{{ to64('context') }}}, {{{ to64('data') }}});
|
|
3023
|
+
}
|
|
3024
|
+
else {
|
|
3025
|
+
var jsCallback = js_callback ? emnapiCtx.handleStore.get(js_callback).value : null;
|
|
3026
|
+
if (typeof jsCallback === 'function') {
|
|
3027
|
+
jsCallback();
|
|
3028
|
+
}
|
|
3029
|
+
}
|
|
3030
|
+
});
|
|
3031
|
+
};
|
|
3032
|
+
try {
|
|
3033
|
+
if (emnapiNodeBinding) {
|
|
3034
|
+
var resource = emnapiTSFN.getResource(func);
|
|
3035
|
+
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
3036
|
+
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
3037
|
+
var view = new DataView(wasmMemory.buffer);
|
|
3038
|
+
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
3039
|
+
asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
|
|
3040
|
+
triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
|
|
3041
|
+
});
|
|
3042
|
+
}
|
|
3043
|
+
else {
|
|
3044
|
+
f();
|
|
3045
|
+
}
|
|
3046
|
+
}
|
|
3047
|
+
finally {
|
|
3048
|
+
emnapiCtx.closeScope(envObject_36);
|
|
3049
|
+
}
|
|
3050
|
+
}
|
|
3051
|
+
return has_more;
|
|
3052
|
+
},
|
|
3053
|
+
dispatch: function (func) {
|
|
3054
|
+
var has_more = true;
|
|
3055
|
+
var iterations_left = 1000;
|
|
3056
|
+
var ui32a = new Uint32Array(wasmMemory.buffer);
|
|
3057
|
+
var index = (func + emnapiTSFN.offset.dispatch_state) >> 2;
|
|
3058
|
+
while (has_more && --iterations_left !== 0) {
|
|
3059
|
+
Atomics.store(ui32a, index, 1);
|
|
3060
|
+
has_more = emnapiTSFN.dispatchOne(func);
|
|
3061
|
+
if (Atomics.exchange(ui32a, index, 0) !== 1) {
|
|
3062
|
+
has_more = true;
|
|
3063
|
+
}
|
|
3064
|
+
}
|
|
3065
|
+
if (has_more) {
|
|
3066
|
+
emnapiTSFN.send(func);
|
|
3067
|
+
}
|
|
3068
|
+
},
|
|
3069
|
+
send: function (func) {
|
|
3070
|
+
var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >> 2, 1 << 1);
|
|
3071
|
+
if ((current_state & 1) === 1) {
|
|
3072
|
+
return;
|
|
3073
|
+
}
|
|
3074
|
+
if (ENVIRONMENT_IS_PTHREAD) {
|
|
3075
|
+
postMessage({
|
|
3076
|
+
__emnapi__: {
|
|
3077
|
+
type: 'tsfn-send',
|
|
3078
|
+
payload: {
|
|
3079
|
+
tsfn: func
|
|
3080
|
+
}
|
|
3081
|
+
}
|
|
3082
|
+
});
|
|
3083
|
+
}
|
|
3084
|
+
else {
|
|
3085
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
3086
|
+
emnapiTSFN.dispatch(func);
|
|
3087
|
+
});
|
|
3088
|
+
}
|
|
3089
|
+
}
|
|
3090
|
+
};
|
|
3091
|
+
function _napi_create_threadsafe_function(env, func, async_resource, async_resource_name, max_queue_size, initial_thread_count, thread_finalize_data, thread_finalize_cb, context, call_js_cb, result) {
|
|
3092
|
+
if (env == 0)
|
|
3093
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
3094
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
3095
|
+
if (async_resource_name == 0)
|
|
3096
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); /* napi_ref */
|
|
3097
|
+
{{{ from64('max_queue_size') }}};
|
|
3098
|
+
{{{ from64('initial_thread_count') }}};
|
|
3099
|
+
{{{ from64('env') }}};
|
|
3100
|
+
{{{ from64('thread_finalize_data') }}};
|
|
3101
|
+
{{{ from64('thread_finalize_cb') }}};
|
|
3102
|
+
{{{ from64('context') }}};
|
|
3103
|
+
{{{ from64('call_js_cb') }}};
|
|
3104
|
+
max_queue_size = max_queue_size >>> 0;
|
|
3105
|
+
initial_thread_count = initial_thread_count >>> 0;
|
|
3106
|
+
if (initial_thread_count === 0) {
|
|
3107
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3108
|
+
}
|
|
3109
|
+
if (result == 0)
|
|
3110
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); /* napi_ref */
|
|
3111
|
+
var ref = 0;
|
|
3112
|
+
{{{ from64('func') }}};
|
|
3113
|
+
if (!func) {
|
|
3114
|
+
if (call_js_cb == 0)
|
|
3115
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); /* napi_ref */
|
|
3116
|
+
}
|
|
3117
|
+
else {
|
|
3118
|
+
var funcValue = emnapiCtx.handleStore.get(func).value;
|
|
3119
|
+
if (typeof funcValue !== 'function') {
|
|
3120
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3121
|
+
}
|
|
3122
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3123
|
+
ref = emnapiCtx.createReference(envObject, func, 1, 1 /* Ownership.kUserland */).id;
|
|
3124
|
+
}
|
|
3125
|
+
var asyncResourceObject;
|
|
3126
|
+
if (async_resource) {
|
|
3127
|
+
asyncResourceObject = emnapiCtx.handleStore.get(async_resource).value;
|
|
3128
|
+
if (asyncResourceObject == null) {
|
|
3129
|
+
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
3130
|
+
}
|
|
3131
|
+
asyncResourceObject = Object(asyncResourceObject);
|
|
3132
|
+
}
|
|
3133
|
+
else {
|
|
3134
|
+
asyncResourceObject = {};
|
|
3135
|
+
}
|
|
3136
|
+
var resource = envObject.ensureHandleId(asyncResourceObject);
|
|
3137
|
+
var asyncResourceName = emnapiCtx.handleStore.get(async_resource_name).value;
|
|
3138
|
+
if (typeof asyncResourceName === 'symbol') {
|
|
3139
|
+
return envObject.setLastError(3 /* napi_status.napi_string_expected */);
|
|
3140
|
+
}
|
|
3141
|
+
asyncResourceName = String(asyncResourceName);
|
|
3142
|
+
var resource_name = envObject.ensureHandleId(asyncResourceName);
|
|
3143
|
+
// tsfn create
|
|
3144
|
+
var sizeofTSFN = emnapiTSFN.offset.end;
|
|
3145
|
+
var tsfn = {{{ makeMalloc('napi_create_threadsafe_function', 'sizeofTSFN') }}};
|
|
3146
|
+
if (!tsfn)
|
|
3147
|
+
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
3148
|
+
new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
3149
|
+
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* Ownership.kUserland */);
|
|
3150
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3151
|
+
var resource_ = resourceRef.id;
|
|
3152
|
+
{{{ makeSetValue('tsfn', 0, 'resource_', '*') }}};
|
|
3153
|
+
if (!emnapiTSFN.initQueue(tsfn)) {
|
|
3154
|
+
_free({{{ to64('tsfn') }}});
|
|
3155
|
+
resourceRef.dispose();
|
|
3156
|
+
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
3157
|
+
}
|
|
3158
|
+
__emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id);
|
|
3159
|
+
{{{ makeSetValue('tsfn', 'emnapiTSFN.offset.thread_count', 'initial_thread_count', SIZE_TYPE) }}};
|
|
3160
|
+
{{{ makeSetValue('tsfn', 'emnapiTSFN.offset.context', 'context', '*') }}};
|
|
3161
|
+
{{{ makeSetValue('tsfn', 'emnapiTSFN.offset.max_queue_size', 'max_queue_size', SIZE_TYPE) }}};
|
|
3162
|
+
{{{ makeSetValue('tsfn', 'emnapiTSFN.offset.ref', 'ref', '*') }}};
|
|
3163
|
+
{{{ makeSetValue('tsfn', 'emnapiTSFN.offset.env', 'env', '*') }}};
|
|
3164
|
+
{{{ makeSetValue('tsfn', 'emnapiTSFN.offset.finalize_data', 'thread_finalize_data', '*') }}};
|
|
3165
|
+
{{{ makeSetValue('tsfn', 'emnapiTSFN.offset.finalize_cb', 'thread_finalize_cb', '*') }}};
|
|
3166
|
+
{{{ makeSetValue('tsfn', 'emnapiTSFN.offset.call_js_cb', 'call_js_cb', '*') }}};
|
|
3167
|
+
emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn);
|
|
3168
|
+
envObject.ref();
|
|
3169
|
+
__emnapi_runtime_keepalive_push();
|
|
3170
|
+
emnapiCtx.increaseWaitingRequestCounter();
|
|
3171
|
+
{{{ makeSetValue('tsfn', 'emnapiTSFN.offset.async_ref', '1', 'i32') }}};
|
|
3172
|
+
{{{ from64('result') }}};
|
|
3173
|
+
{{{ makeSetValue('result', 0, 'tsfn', '*') }}};
|
|
3174
|
+
return envObject.clearLastError();
|
|
3175
|
+
}
|
|
3176
|
+
function _napi_get_threadsafe_function_context(func, result) {
|
|
3177
|
+
if (!func || !result) {
|
|
3178
|
+
abort();
|
|
3179
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
3180
|
+
}
|
|
3181
|
+
{{{ from64('func') }}};
|
|
3182
|
+
{{{ from64('result') }}};
|
|
3183
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3184
|
+
var context = emnapiTSFN.getContext(func);
|
|
3185
|
+
{{{ makeSetValue('result', 0, 'context', '*') }}};
|
|
3186
|
+
return 0 /* napi_status.napi_ok */;
|
|
3187
|
+
}
|
|
3188
|
+
function _napi_call_threadsafe_function(func, data, mode) {
|
|
3189
|
+
if (!func) {
|
|
3190
|
+
abort();
|
|
3191
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
3192
|
+
}
|
|
3193
|
+
{{{ from64('func') }}};
|
|
3194
|
+
{{{ from64('data') }}};
|
|
3195
|
+
return emnapiTSFN.push(func, data, mode);
|
|
3196
|
+
}
|
|
3197
|
+
function _napi_acquire_threadsafe_function(func) {
|
|
3198
|
+
if (!func) {
|
|
3199
|
+
abort();
|
|
3200
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
3201
|
+
}
|
|
3202
|
+
{{{ from64('func') }}};
|
|
3203
|
+
var mutex = emnapiTSFN.getMutex(func);
|
|
3204
|
+
return mutex.execute(function () {
|
|
3205
|
+
if (emnapiTSFN.getIsClosing(func)) {
|
|
3206
|
+
return 16 /* napi_status.napi_closing */;
|
|
3207
|
+
}
|
|
3208
|
+
emnapiTSFN.addThreadCount(func);
|
|
3209
|
+
return 0 /* napi_status.napi_ok */;
|
|
3210
|
+
});
|
|
3211
|
+
}
|
|
3212
|
+
function _napi_release_threadsafe_function(func, mode) {
|
|
3213
|
+
if (!func) {
|
|
3214
|
+
abort();
|
|
3215
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
3216
|
+
}
|
|
3217
|
+
{{{ from64('func') }}};
|
|
3218
|
+
var mutex = emnapiTSFN.getMutex(func);
|
|
3219
|
+
var cond = emnapiTSFN.getCond(func);
|
|
3220
|
+
return mutex.execute(function () {
|
|
3221
|
+
if (emnapiTSFN.getThreadCount(func) === 0) {
|
|
3222
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
3223
|
+
}
|
|
3224
|
+
emnapiTSFN.subThreadCount(func);
|
|
3225
|
+
if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) {
|
|
3226
|
+
var isClosing = emnapiTSFN.getIsClosing(func);
|
|
3227
|
+
if (!isClosing) {
|
|
3228
|
+
var isClosingValue = (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) ? 1 : 0;
|
|
3229
|
+
emnapiTSFN.setIsClosing(func, isClosingValue);
|
|
3230
|
+
if (isClosingValue && emnapiTSFN.getMaxQueueSize(func) > 0) {
|
|
3231
|
+
cond.signal();
|
|
3232
|
+
}
|
|
3233
|
+
emnapiTSFN.send(func);
|
|
3234
|
+
}
|
|
3235
|
+
}
|
|
3236
|
+
return 0 /* napi_status.napi_ok */;
|
|
3237
|
+
});
|
|
3238
|
+
}
|
|
3239
|
+
function _napi_unref_threadsafe_function(env, func) {
|
|
3240
|
+
if (!func) {
|
|
3241
|
+
abort();
|
|
3242
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
3243
|
+
}
|
|
3244
|
+
{{{ from64('func') }}};
|
|
3245
|
+
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
|
|
3246
|
+
var arr = new Int32Array(wasmMemory.buffer);
|
|
3247
|
+
if (Atomics.load(arr, asyncRefOffset)) {
|
|
3248
|
+
Atomics.store(arr, asyncRefOffset, 0);
|
|
3249
|
+
__emnapi_runtime_keepalive_pop();
|
|
3250
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
3251
|
+
}
|
|
3252
|
+
return 0 /* napi_status.napi_ok */;
|
|
3253
|
+
}
|
|
3254
|
+
function _napi_ref_threadsafe_function(env, func) {
|
|
3255
|
+
if (!func) {
|
|
3256
|
+
abort();
|
|
3257
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
3258
|
+
}
|
|
3259
|
+
{{{ from64('func') }}};
|
|
3260
|
+
var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >> 2;
|
|
3261
|
+
var arr = new Int32Array(wasmMemory.buffer);
|
|
3262
|
+
if (!Atomics.load(arr, asyncRefOffset)) {
|
|
3263
|
+
Atomics.store(arr, asyncRefOffset, 1);
|
|
3264
|
+
__emnapi_runtime_keepalive_push();
|
|
3265
|
+
emnapiCtx.increaseWaitingRequestCounter();
|
|
3266
|
+
}
|
|
3267
|
+
return 0 /* napi_status.napi_ok */;
|
|
3268
|
+
}
|
|
3269
|
+
emnapiDefineVar('$emnapiTSFN', emnapiTSFN, [
|
|
3270
|
+
'$emnapiInit',
|
|
3271
|
+
'$PThread',
|
|
3272
|
+
'_emnapi_node_emit_async_init',
|
|
3273
|
+
'_emnapi_node_emit_async_destroy',
|
|
3274
|
+
'_emnapi_runtime_keepalive_pop',
|
|
3275
|
+
'_emnapi_runtime_keepalive_push'
|
|
3276
|
+
], 'emnapiTSFN.init();');
|
|
3277
|
+
emnapiImplement('napi_create_threadsafe_function', 'ippppppppppp', _napi_create_threadsafe_function, ['$emnapiTSFN']);
|
|
3278
|
+
emnapiImplement('napi_get_threadsafe_function_context', 'ipp', _napi_get_threadsafe_function_context, ['$emnapiTSFN']);
|
|
3279
|
+
emnapiImplement('napi_call_threadsafe_function', 'ippi', _napi_call_threadsafe_function, ['$emnapiTSFN']);
|
|
3280
|
+
emnapiImplement('napi_acquire_threadsafe_function', 'ip', _napi_acquire_threadsafe_function, ['$emnapiTSFN']);
|
|
3281
|
+
emnapiImplement('napi_release_threadsafe_function', 'ipi', _napi_release_threadsafe_function, ['$emnapiTSFN']);
|
|
3282
|
+
emnapiImplement('napi_unref_threadsafe_function', 'ipp', _napi_unref_threadsafe_function, ['$emnapiTSFN']);
|
|
3283
|
+
emnapiImplement('napi_ref_threadsafe_function', 'ipp', _napi_ref_threadsafe_function, ['$emnapiTSFN']);
|
|
3284
|
+
/* eslint-disable @typescript-eslint/indent */
|
|
3285
|
+
function _napi_set_last_error(env, error_code, engine_error_code, engine_reserved) {
|
|
3286
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
3287
|
+
return envObject.setLastError(error_code, engine_error_code, engine_reserved);
|
|
3288
|
+
}
|
|
3289
|
+
function _napi_clear_last_error(env) {
|
|
3290
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
3291
|
+
return envObject.clearLastError();
|
|
3292
|
+
}
|
|
3293
|
+
function __emnapi_get_node_version(major, minor, patch) {
|
|
3294
|
+
{{{ from64('major') }}};
|
|
3295
|
+
{{{ from64('minor') }}};
|
|
3296
|
+
{{{ from64('patch') }}};
|
|
3297
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3298
|
+
var versions = (typeof process === 'object' && process !== null &&
|
|
3299
|
+
typeof process.versions === 'object' && process.versions !== null &&
|
|
3300
|
+
typeof process.versions.node === 'string')
|
|
3301
|
+
? process.versions.node.split('.').map(function (n) { return Number(n); })
|
|
2583
3302
|
: [0, 0, 0];
|
|
2584
3303
|
{{{ makeSetValue('major', 0, 'versions[0]', 'u32') }}};
|
|
2585
3304
|
{{{ makeSetValue('minor', 0, 'versions[1]', 'u32') }}};
|
|
@@ -2598,6 +3317,51 @@ function __emnapi_runtime_keepalive_pop() {
|
|
|
2598
3317
|
}
|
|
2599
3318
|
emnapiImplementInternal('_emnapi_runtime_keepalive_push', 'v', __emnapi_runtime_keepalive_push, ['$runtimeKeepalivePush']);
|
|
2600
3319
|
emnapiImplementInternal('_emnapi_runtime_keepalive_pop', 'v', __emnapi_runtime_keepalive_pop, ['$runtimeKeepalivePop']);
|
|
3320
|
+
function __emnapi_set_immediate(callback, data) {
|
|
3321
|
+
emnapiCtx.feature.setImmediate(function () {
|
|
3322
|
+
{{{ makeDynCall('vp', 'callback') }}}(data);
|
|
3323
|
+
});
|
|
3324
|
+
}
|
|
3325
|
+
function __emnapi_next_tick(callback, data) {
|
|
3326
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
3327
|
+
Promise.resolve().then(function () {
|
|
3328
|
+
{{{ makeDynCall('vp', 'callback') }}}(data);
|
|
3329
|
+
});
|
|
3330
|
+
}
|
|
3331
|
+
function __emnapi_call_into_module(env, callback, data, close_scope_if_throw) {
|
|
3332
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
3333
|
+
var scope = emnapiCtx.openScope(envObject);
|
|
3334
|
+
try {
|
|
3335
|
+
envObject.callIntoModule(function () {
|
|
3336
|
+
{{{ makeDynCall('vpp', 'callback') }}}(env, data);
|
|
3337
|
+
});
|
|
3338
|
+
}
|
|
3339
|
+
catch (err) {
|
|
3340
|
+
emnapiCtx.closeScope(envObject, scope);
|
|
3341
|
+
if (close_scope_if_throw) {
|
|
3342
|
+
emnapiCtx.closeScope(envObject);
|
|
3343
|
+
}
|
|
3344
|
+
throw err;
|
|
3345
|
+
}
|
|
3346
|
+
emnapiCtx.closeScope(envObject, scope);
|
|
3347
|
+
}
|
|
3348
|
+
function __emnapi_call_finalizer(env, callback, data, hint) {
|
|
3349
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
3350
|
+
{{{ from64('callback') }}};
|
|
3351
|
+
envObject.callFinalizer(callback, data, hint);
|
|
3352
|
+
}
|
|
3353
|
+
function __emnapi_ctx_increase_waiting_request_counter() {
|
|
3354
|
+
emnapiCtx.increaseWaitingRequestCounter();
|
|
3355
|
+
}
|
|
3356
|
+
function __emnapi_ctx_decrease_waiting_request_counter() {
|
|
3357
|
+
emnapiCtx.decreaseWaitingRequestCounter();
|
|
3358
|
+
}
|
|
3359
|
+
emnapiImplementInternal('_emnapi_set_immediate', 'vpp', __emnapi_set_immediate);
|
|
3360
|
+
emnapiImplementInternal('_emnapi_next_tick', 'vpp', __emnapi_next_tick);
|
|
3361
|
+
emnapiImplementInternal('_emnapi_call_into_module', 'vpppi', __emnapi_call_into_module);
|
|
3362
|
+
emnapiImplementInternal('_emnapi_call_finalizer', 'vpppp', __emnapi_call_finalizer);
|
|
3363
|
+
emnapiImplementInternal('_emnapi_ctx_increase_waiting_request_counter', 'v', __emnapi_ctx_increase_waiting_request_counter);
|
|
3364
|
+
emnapiImplementInternal('_emnapi_ctx_decrease_waiting_request_counter', 'v', __emnapi_ctx_decrease_waiting_request_counter);
|
|
2601
3365
|
function napi_typeof(env, value, result) {
|
|
2602
3366
|
if (env == 0)
|
|
2603
3367
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
@@ -2657,24 +3421,24 @@ function napi_coerce_to_bool(env, value, result) {
|
|
|
2657
3421
|
var v;
|
|
2658
3422
|
if (env == 0)
|
|
2659
3423
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2660
|
-
var
|
|
2661
|
-
if (
|
|
2662
|
-
return
|
|
2663
|
-
|
|
3424
|
+
var envObject_37 = emnapiCtx.envStore.get(env);
|
|
3425
|
+
if (envObject_37.tryCatch.hasCaught())
|
|
3426
|
+
return envObject_37.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3427
|
+
envObject_37.clearLastError();
|
|
2664
3428
|
try {
|
|
2665
3429
|
if (value == 0)
|
|
2666
|
-
return
|
|
3430
|
+
return envObject_37.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2667
3431
|
if (result == 0)
|
|
2668
|
-
return
|
|
3432
|
+
return envObject_37.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2669
3433
|
var handle_5 = emnapiCtx.handleStore.get(value);
|
|
2670
3434
|
{{{ from64("result") }}};
|
|
2671
3435
|
v = handle_5.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */;
|
|
2672
3436
|
{{{ makeSetValue("result", 0, "v", "*") }}};
|
|
2673
|
-
return
|
|
3437
|
+
return envObject_37.getReturnStatus();
|
|
2674
3438
|
}
|
|
2675
3439
|
catch (err_37) {
|
|
2676
|
-
|
|
2677
|
-
return
|
|
3440
|
+
envObject_37.tryCatch.setError(err_37);
|
|
3441
|
+
return envObject_37.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2678
3442
|
}
|
|
2679
3443
|
}
|
|
2680
3444
|
// @ts-expect-error
|
|
@@ -2683,15 +3447,15 @@ function napi_coerce_to_number(env, value, result) {
|
|
|
2683
3447
|
var v;
|
|
2684
3448
|
if (env == 0)
|
|
2685
3449
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2686
|
-
var
|
|
2687
|
-
if (
|
|
2688
|
-
return
|
|
2689
|
-
|
|
3450
|
+
var envObject_38 = emnapiCtx.envStore.get(env);
|
|
3451
|
+
if (envObject_38.tryCatch.hasCaught())
|
|
3452
|
+
return envObject_38.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3453
|
+
envObject_38.clearLastError();
|
|
2690
3454
|
try {
|
|
2691
3455
|
if (value == 0)
|
|
2692
|
-
return
|
|
3456
|
+
return envObject_38.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2693
3457
|
if (result == 0)
|
|
2694
|
-
return
|
|
3458
|
+
return envObject_38.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2695
3459
|
var handle_6 = emnapiCtx.handleStore.get(value);
|
|
2696
3460
|
if (handle_6.isBigInt()) {
|
|
2697
3461
|
throw new TypeError("Cannot convert a BigInt value to a number");
|
|
@@ -2700,11 +3464,11 @@ function napi_coerce_to_number(env, value, result) {
|
|
|
2700
3464
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2701
3465
|
v = emnapiCtx.addToCurrentScope(Number(handle_6.value)).id;
|
|
2702
3466
|
{{{ makeSetValue("result", 0, "v", "*") }}};
|
|
2703
|
-
return
|
|
3467
|
+
return envObject_38.getReturnStatus();
|
|
2704
3468
|
}
|
|
2705
3469
|
catch (err_38) {
|
|
2706
|
-
|
|
2707
|
-
return
|
|
3470
|
+
envObject_38.tryCatch.setError(err_38);
|
|
3471
|
+
return envObject_38.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2708
3472
|
}
|
|
2709
3473
|
}
|
|
2710
3474
|
// @ts-expect-error
|
|
@@ -2713,28 +3477,28 @@ function napi_coerce_to_object(env, value, result) {
|
|
|
2713
3477
|
var v;
|
|
2714
3478
|
if (env == 0)
|
|
2715
3479
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2716
|
-
var
|
|
2717
|
-
if (
|
|
2718
|
-
return
|
|
2719
|
-
|
|
3480
|
+
var envObject_39 = emnapiCtx.envStore.get(env);
|
|
3481
|
+
if (envObject_39.tryCatch.hasCaught())
|
|
3482
|
+
return envObject_39.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3483
|
+
envObject_39.clearLastError();
|
|
2720
3484
|
try {
|
|
2721
3485
|
if (value == 0)
|
|
2722
|
-
return
|
|
3486
|
+
return envObject_39.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2723
3487
|
if (result == 0)
|
|
2724
|
-
return
|
|
3488
|
+
return envObject_39.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2725
3489
|
var handle_7 = emnapiCtx.handleStore.get(value);
|
|
2726
3490
|
if (handle_7.value == null) {
|
|
2727
3491
|
throw new TypeError("Cannot convert undefined or null to object");
|
|
2728
3492
|
}
|
|
2729
3493
|
{{{ from64("result") }}};
|
|
2730
3494
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2731
|
-
v =
|
|
3495
|
+
v = envObject_39.ensureHandleId(Object(handle_7.value));
|
|
2732
3496
|
{{{ makeSetValue("result", 0, "v", "*") }}};
|
|
2733
|
-
return
|
|
3497
|
+
return envObject_39.getReturnStatus();
|
|
2734
3498
|
}
|
|
2735
3499
|
catch (err_39) {
|
|
2736
|
-
|
|
2737
|
-
return
|
|
3500
|
+
envObject_39.tryCatch.setError(err_39);
|
|
3501
|
+
return envObject_39.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2738
3502
|
}
|
|
2739
3503
|
}
|
|
2740
3504
|
// @ts-expect-error
|
|
@@ -2743,15 +3507,15 @@ function napi_coerce_to_string(env, value, result) {
|
|
|
2743
3507
|
var v;
|
|
2744
3508
|
if (env == 0)
|
|
2745
3509
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2746
|
-
var
|
|
2747
|
-
if (
|
|
2748
|
-
return
|
|
2749
|
-
|
|
3510
|
+
var envObject_40 = emnapiCtx.envStore.get(env);
|
|
3511
|
+
if (envObject_40.tryCatch.hasCaught())
|
|
3512
|
+
return envObject_40.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3513
|
+
envObject_40.clearLastError();
|
|
2750
3514
|
try {
|
|
2751
3515
|
if (value == 0)
|
|
2752
|
-
return
|
|
3516
|
+
return envObject_40.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2753
3517
|
if (result == 0)
|
|
2754
|
-
return
|
|
3518
|
+
return envObject_40.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2755
3519
|
var handle_8 = emnapiCtx.handleStore.get(value);
|
|
2756
3520
|
if (handle_8.isSymbol()) {
|
|
2757
3521
|
throw new TypeError("Cannot convert a Symbol value to a string");
|
|
@@ -2760,11 +3524,11 @@ function napi_coerce_to_string(env, value, result) {
|
|
|
2760
3524
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2761
3525
|
v = emnapiCtx.addToCurrentScope(String(handle_8.value)).id;
|
|
2762
3526
|
{{{ makeSetValue("result", 0, "v", "*") }}};
|
|
2763
|
-
return
|
|
3527
|
+
return envObject_40.getReturnStatus();
|
|
2764
3528
|
}
|
|
2765
3529
|
catch (err_40) {
|
|
2766
|
-
|
|
2767
|
-
return
|
|
3530
|
+
envObject_40.tryCatch.setError(err_40);
|
|
3531
|
+
return envObject_40.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2768
3532
|
}
|
|
2769
3533
|
}
|
|
2770
3534
|
// @ts-expect-error
|
|
@@ -2773,32 +3537,32 @@ function napi_instanceof(env, object, constructor, result) {
|
|
|
2773
3537
|
var r;
|
|
2774
3538
|
if (env == 0)
|
|
2775
3539
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2776
|
-
var
|
|
2777
|
-
if (
|
|
2778
|
-
return
|
|
2779
|
-
|
|
3540
|
+
var envObject_41 = emnapiCtx.envStore.get(env);
|
|
3541
|
+
if (envObject_41.tryCatch.hasCaught())
|
|
3542
|
+
return envObject_41.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3543
|
+
envObject_41.clearLastError();
|
|
2780
3544
|
try {
|
|
2781
3545
|
if (object == 0)
|
|
2782
|
-
return
|
|
3546
|
+
return envObject_41.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2783
3547
|
if (result == 0)
|
|
2784
|
-
return
|
|
3548
|
+
return envObject_41.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2785
3549
|
if (constructor == 0)
|
|
2786
|
-
return
|
|
3550
|
+
return envObject_41.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2787
3551
|
{{{ from64("result") }}};
|
|
2788
3552
|
{{{ makeSetValue("result", 0, "0", "i8") }}};
|
|
2789
3553
|
var ctor_1 = emnapiCtx.handleStore.get(constructor);
|
|
2790
3554
|
if (!ctor_1.isFunction()) {
|
|
2791
|
-
return
|
|
3555
|
+
return envObject_41.setLastError(5 /* napi_status.napi_function_expected */);
|
|
2792
3556
|
}
|
|
2793
3557
|
var val_1 = emnapiCtx.handleStore.get(object).value;
|
|
2794
3558
|
var ret_7 = val_1 instanceof ctor_1.value;
|
|
2795
3559
|
r = ret_7 ? 1 : 0;
|
|
2796
3560
|
{{{ makeSetValue("result", 0, "r", "i8") }}};
|
|
2797
|
-
return
|
|
3561
|
+
return envObject_41.getReturnStatus();
|
|
2798
3562
|
}
|
|
2799
3563
|
catch (err_41) {
|
|
2800
|
-
|
|
2801
|
-
return
|
|
3564
|
+
envObject_41.tryCatch.setError(err_41);
|
|
3565
|
+
return envObject_41.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2802
3566
|
}
|
|
2803
3567
|
}
|
|
2804
3568
|
function napi_is_array(env, value, result) {
|
|
@@ -2912,27 +3676,27 @@ function napi_strict_equals(env, lhs, rhs, result) {
|
|
|
2912
3676
|
var r;
|
|
2913
3677
|
if (env == 0)
|
|
2914
3678
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2915
|
-
var
|
|
2916
|
-
if (
|
|
2917
|
-
return
|
|
2918
|
-
|
|
3679
|
+
var envObject_42 = emnapiCtx.envStore.get(env);
|
|
3680
|
+
if (envObject_42.tryCatch.hasCaught())
|
|
3681
|
+
return envObject_42.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3682
|
+
envObject_42.clearLastError();
|
|
2919
3683
|
try {
|
|
2920
3684
|
if (lhs == 0)
|
|
2921
|
-
return
|
|
3685
|
+
return envObject_42.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2922
3686
|
if (rhs == 0)
|
|
2923
|
-
return
|
|
3687
|
+
return envObject_42.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2924
3688
|
if (result == 0)
|
|
2925
|
-
return
|
|
3689
|
+
return envObject_42.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2926
3690
|
var lv_1 = emnapiCtx.handleStore.get(lhs).value;
|
|
2927
3691
|
var rv_1 = emnapiCtx.handleStore.get(rhs).value;
|
|
2928
3692
|
{{{ from64("result") }}};
|
|
2929
3693
|
r = (lv_1 === rv_1) ? 1 : 0;
|
|
2930
3694
|
{{{ makeSetValue("result", 0, "r", "i8") }}};
|
|
2931
|
-
return
|
|
3695
|
+
return envObject_42.getReturnStatus();
|
|
2932
3696
|
}
|
|
2933
3697
|
catch (err_42) {
|
|
2934
|
-
|
|
2935
|
-
return
|
|
3698
|
+
envObject_42.tryCatch.setError(err_42);
|
|
3699
|
+
return envObject_42.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2936
3700
|
}
|
|
2937
3701
|
}
|
|
2938
3702
|
function napi_detach_arraybuffer(env, arraybuffer) {
|
|
@@ -2962,15 +3726,15 @@ function napi_detach_arraybuffer(env, arraybuffer) {
|
|
|
2962
3726
|
function napi_is_detached_arraybuffer(env, arraybuffer, result) {
|
|
2963
3727
|
if (env == 0)
|
|
2964
3728
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2965
|
-
var
|
|
2966
|
-
if (
|
|
2967
|
-
return
|
|
2968
|
-
|
|
3729
|
+
var envObject_43 = emnapiCtx.envStore.get(env);
|
|
3730
|
+
if (envObject_43.tryCatch.hasCaught())
|
|
3731
|
+
return envObject_43.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3732
|
+
envObject_43.clearLastError();
|
|
2969
3733
|
try {
|
|
2970
3734
|
if (arraybuffer == 0)
|
|
2971
|
-
return
|
|
3735
|
+
return envObject_43.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2972
3736
|
if (result == 0)
|
|
2973
|
-
return
|
|
3737
|
+
return envObject_43.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
2974
3738
|
var h_17 = emnapiCtx.handleStore.get(arraybuffer);
|
|
2975
3739
|
{{{ from64("result") }}};
|
|
2976
3740
|
if (h_17.isArrayBuffer() && h_17.value.byteLength === 0) {
|
|
@@ -2980,15 +3744,15 @@ function napi_is_detached_arraybuffer(env, arraybuffer, result) {
|
|
|
2980
3744
|
}
|
|
2981
3745
|
catch (_11) {
|
|
2982
3746
|
{{{ makeSetValue("result", 0, "1", "i8") }}};
|
|
2983
|
-
return
|
|
3747
|
+
return envObject_43.getReturnStatus();
|
|
2984
3748
|
}
|
|
2985
3749
|
}
|
|
2986
3750
|
{{{ makeSetValue("result", 0, "0", "i8") }}};
|
|
2987
|
-
return
|
|
3751
|
+
return envObject_43.getReturnStatus();
|
|
2988
3752
|
}
|
|
2989
3753
|
catch (err_43) {
|
|
2990
|
-
|
|
2991
|
-
return
|
|
3754
|
+
envObject_43.tryCatch.setError(err_43);
|
|
3755
|
+
return envObject_43.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2992
3756
|
}
|
|
2993
3757
|
}
|
|
2994
3758
|
emnapiImplement('napi_typeof', 'ippp', napi_typeof);
|
|
@@ -3014,29 +3778,29 @@ function napi_define_class(env, utf8name, length, constructor, callback_data, pr
|
|
|
3014
3778
|
var propPtr, valueHandleId, attributes;
|
|
3015
3779
|
if (env == 0)
|
|
3016
3780
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3017
|
-
var
|
|
3018
|
-
if (
|
|
3019
|
-
return
|
|
3020
|
-
|
|
3781
|
+
var envObject_44 = emnapiCtx.envStore.get(env);
|
|
3782
|
+
if (envObject_44.tryCatch.hasCaught())
|
|
3783
|
+
return envObject_44.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3784
|
+
envObject_44.clearLastError();
|
|
3021
3785
|
try {
|
|
3022
3786
|
if (result == 0)
|
|
3023
|
-
return
|
|
3787
|
+
return envObject_44.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3024
3788
|
if (constructor == 0)
|
|
3025
|
-
return
|
|
3789
|
+
return envObject_44.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3026
3790
|
{{{ from64("length") }}};
|
|
3027
3791
|
{{{ from64("properties") }}};
|
|
3028
3792
|
{{{ from64("property_count") }}};
|
|
3029
3793
|
property_count = property_count >>> 0;
|
|
3030
3794
|
if (property_count > 0) {
|
|
3031
3795
|
if (!properties)
|
|
3032
|
-
return
|
|
3796
|
+
return envObject_44.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3033
3797
|
}
|
|
3034
3798
|
if ((length < -1) || (length > 2147483647) || (!utf8name)) {
|
|
3035
|
-
return
|
|
3799
|
+
return envObject_44.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3036
3800
|
}
|
|
3037
|
-
var fresult_2 = emnapiCreateFunction(
|
|
3801
|
+
var fresult_2 = emnapiCreateFunction(envObject_44, utf8name, length, constructor, callback_data);
|
|
3038
3802
|
if (fresult_2.status !== 0 /* napi_status.napi_ok */)
|
|
3039
|
-
return
|
|
3803
|
+
return envObject_44.setLastError(fresult_2.status);
|
|
3040
3804
|
var F_1 = fresult_2.f;
|
|
3041
3805
|
var propertyName_2 = void 0;
|
|
3042
3806
|
for (var i_3 = 0; i_3 < property_count; i_3++) {
|
|
@@ -3056,29 +3820,29 @@ function napi_define_class(env, utf8name, length, constructor, callback_data, pr
|
|
|
3056
3820
|
}
|
|
3057
3821
|
else {
|
|
3058
3822
|
if (!name_3) {
|
|
3059
|
-
return
|
|
3823
|
+
return envObject_44.setLastError(4 /* napi_status.napi_name_expected */);
|
|
3060
3824
|
}
|
|
3061
3825
|
propertyName_2 = emnapiCtx.handleStore.get(name_3).value;
|
|
3062
3826
|
if (typeof propertyName_2 !== "string" && typeof propertyName_2 !== "symbol") {
|
|
3063
|
-
return
|
|
3827
|
+
return envObject_44.setLastError(4 /* napi_status.napi_name_expected */);
|
|
3064
3828
|
}
|
|
3065
3829
|
}
|
|
3066
3830
|
if ((attributes & 1024 /* napi_property_attributes.napi_static */) !== 0) {
|
|
3067
|
-
emnapiDefineProperty(
|
|
3831
|
+
emnapiDefineProperty(envObject_44, F_1, propertyName_2, method_2, getter_2, setter_2, value_3, attributes, data_3);
|
|
3068
3832
|
continue;
|
|
3069
3833
|
}
|
|
3070
|
-
emnapiDefineProperty(
|
|
3834
|
+
emnapiDefineProperty(envObject_44, F_1.prototype, propertyName_2, method_2, getter_2, setter_2, value_3, attributes, data_3);
|
|
3071
3835
|
}
|
|
3072
3836
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3073
3837
|
var valueHandle_2 = emnapiCtx.addToCurrentScope(F_1);
|
|
3074
3838
|
valueHandleId = valueHandle_2.id;
|
|
3075
3839
|
{{{ from64("result") }}};
|
|
3076
3840
|
{{{ makeSetValue("result", 0, "valueHandleId", "*") }}};
|
|
3077
|
-
return
|
|
3841
|
+
return envObject_44.getReturnStatus();
|
|
3078
3842
|
}
|
|
3079
3843
|
catch (err_44) {
|
|
3080
|
-
|
|
3081
|
-
return
|
|
3844
|
+
envObject_44.tryCatch.setError(err_44);
|
|
3845
|
+
return envObject_44.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3082
3846
|
}
|
|
3083
3847
|
}
|
|
3084
3848
|
function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, result) {
|
|
@@ -3086,33 +3850,33 @@ function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, re
|
|
|
3086
3850
|
if (finalize_cb) {
|
|
3087
3851
|
if (env == 0)
|
|
3088
3852
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3089
|
-
var
|
|
3090
|
-
if (
|
|
3091
|
-
return
|
|
3092
|
-
|
|
3853
|
+
var envObject_45 = emnapiCtx.envStore.get(env);
|
|
3854
|
+
if (envObject_45.tryCatch.hasCaught())
|
|
3855
|
+
return envObject_45.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3856
|
+
envObject_45.clearLastError();
|
|
3093
3857
|
try {
|
|
3094
3858
|
throw emnapiCtx.createNotSupportWeakRefError("napi_wrap", "Parameter \"finalize_cb\" must be 0(NULL)");
|
|
3095
3859
|
return null;
|
|
3096
3860
|
}
|
|
3097
3861
|
catch (err_45) {
|
|
3098
|
-
|
|
3099
|
-
return
|
|
3862
|
+
envObject_45.tryCatch.setError(err_45);
|
|
3863
|
+
return envObject_45.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3100
3864
|
}
|
|
3101
3865
|
}
|
|
3102
3866
|
if (result) {
|
|
3103
3867
|
if (env == 0)
|
|
3104
3868
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3105
|
-
var
|
|
3106
|
-
if (
|
|
3107
|
-
return
|
|
3108
|
-
|
|
3869
|
+
var envObject_46 = emnapiCtx.envStore.get(env);
|
|
3870
|
+
if (envObject_46.tryCatch.hasCaught())
|
|
3871
|
+
return envObject_46.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3872
|
+
envObject_46.clearLastError();
|
|
3109
3873
|
try {
|
|
3110
3874
|
throw emnapiCtx.createNotSupportWeakRefError("napi_wrap", "Parameter \"result\" must be 0(NULL)");
|
|
3111
3875
|
return null;
|
|
3112
3876
|
}
|
|
3113
3877
|
catch (err_46) {
|
|
3114
|
-
|
|
3115
|
-
return
|
|
3878
|
+
envObject_46.tryCatch.setError(err_46);
|
|
3879
|
+
return envObject_46.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3116
3880
|
}
|
|
3117
3881
|
}
|
|
3118
3882
|
}
|
|
@@ -3128,25 +3892,25 @@ function napi_remove_wrap(env, js_object, result) {
|
|
|
3128
3892
|
function napi_type_tag_object(env, object, type_tag) {
|
|
3129
3893
|
if (env == 0)
|
|
3130
3894
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3131
|
-
var
|
|
3132
|
-
if (
|
|
3133
|
-
return
|
|
3134
|
-
|
|
3895
|
+
var envObject_47 = emnapiCtx.envStore.get(env);
|
|
3896
|
+
if (envObject_47.tryCatch.hasCaught())
|
|
3897
|
+
return envObject_47.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3898
|
+
envObject_47.clearLastError();
|
|
3135
3899
|
try {
|
|
3136
3900
|
if (!object) {
|
|
3137
|
-
return
|
|
3901
|
+
return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
|
|
3138
3902
|
}
|
|
3139
3903
|
var value_4 = emnapiCtx.handleStore.get(object);
|
|
3140
3904
|
if (!(value_4.isObject() || value_4.isFunction())) {
|
|
3141
|
-
return
|
|
3905
|
+
return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
|
|
3142
3906
|
}
|
|
3143
3907
|
{{{ from64("type_tag") }}};
|
|
3144
3908
|
if (!type_tag) {
|
|
3145
|
-
return
|
|
3909
|
+
return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
|
|
3146
3910
|
}
|
|
3147
|
-
var binding_2 =
|
|
3911
|
+
var binding_2 = envObject_47.getObjectBinding(value_4.value);
|
|
3148
3912
|
if (binding_2.tag !== null) {
|
|
3149
|
-
return
|
|
3913
|
+
return envObject_47.setLastError(envObject_47.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
|
|
3150
3914
|
}
|
|
3151
3915
|
binding_2.tag = [
|
|
3152
3916
|
{{{ makeGetValue("type_tag", "0", "u32") }}},
|
|
@@ -3154,11 +3918,11 @@ function napi_type_tag_object(env, object, type_tag) {
|
|
|
3154
3918
|
{{{ makeGetValue("type_tag", "8", "u32") }}},
|
|
3155
3919
|
{{{ makeGetValue("type_tag", "12", "u32") }}}
|
|
3156
3920
|
];
|
|
3157
|
-
return
|
|
3921
|
+
return envObject_47.getReturnStatus();
|
|
3158
3922
|
}
|
|
3159
3923
|
catch (err_47) {
|
|
3160
|
-
|
|
3161
|
-
return
|
|
3924
|
+
envObject_47.tryCatch.setError(err_47);
|
|
3925
|
+
return envObject_47.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3162
3926
|
}
|
|
3163
3927
|
}
|
|
3164
3928
|
// @ts-expect-error
|
|
@@ -3167,25 +3931,25 @@ function napi_check_object_type_tag(env, object, type_tag, result) {
|
|
|
3167
3931
|
var ret = true, i;
|
|
3168
3932
|
if (env == 0)
|
|
3169
3933
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3170
|
-
var
|
|
3171
|
-
if (
|
|
3172
|
-
return
|
|
3173
|
-
|
|
3934
|
+
var envObject_48 = emnapiCtx.envStore.get(env);
|
|
3935
|
+
if (envObject_48.tryCatch.hasCaught())
|
|
3936
|
+
return envObject_48.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3937
|
+
envObject_48.clearLastError();
|
|
3174
3938
|
try {
|
|
3175
3939
|
if (!object) {
|
|
3176
|
-
return
|
|
3940
|
+
return envObject_48.setLastError(envObject_48.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
|
|
3177
3941
|
}
|
|
3178
3942
|
var value_5 = emnapiCtx.handleStore.get(object);
|
|
3179
3943
|
if (!(value_5.isObject() || value_5.isFunction())) {
|
|
3180
|
-
return
|
|
3944
|
+
return envObject_48.setLastError(envObject_48.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */);
|
|
3181
3945
|
}
|
|
3182
3946
|
if (!type_tag) {
|
|
3183
|
-
return
|
|
3947
|
+
return envObject_48.setLastError(envObject_48.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
|
|
3184
3948
|
}
|
|
3185
3949
|
if (!result) {
|
|
3186
|
-
return
|
|
3950
|
+
return envObject_48.setLastError(envObject_48.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */);
|
|
3187
3951
|
}
|
|
3188
|
-
var binding_3 =
|
|
3952
|
+
var binding_3 = envObject_48.getObjectBinding(value_5.value);
|
|
3189
3953
|
if (binding_3.tag !== null) {
|
|
3190
3954
|
{{{ from64("type_tag") }}};
|
|
3191
3955
|
for (i = 0; i < 4; i++) {
|
|
@@ -3201,11 +3965,11 @@ function napi_check_object_type_tag(env, object, type_tag, result) {
|
|
|
3201
3965
|
}
|
|
3202
3966
|
{{{ from64("result") }}};
|
|
3203
3967
|
{{{ makeSetValue("result", 0, "ret ? 1 : 0", "i8") }}};
|
|
3204
|
-
return
|
|
3968
|
+
return envObject_48.getReturnStatus();
|
|
3205
3969
|
}
|
|
3206
3970
|
catch (err_48) {
|
|
3207
|
-
|
|
3208
|
-
return
|
|
3971
|
+
envObject_48.tryCatch.setError(err_48);
|
|
3972
|
+
return envObject_48.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3209
3973
|
}
|
|
3210
3974
|
}
|
|
3211
3975
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -3445,28 +4209,28 @@ function napi_get_date_value(env, value, result) {
|
|
|
3445
4209
|
var v;
|
|
3446
4210
|
if (env == 0)
|
|
3447
4211
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3448
|
-
var
|
|
3449
|
-
if (
|
|
3450
|
-
return
|
|
3451
|
-
|
|
4212
|
+
var envObject_49 = emnapiCtx.envStore.get(env);
|
|
4213
|
+
if (envObject_49.tryCatch.hasCaught())
|
|
4214
|
+
return envObject_49.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4215
|
+
envObject_49.clearLastError();
|
|
3452
4216
|
try {
|
|
3453
4217
|
if (value == 0)
|
|
3454
|
-
return
|
|
4218
|
+
return envObject_49.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3455
4219
|
if (result == 0)
|
|
3456
|
-
return
|
|
4220
|
+
return envObject_49.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3457
4221
|
var handle_9 = emnapiCtx.handleStore.get(value);
|
|
3458
4222
|
if (!handle_9.isDate()) {
|
|
3459
|
-
return
|
|
4223
|
+
return envObject_49.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3460
4224
|
}
|
|
3461
4225
|
{{{ from64("result") }}};
|
|
3462
4226
|
v = (handle_9.value).valueOf();
|
|
3463
4227
|
{{{ makeSetValue("result", 0, "v", "double") }}};
|
|
3464
|
-
return
|
|
4228
|
+
return envObject_49.getReturnStatus();
|
|
3465
4229
|
}
|
|
3466
4230
|
catch (err_49) {
|
|
3467
|
-
|
|
4231
|
+
envObject_49.tryCatch
|
|
3468
4232
|
.setError(err_49);
|
|
3469
|
-
return
|
|
4233
|
+
return envObject_49.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3470
4234
|
}
|
|
3471
4235
|
}
|
|
3472
4236
|
function napi_get_value_bool(env, value, result) {
|
|
@@ -4047,21 +4811,21 @@ function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
|
|
|
4047
4811
|
var v, i;
|
|
4048
4812
|
if (env == 0)
|
|
4049
4813
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4050
|
-
var
|
|
4051
|
-
if (
|
|
4052
|
-
return
|
|
4053
|
-
|
|
4814
|
+
var envObject_50 = emnapiCtx.envStore.get(env);
|
|
4815
|
+
if (envObject_50.tryCatch.hasCaught())
|
|
4816
|
+
return envObject_50.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4817
|
+
envObject_50.clearLastError();
|
|
4054
4818
|
try {
|
|
4055
4819
|
if (!emnapiCtx.feature.supportBigInt) {
|
|
4056
4820
|
throw emnapiCtx.createNotSupportBigIntError("napi_create_bigint_words", "This API is unavailable");
|
|
4057
4821
|
}
|
|
4058
4822
|
if (result == 0)
|
|
4059
|
-
return
|
|
4823
|
+
return envObject_50.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4060
4824
|
{{{ from64("words") }}};
|
|
4061
4825
|
{{{ from64("word_count") }}};
|
|
4062
4826
|
word_count = word_count >>> 0;
|
|
4063
4827
|
if (word_count > 2147483647) {
|
|
4064
|
-
return
|
|
4828
|
+
return envObject_50.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4065
4829
|
}
|
|
4066
4830
|
if (word_count > (16384)) {
|
|
4067
4831
|
throw new RangeError("Maximum BigInt size exceeded");
|
|
@@ -4077,11 +4841,11 @@ function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
|
|
|
4077
4841
|
{{{ from64("result") }}};
|
|
4078
4842
|
v = emnapiCtx.addToCurrentScope(value_6).id;
|
|
4079
4843
|
{{{ makeSetValue("result", 0, "v", "*") }}};
|
|
4080
|
-
return
|
|
4844
|
+
return envObject_50.clearLastError();
|
|
4081
4845
|
}
|
|
4082
4846
|
catch (err_50) {
|
|
4083
|
-
|
|
4084
|
-
return
|
|
4847
|
+
envObject_50.tryCatch.setError(err_50);
|
|
4848
|
+
return envObject_50.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4085
4849
|
}
|
|
4086
4850
|
}
|
|
4087
4851
|
emnapiImplement('napi_create_int32', 'ipip', napi_create_int32);
|
|
@@ -4138,25 +4902,25 @@ function napi_create_arraybuffer(env, byte_length, data, result) {
|
|
|
4138
4902
|
var value;
|
|
4139
4903
|
if (env == 0)
|
|
4140
4904
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4141
|
-
var
|
|
4905
|
+
var envObject_51 = emnapiCtx.envStore
|
|
4142
4906
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4143
4907
|
.
|
|
4144
4908
|
get(env);
|
|
4145
|
-
if (
|
|
4146
|
-
return
|
|
4147
|
-
|
|
4909
|
+
if (envObject_51.tryCatch.hasCaught())
|
|
4910
|
+
return envObject_51.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4911
|
+
envObject_51.clearLastError();
|
|
4148
4912
|
try {
|
|
4149
4913
|
if (result == 0)
|
|
4150
|
-
return
|
|
4914
|
+
return envObject_51.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4151
4915
|
{{{ from64("result") }}};
|
|
4152
4916
|
var arrayBuffer_1 = emnapiCreateArrayBuffer(byte_length, data);
|
|
4153
4917
|
value = emnapiCtx.addToCurrentScope(arrayBuffer_1).id;
|
|
4154
4918
|
{{{ makeSetValue("result", 0, "value", "*") }}};
|
|
4155
|
-
return
|
|
4919
|
+
return envObject_51.getReturnStatus();
|
|
4156
4920
|
}
|
|
4157
4921
|
catch (err_51) {
|
|
4158
|
-
|
|
4159
|
-
return
|
|
4922
|
+
envObject_51.tryCatch.setError(err_51);
|
|
4923
|
+
return envObject_51.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4160
4924
|
}
|
|
4161
4925
|
}
|
|
4162
4926
|
// @ts-expect-error
|
|
@@ -4165,25 +4929,25 @@ function napi_create_date(env, time, result) {
|
|
|
4165
4929
|
var value;
|
|
4166
4930
|
if (env == 0)
|
|
4167
4931
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4168
|
-
var
|
|
4932
|
+
var envObject_52 = emnapiCtx.envStore
|
|
4169
4933
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4170
4934
|
.
|
|
4171
4935
|
get(env);
|
|
4172
|
-
if (
|
|
4173
|
-
return
|
|
4174
|
-
|
|
4936
|
+
if (envObject_52.tryCatch.hasCaught())
|
|
4937
|
+
return envObject_52.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4938
|
+
envObject_52.clearLastError();
|
|
4175
4939
|
try {
|
|
4176
4940
|
if (result == 0)
|
|
4177
|
-
return
|
|
4941
|
+
return envObject_52.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4178
4942
|
{{{ from64("result") }}};
|
|
4179
4943
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4180
4944
|
value = emnapiCtx.addToCurrentScope(new Date(time)).id;
|
|
4181
4945
|
{{{ makeSetValue("result", 0, "value", "*") }}};
|
|
4182
|
-
return
|
|
4946
|
+
return envObject_52.getReturnStatus();
|
|
4183
4947
|
}
|
|
4184
4948
|
catch (err_52) {
|
|
4185
|
-
|
|
4186
|
-
return
|
|
4949
|
+
envObject_52.tryCatch.setError(err_52);
|
|
4950
|
+
return envObject_52.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4187
4951
|
}
|
|
4188
4952
|
}
|
|
4189
4953
|
// @ts-expect-error
|
|
@@ -4192,31 +4956,31 @@ function napi_create_external(env, data, finalize_cb, finalize_hint, result) {
|
|
|
4192
4956
|
var value;
|
|
4193
4957
|
if (env == 0)
|
|
4194
4958
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4195
|
-
var
|
|
4959
|
+
var envObject_53 = emnapiCtx.envStore
|
|
4196
4960
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4197
4961
|
.
|
|
4198
4962
|
get(env);
|
|
4199
|
-
if (
|
|
4200
|
-
return
|
|
4201
|
-
|
|
4963
|
+
if (envObject_53.tryCatch.hasCaught())
|
|
4964
|
+
return envObject_53.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4965
|
+
envObject_53.clearLastError();
|
|
4202
4966
|
try {
|
|
4203
4967
|
if (result == 0)
|
|
4204
|
-
return
|
|
4968
|
+
return envObject_53.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4205
4969
|
if (!emnapiCtx.feature.supportFinalizer && finalize_cb) {
|
|
4206
4970
|
throw emnapiCtx.createNotSupportWeakRefError("napi_create_external", "Parameter \"finalize_cb\" must be 0(NULL)");
|
|
4207
4971
|
}
|
|
4208
|
-
var externalHandle_1 = emnapiCtx.getCurrentScope().addExternal(
|
|
4972
|
+
var externalHandle_1 = emnapiCtx.getCurrentScope().addExternal(envObject_53, data);
|
|
4209
4973
|
if (finalize_cb) {
|
|
4210
|
-
emnapiCtx.createReference(
|
|
4974
|
+
emnapiCtx.createReference(envObject_53, externalHandle_1.id, 0, 0 /* Ownership.kRuntime */, finalize_cb, data, finalize_hint);
|
|
4211
4975
|
}
|
|
4212
4976
|
{{{ from64("result") }}};
|
|
4213
4977
|
value = externalHandle_1.id;
|
|
4214
4978
|
{{{ makeSetValue("result", 0, "value", "*") }}};
|
|
4215
|
-
return
|
|
4979
|
+
return envObject_53.clearLastError();
|
|
4216
4980
|
}
|
|
4217
4981
|
catch (err_53) {
|
|
4218
|
-
|
|
4219
|
-
return
|
|
4982
|
+
envObject_53.tryCatch.setError(err_53);
|
|
4983
|
+
return envObject_53.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4220
4984
|
}
|
|
4221
4985
|
}
|
|
4222
4986
|
function napi_create_external_arraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result
|
|
@@ -4226,16 +4990,16 @@ function napi_create_external_arraybuffer(env, external_data, byte_length, final
|
|
|
4226
4990
|
var value;
|
|
4227
4991
|
if (env == 0)
|
|
4228
4992
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4229
|
-
var
|
|
4993
|
+
var envObject_54 = emnapiCtx.envStore
|
|
4230
4994
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4231
4995
|
.
|
|
4232
4996
|
get(env);
|
|
4233
|
-
if (
|
|
4234
|
-
return
|
|
4235
|
-
|
|
4997
|
+
if (envObject_54.tryCatch.hasCaught())
|
|
4998
|
+
return envObject_54.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4999
|
+
envObject_54.clearLastError();
|
|
4236
5000
|
try {
|
|
4237
5001
|
if (result == 0)
|
|
4238
|
-
return
|
|
5002
|
+
return envObject_54.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4239
5003
|
{{{ from64("byte_length") }}};
|
|
4240
5004
|
{{{ from64("external_data") }}};
|
|
4241
5005
|
{{{ from64("result") }}};
|
|
@@ -4267,21 +5031,21 @@ function napi_create_external_arraybuffer(env, external_data, byte_length, final
|
|
|
4267
5031
|
if (finalize_cb) {
|
|
4268
5032
|
var status_2 = _napi_add_finalizer(env, handle_10.id, external_data, finalize_cb, finalize_hint, 0);
|
|
4269
5033
|
if (status_2 === 10 /* napi_status.napi_pending_exception */) {
|
|
4270
|
-
var err_54 =
|
|
4271
|
-
|
|
5034
|
+
var err_54 = envObject_54.tryCatch.extractException();
|
|
5035
|
+
envObject_54.clearLastError();
|
|
4272
5036
|
throw err_54;
|
|
4273
5037
|
}
|
|
4274
5038
|
else if (status_2 !== 0 /* napi_status.napi_ok */) {
|
|
4275
|
-
return
|
|
5039
|
+
return envObject_54.setLastError(status_2);
|
|
4276
5040
|
}
|
|
4277
5041
|
}
|
|
4278
5042
|
value = handle_10.id;
|
|
4279
5043
|
{{{ makeSetValue("result", 0, "value", "*") }}};
|
|
4280
|
-
return
|
|
5044
|
+
return envObject_54.getReturnStatus();
|
|
4281
5045
|
}
|
|
4282
5046
|
catch (err_55) {
|
|
4283
|
-
|
|
4284
|
-
return
|
|
5047
|
+
envObject_54.tryCatch.setError(err_55);
|
|
5048
|
+
return envObject_54.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4285
5049
|
}
|
|
4286
5050
|
}
|
|
4287
5051
|
function napi_create_object(env, result) {
|
|
@@ -4327,26 +5091,26 @@ function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, res
|
|
|
4327
5091
|
var value;
|
|
4328
5092
|
if (env == 0)
|
|
4329
5093
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4330
|
-
var
|
|
5094
|
+
var envObject_55 = emnapiCtx.envStore
|
|
4331
5095
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4332
5096
|
.
|
|
4333
5097
|
get(env);
|
|
4334
|
-
if (
|
|
4335
|
-
return
|
|
4336
|
-
|
|
5098
|
+
if (envObject_55.tryCatch.hasCaught())
|
|
5099
|
+
return envObject_55.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5100
|
+
envObject_55.clearLastError();
|
|
4337
5101
|
try {
|
|
4338
5102
|
if (arraybuffer == 0)
|
|
4339
|
-
return
|
|
5103
|
+
return envObject_55.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4340
5104
|
if (result == 0)
|
|
4341
|
-
return
|
|
5105
|
+
return envObject_55.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4342
5106
|
var handle_11 = emnapiCtx.handleStore.get(arraybuffer);
|
|
4343
5107
|
var buffer_1 = handle_11.value;
|
|
4344
5108
|
if (!(buffer_1 instanceof ArrayBuffer)) {
|
|
4345
|
-
return
|
|
5109
|
+
return envObject_55.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4346
5110
|
}
|
|
4347
5111
|
{{{ from64("byte_offset") }}};
|
|
4348
5112
|
{{{ from64("length") }}};
|
|
4349
|
-
var createTypedArray_1 = function (
|
|
5113
|
+
var createTypedArray_1 = function (envObject_55, Type, size_of_element, buffer_1, byte_offset, length) {
|
|
4350
5114
|
var _a;
|
|
4351
5115
|
byte_offset = byte_offset >>> 0;
|
|
4352
5116
|
length = length >>> 0;
|
|
@@ -4354,15 +5118,15 @@ function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, res
|
|
|
4354
5118
|
if ((byte_offset) % (size_of_element) !== 0) {
|
|
4355
5119
|
var err_57 = new RangeError("start offset of ".concat((_a = Type.name) !== null && _a !== void 0 ? _a : "", " should be a multiple of ").concat(size_of_element));
|
|
4356
5120
|
err_57.code = "ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT";
|
|
4357
|
-
|
|
4358
|
-
return
|
|
5121
|
+
envObject_55.tryCatch.setError(err_57);
|
|
5122
|
+
return envObject_55.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
4359
5123
|
}
|
|
4360
5124
|
}
|
|
4361
5125
|
if (((length * size_of_element) + byte_offset) > buffer_1.byteLength) {
|
|
4362
5126
|
var err_58 = new RangeError("Invalid typed array length");
|
|
4363
5127
|
err_58.code = "ERR_NAPI_INVALID_TYPEDARRAY_LENGTH";
|
|
4364
|
-
|
|
4365
|
-
return
|
|
5128
|
+
envObject_55.tryCatch.setError(err_58);
|
|
5129
|
+
return envObject_55.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
4366
5130
|
}
|
|
4367
5131
|
var out_1 = new Type(buffer_1, byte_offset, length);
|
|
4368
5132
|
if (buffer_1 === wasmMemory.buffer) {
|
|
@@ -4380,39 +5144,39 @@ function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, res
|
|
|
4380
5144
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4381
5145
|
value = emnapiCtx.addToCurrentScope(out_1).id;
|
|
4382
5146
|
{{{ makeSetValue("result", 0, "value", "*") }}};
|
|
4383
|
-
return
|
|
5147
|
+
return envObject_55.getReturnStatus();
|
|
4384
5148
|
};
|
|
4385
5149
|
switch (type) {
|
|
4386
5150
|
case 0 /* napi_typedarray_type.napi_int8_array */:
|
|
4387
|
-
return createTypedArray_1(
|
|
5151
|
+
return createTypedArray_1(envObject_55, Int8Array, 1, buffer_1, byte_offset, length);
|
|
4388
5152
|
case 1 /* napi_typedarray_type.napi_uint8_array */:
|
|
4389
|
-
return createTypedArray_1(
|
|
5153
|
+
return createTypedArray_1(envObject_55, Uint8Array, 1, buffer_1, byte_offset, length);
|
|
4390
5154
|
case 2 /* napi_typedarray_type.napi_uint8_clamped_array */:
|
|
4391
|
-
return createTypedArray_1(
|
|
5155
|
+
return createTypedArray_1(envObject_55, Uint8ClampedArray, 1, buffer_1, byte_offset, length);
|
|
4392
5156
|
case 3 /* napi_typedarray_type.napi_int16_array */:
|
|
4393
|
-
return createTypedArray_1(
|
|
5157
|
+
return createTypedArray_1(envObject_55, Int16Array, 2, buffer_1, byte_offset, length);
|
|
4394
5158
|
case 4 /* napi_typedarray_type.napi_uint16_array */:
|
|
4395
|
-
return createTypedArray_1(
|
|
5159
|
+
return createTypedArray_1(envObject_55, Uint16Array, 2, buffer_1, byte_offset, length);
|
|
4396
5160
|
case 5 /* napi_typedarray_type.napi_int32_array */:
|
|
4397
|
-
return createTypedArray_1(
|
|
5161
|
+
return createTypedArray_1(envObject_55, Int32Array, 4, buffer_1, byte_offset, length);
|
|
4398
5162
|
case 6 /* napi_typedarray_type.napi_uint32_array */:
|
|
4399
|
-
return createTypedArray_1(
|
|
5163
|
+
return createTypedArray_1(envObject_55, Uint32Array, 4, buffer_1, byte_offset, length);
|
|
4400
5164
|
case 7 /* napi_typedarray_type.napi_float32_array */:
|
|
4401
|
-
return createTypedArray_1(
|
|
5165
|
+
return createTypedArray_1(envObject_55, Float32Array, 4, buffer_1, byte_offset, length);
|
|
4402
5166
|
case 8 /* napi_typedarray_type.napi_float64_array */:
|
|
4403
|
-
return createTypedArray_1(
|
|
5167
|
+
return createTypedArray_1(envObject_55, Float64Array, 8, buffer_1, byte_offset, length);
|
|
4404
5168
|
case 9 /* napi_typedarray_type.napi_bigint64_array */:
|
|
4405
|
-
return createTypedArray_1(
|
|
5169
|
+
return createTypedArray_1(envObject_55, BigInt64Array, 8, buffer_1, byte_offset, length);
|
|
4406
5170
|
case 10 /* napi_typedarray_type.napi_biguint64_array */:
|
|
4407
|
-
return createTypedArray_1(
|
|
5171
|
+
return createTypedArray_1(envObject_55, BigUint64Array, 8, buffer_1, byte_offset, length);
|
|
4408
5172
|
default:
|
|
4409
|
-
return
|
|
5173
|
+
return envObject_55.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4410
5174
|
}
|
|
4411
5175
|
return null;
|
|
4412
5176
|
}
|
|
4413
5177
|
catch (err_56) {
|
|
4414
|
-
|
|
4415
|
-
return
|
|
5178
|
+
envObject_55.tryCatch.setError(err_56);
|
|
5179
|
+
return envObject_55.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4416
5180
|
}
|
|
4417
5181
|
}
|
|
4418
5182
|
function napi_create_buffer(env, size, data, result
|
|
@@ -4423,16 +5187,16 @@ function napi_create_buffer(env, size, data, result
|
|
|
4423
5187
|
var value, pointer;
|
|
4424
5188
|
if (env == 0)
|
|
4425
5189
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4426
|
-
var
|
|
5190
|
+
var envObject_56 = emnapiCtx.envStore
|
|
4427
5191
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4428
5192
|
.
|
|
4429
5193
|
get(env);
|
|
4430
|
-
if (
|
|
4431
|
-
return
|
|
4432
|
-
|
|
5194
|
+
if (envObject_56.tryCatch.hasCaught())
|
|
5195
|
+
return envObject_56.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5196
|
+
envObject_56.clearLastError();
|
|
4433
5197
|
try {
|
|
4434
5198
|
if (result == 0)
|
|
4435
|
-
return
|
|
5199
|
+
return envObject_56.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4436
5200
|
{{{ from64("result") }}};
|
|
4437
5201
|
var Buffer_1 = emnapiCtx.feature.Buffer;
|
|
4438
5202
|
var buffer_2 = void 0;
|
|
@@ -4463,11 +5227,11 @@ function napi_create_buffer(env, size, data, result
|
|
|
4463
5227
|
{{{ from64("data") }}};
|
|
4464
5228
|
{{{ makeSetValue("data", 0, "pointer", "*") }}};
|
|
4465
5229
|
}
|
|
4466
|
-
return
|
|
5230
|
+
return envObject_56.getReturnStatus();
|
|
4467
5231
|
}
|
|
4468
5232
|
catch (err_59) {
|
|
4469
|
-
|
|
4470
|
-
return
|
|
5233
|
+
envObject_56.tryCatch.setError(err_59);
|
|
5234
|
+
return envObject_56.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4471
5235
|
}
|
|
4472
5236
|
}
|
|
4473
5237
|
function napi_create_buffer_copy(env, length, data, result_data, result
|
|
@@ -4477,16 +5241,16 @@ function napi_create_buffer_copy(env, length, data, result_data, result
|
|
|
4477
5241
|
var value;
|
|
4478
5242
|
if (env == 0)
|
|
4479
5243
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4480
|
-
var
|
|
5244
|
+
var envObject_57 = emnapiCtx.envStore
|
|
4481
5245
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4482
5246
|
.
|
|
4483
5247
|
get(env);
|
|
4484
|
-
if (
|
|
4485
|
-
return
|
|
4486
|
-
|
|
5248
|
+
if (envObject_57.tryCatch.hasCaught())
|
|
5249
|
+
return envObject_57.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5250
|
+
envObject_57.clearLastError();
|
|
4487
5251
|
try {
|
|
4488
5252
|
if (result == 0)
|
|
4489
|
-
return
|
|
5253
|
+
return envObject_57.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4490
5254
|
var arrayBuffer_3 = emnapiCreateArrayBuffer(length, result_data);
|
|
4491
5255
|
var Buffer_2 = emnapiCtx.feature.Buffer;
|
|
4492
5256
|
var buffer_4 = Buffer_2.from(arrayBuffer_3);
|
|
@@ -4496,11 +5260,11 @@ function napi_create_buffer_copy(env, length, data, result_data, result
|
|
|
4496
5260
|
value = emnapiCtx.addToCurrentScope(buffer_4).id;
|
|
4497
5261
|
{{{ from64("result") }}};
|
|
4498
5262
|
{{{ makeSetValue("result", 0, "value", "*") }}};
|
|
4499
|
-
return
|
|
5263
|
+
return envObject_57.getReturnStatus();
|
|
4500
5264
|
}
|
|
4501
5265
|
catch (err_60) {
|
|
4502
|
-
|
|
4503
|
-
return
|
|
5266
|
+
envObject_57.tryCatch.setError(err_60);
|
|
5267
|
+
return envObject_57.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4504
5268
|
}
|
|
4505
5269
|
}
|
|
4506
5270
|
function napi_create_external_buffer(env, length, data, finalize_cb, finalize_hint, result) {
|
|
@@ -4513,18 +5277,18 @@ function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result
|
|
|
4513
5277
|
var value;
|
|
4514
5278
|
if (env == 0)
|
|
4515
5279
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4516
|
-
var
|
|
5280
|
+
var envObject_58 = emnapiCtx.envStore
|
|
4517
5281
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4518
5282
|
.
|
|
4519
5283
|
get(env);
|
|
4520
|
-
if (
|
|
4521
|
-
return
|
|
4522
|
-
|
|
5284
|
+
if (envObject_58.tryCatch.hasCaught())
|
|
5285
|
+
return envObject_58.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5286
|
+
envObject_58.clearLastError();
|
|
4523
5287
|
try {
|
|
4524
5288
|
if (arraybuffer == 0)
|
|
4525
|
-
return
|
|
5289
|
+
return envObject_58.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4526
5290
|
if (result == 0)
|
|
4527
|
-
return
|
|
5291
|
+
return envObject_58.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4528
5292
|
{{{ from64("byte_length") }}};
|
|
4529
5293
|
{{{ from64("byte_offset") }}};
|
|
4530
5294
|
byte_length = byte_length >>> 0;
|
|
@@ -4532,13 +5296,13 @@ function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result
|
|
|
4532
5296
|
var handle_12 = emnapiCtx.handleStore.get(arraybuffer);
|
|
4533
5297
|
var buffer_5 = handle_12.value;
|
|
4534
5298
|
if (!(buffer_5 instanceof ArrayBuffer)) {
|
|
4535
|
-
return
|
|
5299
|
+
return envObject_58.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4536
5300
|
}
|
|
4537
5301
|
if ((byte_length + byte_offset) > buffer_5.byteLength) {
|
|
4538
5302
|
var err_61 = new RangeError("byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in");
|
|
4539
5303
|
err_61.code = "ERR_NAPI_INVALID_DATAVIEW_ARGS";
|
|
4540
|
-
|
|
4541
|
-
return
|
|
5304
|
+
envObject_58.tryCatch.setError(err_61);
|
|
5305
|
+
return envObject_58.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4542
5306
|
}
|
|
4543
5307
|
var dataview_1 = new DataView(buffer_5, byte_offset, byte_length);
|
|
4544
5308
|
if (buffer_5 === wasmMemory.buffer) {
|
|
@@ -4556,11 +5320,11 @@ function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result
|
|
|
4556
5320
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4557
5321
|
value = emnapiCtx.addToCurrentScope(dataview_1).id;
|
|
4558
5322
|
{{{ makeSetValue("result", 0, "value", "*") }}};
|
|
4559
|
-
return
|
|
5323
|
+
return envObject_58.getReturnStatus();
|
|
4560
5324
|
}
|
|
4561
5325
|
catch (err_62) {
|
|
4562
|
-
|
|
4563
|
-
return
|
|
5326
|
+
envObject_58.tryCatch.setError(err_62);
|
|
5327
|
+
return envObject_58.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4564
5328
|
}
|
|
4565
5329
|
}
|
|
4566
5330
|
function node_api_symbol_for(env, utf8description, length, result) {
|
|
@@ -4648,6 +5412,62 @@ emnapiImplement('napi_get_boolean', 'ipip', napi_get_boolean);
|
|
|
4648
5412
|
emnapiImplement('napi_get_global', 'ipp', napi_get_global);
|
|
4649
5413
|
emnapiImplement('napi_get_null', 'ipp', napi_get_null);
|
|
4650
5414
|
emnapiImplement('napi_get_undefined', 'ipp', napi_get_undefined);
|
|
5415
|
+
function _napi_create_async_work(env, resource, resource_name, execute, complete, data, result) {
|
|
5416
|
+
if (env == 0)
|
|
5417
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
5418
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5419
|
+
if (execute == 0)
|
|
5420
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5421
|
+
if (result == 0)
|
|
5422
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5423
|
+
var resourceObject;
|
|
5424
|
+
if (resource) {
|
|
5425
|
+
resourceObject = Object(emnapiCtx.handleStore.get(resource).value);
|
|
5426
|
+
}
|
|
5427
|
+
else {
|
|
5428
|
+
resourceObject = {};
|
|
5429
|
+
}
|
|
5430
|
+
if (resource_name == 0)
|
|
5431
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5432
|
+
var resourceName = String(emnapiCtx.handleStore.get(resource_name).value);
|
|
5433
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5434
|
+
var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data);
|
|
5435
|
+
{{{ makeSetValue('result', 0, 'id', '*') }}};
|
|
5436
|
+
return envObject.clearLastError();
|
|
5437
|
+
}
|
|
5438
|
+
function _napi_delete_async_work(env, work) {
|
|
5439
|
+
if (env == 0)
|
|
5440
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
5441
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5442
|
+
if (work == 0)
|
|
5443
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5444
|
+
emnapiAWST.remove(work);
|
|
5445
|
+
return envObject.clearLastError();
|
|
5446
|
+
}
|
|
5447
|
+
function _napi_queue_async_work(env, work) {
|
|
5448
|
+
if (env == 0)
|
|
5449
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
5450
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5451
|
+
if (work == 0)
|
|
5452
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5453
|
+
emnapiAWST.queue(work);
|
|
5454
|
+
return envObject.clearLastError();
|
|
5455
|
+
}
|
|
5456
|
+
function _napi_cancel_async_work(env, work) {
|
|
5457
|
+
if (env == 0)
|
|
5458
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
5459
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
5460
|
+
if (work == 0)
|
|
5461
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5462
|
+
var status = emnapiAWST.cancel(work);
|
|
5463
|
+
if (status === 0 /* napi_status.napi_ok */)
|
|
5464
|
+
return envObject.clearLastError();
|
|
5465
|
+
return envObject.setLastError(status);
|
|
5466
|
+
}
|
|
5467
|
+
emnapiImplement('napi_create_async_work', 'ippppppp', _napi_create_async_work, ['$emnapiAWST']);
|
|
5468
|
+
emnapiImplement('napi_delete_async_work', 'ipp', _napi_delete_async_work, ['$emnapiAWST']);
|
|
5469
|
+
emnapiImplement('napi_queue_async_work', 'ipp', _napi_queue_async_work, ['$emnapiAWST']);
|
|
5470
|
+
emnapiImplement('napi_cancel_async_work', 'ipp', _napi_cancel_async_work, ['$emnapiAWST']);
|
|
4651
5471
|
mergeInto(LibraryManager.library, {
|
|
4652
5472
|
_emnapi_worker_unref__sig: 'vp',
|
|
4653
5473
|
_emnapi_worker_unref__deps: ['$PThread'],
|
|
@@ -4742,23 +5562,23 @@ function emnapi_get_module_object(env, result) {
|
|
|
4742
5562
|
var value;
|
|
4743
5563
|
if (env == 0)
|
|
4744
5564
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4745
|
-
var
|
|
4746
|
-
if (
|
|
5565
|
+
var envObject_59 = emnapiCtx.envStore.get(env);
|
|
5566
|
+
if (envObject_59.tryCatch
|
|
4747
5567
|
.hasCaught())
|
|
4748
|
-
return
|
|
4749
|
-
|
|
5568
|
+
return envObject_59.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5569
|
+
envObject_59.clearLastError();
|
|
4750
5570
|
try {
|
|
4751
5571
|
if (result == 0)
|
|
4752
|
-
return
|
|
5572
|
+
return envObject_59.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4753
5573
|
{{{ from64("result") }}};
|
|
4754
5574
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4755
|
-
value =
|
|
5575
|
+
value = envObject_59.ensureHandleId(Module);
|
|
4756
5576
|
{{{ makeSetValue("result", 0, "value", "*") }}};
|
|
4757
|
-
return
|
|
5577
|
+
return envObject_59.getReturnStatus();
|
|
4758
5578
|
}
|
|
4759
5579
|
catch (err_63) {
|
|
4760
|
-
|
|
4761
|
-
return
|
|
5580
|
+
envObject_59.tryCatch.setError(err_63);
|
|
5581
|
+
return envObject_59.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4762
5582
|
}
|
|
4763
5583
|
}
|
|
4764
5584
|
// @ts-expect-error
|
|
@@ -4767,26 +5587,26 @@ function emnapi_get_module_property(env, utf8name, result) {
|
|
|
4767
5587
|
var value;
|
|
4768
5588
|
if (env == 0)
|
|
4769
5589
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4770
|
-
var
|
|
4771
|
-
if (
|
|
5590
|
+
var envObject_60 = emnapiCtx.envStore.get(env);
|
|
5591
|
+
if (envObject_60.tryCatch
|
|
4772
5592
|
.hasCaught())
|
|
4773
|
-
return
|
|
4774
|
-
|
|
5593
|
+
return envObject_60.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5594
|
+
envObject_60.clearLastError();
|
|
4775
5595
|
try {
|
|
4776
5596
|
if (utf8name == 0)
|
|
4777
|
-
return
|
|
5597
|
+
return envObject_60.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4778
5598
|
if (result == 0)
|
|
4779
|
-
return
|
|
5599
|
+
return envObject_60.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4780
5600
|
{{{ from64("utf8name") }}};
|
|
4781
5601
|
{{{ from64("result") }}};
|
|
4782
5602
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4783
|
-
value =
|
|
5603
|
+
value = envObject_60.ensureHandleId(Module[UTF8ToString(utf8name)]);
|
|
4784
5604
|
{{{ makeSetValue("result", 0, "value", "*") }}};
|
|
4785
|
-
return
|
|
5605
|
+
return envObject_60.getReturnStatus();
|
|
4786
5606
|
}
|
|
4787
5607
|
catch (err_64) {
|
|
4788
|
-
|
|
4789
|
-
return
|
|
5608
|
+
envObject_60.tryCatch.setError(err_64);
|
|
5609
|
+
return envObject_60.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4790
5610
|
}
|
|
4791
5611
|
}
|
|
4792
5612
|
emnapiImplement2('emnapi_get_module_object', 'ipp', emnapi_get_module_object);
|
|
@@ -4798,6 +5618,7 @@ emnapiDefineVar('$emnapiModule', {
|
|
|
4798
5618
|
loaded: false,
|
|
4799
5619
|
filename: ''
|
|
4800
5620
|
});
|
|
5621
|
+
emnapiDefineVar('$emnapiAsyncWorkPoolSize', 0);
|
|
4801
5622
|
function emnapiInit(options) {
|
|
4802
5623
|
if (emnapiModule.loaded)
|
|
4803
5624
|
return emnapiModule.exports;
|
|
@@ -4819,6 +5640,18 @@ function emnapiInit(options) {
|
|
|
4819
5640
|
}
|
|
4820
5641
|
emnapiNodeBinding = nodeBinding;
|
|
4821
5642
|
}
|
|
5643
|
+
if ('asyncWorkPoolSize' in options) {
|
|
5644
|
+
if (typeof options.asyncWorkPoolSize !== 'number') {
|
|
5645
|
+
throw new TypeError('options.asyncWorkPoolSize must be a integer');
|
|
5646
|
+
}
|
|
5647
|
+
emnapiAsyncWorkPoolSize = options.asyncWorkPoolSize >> 0;
|
|
5648
|
+
if (emnapiAsyncWorkPoolSize > 1024) {
|
|
5649
|
+
emnapiAsyncWorkPoolSize = 1024;
|
|
5650
|
+
}
|
|
5651
|
+
else if (emnapiAsyncWorkPoolSize < -1024) {
|
|
5652
|
+
emnapiAsyncWorkPoolSize = -1024;
|
|
5653
|
+
}
|
|
5654
|
+
}
|
|
4822
5655
|
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
4823
5656
|
var envObject = emnapiModule.envObject || (emnapiModule.envObject = emnapiCtx.createEnv(function (cb) { return {{{ makeDynCall('vppp', 'cb') }}}; }, function (cb) { return {{{ makeDynCall('vp', 'cb') }}}; }));
|
|
4824
5657
|
var scope = emnapiCtx.openScope(envObject);
|
|
@@ -4840,7 +5673,11 @@ function emnapiInit(options) {
|
|
|
4840
5673
|
delete emnapiModule.envObject;
|
|
4841
5674
|
return emnapiModule.exports;
|
|
4842
5675
|
}
|
|
4843
|
-
emnapiImplementHelper('$emnapiInit', undefined, emnapiInit, ['$emnapiModule', '$emnapiCtx', '$emnapiNodeBinding', 'napi_register_wasm_v1']);
|
|
5676
|
+
emnapiImplementHelper('$emnapiInit', undefined, emnapiInit, ['$emnapiModule', '$emnapiCtx', '$emnapiNodeBinding', '$emnapiAsyncWorkPoolSize', 'napi_register_wasm_v1']);
|
|
5677
|
+
function __emnapi_async_work_pool_size() {
|
|
5678
|
+
return Math.abs(emnapiAsyncWorkPoolSize);
|
|
5679
|
+
}
|
|
5680
|
+
emnapiImplementInternal('_emnapi_async_work_pool_size', 'i', __emnapi_async_work_pool_size, ['$emnapiAsyncWorkPoolSize']);
|
|
4844
5681
|
function __emnapi_get_filename(buf, len) {
|
|
4845
5682
|
if (!buf) {
|
|
4846
5683
|
return lengthBytesUTF8(emnapiModule.filename);
|