@tailwindcss/oxide-wasm32-wasi 4.3.1 → 4.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.js +320 -98
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts +0 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.d.mts +0 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.d.ts +0 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js +385 -97
- package/node_modules/@emnapi/core/dist/emnapi-core.js +399 -120
- package/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts +0 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.min.js +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.min.mjs +1 -1
- package/node_modules/@emnapi/core/dist/emnapi-core.mjs +320 -98
- package/node_modules/@emnapi/core/package.json +2 -2
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.iife.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.min.js +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.min.mjs +1 -1
- package/node_modules/@emnapi/runtime/dist/emnapi.mjs +1 -1
- package/node_modules/@emnapi/runtime/package.json +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js +14 -23
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts +0 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts +0 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts +0 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js +14 -23
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js +14 -23
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts +0 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs +1 -1
- package/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs +14 -23
- package/node_modules/@emnapi/wasi-threads/package.json +1 -1
- package/package.json +4 -4
- package/tailwindcss-oxide.wasm32-wasi.wasm +0 -0
|
@@ -119,10 +119,10 @@ function createNapiModule(options) {
|
|
|
119
119
|
if (!(instance === null || instance === void 0 ? void 0 : instance.exports))
|
|
120
120
|
throw new TypeError('Invalid wasm instance');
|
|
121
121
|
wasmInstance = instance;
|
|
122
|
-
var exports
|
|
122
|
+
var exports = instance.exports;
|
|
123
123
|
var module = options.module;
|
|
124
|
-
var memory = options.memory || exports
|
|
125
|
-
var table = options.table || exports
|
|
124
|
+
var memory = options.memory || exports.memory;
|
|
125
|
+
var table = options.table || exports.__indirect_function_table;
|
|
126
126
|
if (!(module instanceof _WebAssembly.Module))
|
|
127
127
|
throw new TypeError('Invalid wasm module');
|
|
128
128
|
if (!(memory instanceof _WebAssembly.Memory))
|
|
@@ -131,12 +131,12 @@ function createNapiModule(options) {
|
|
|
131
131
|
throw new TypeError('Invalid wasm table');
|
|
132
132
|
wasmMemory = memory;
|
|
133
133
|
wasmTable = table;
|
|
134
|
-
if (typeof exports
|
|
134
|
+
if (typeof exports.malloc !== 'function')
|
|
135
135
|
throw new TypeError('malloc is not exported');
|
|
136
|
-
if (typeof exports
|
|
136
|
+
if (typeof exports.free !== 'function')
|
|
137
137
|
throw new TypeError('free is not exported');
|
|
138
|
-
_malloc = exports
|
|
139
|
-
_free = exports
|
|
138
|
+
_malloc = exports.malloc;
|
|
139
|
+
_free = exports.free;
|
|
140
140
|
if (!napiModule.childThread) {
|
|
141
141
|
var moduleApiVersion = 8;
|
|
142
142
|
var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1;
|
|
@@ -147,11 +147,11 @@ function createNapiModule(options) {
|
|
|
147
147
|
var scope_1 = emnapiCtx.openScope(envObject);
|
|
148
148
|
try {
|
|
149
149
|
envObject.callIntoModule(function (_envObject) {
|
|
150
|
-
var exports
|
|
151
|
-
var exportsHandle = scope_1.add(exports
|
|
150
|
+
var exports = napiModule.exports;
|
|
151
|
+
var exportsHandle = scope_1.add(exports);
|
|
152
152
|
var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1;
|
|
153
153
|
var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id);
|
|
154
|
-
napiModule.exports = (!napiValue) ? exports
|
|
154
|
+
napiModule.exports = (!napiValue) ? exports : emnapiCtx.handleStore.get(napiValue).value;
|
|
155
155
|
});
|
|
156
156
|
}
|
|
157
157
|
catch (e) {
|
|
@@ -910,7 +910,7 @@ function createNapiModule(options) {
|
|
|
910
910
|
emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4;
|
|
911
911
|
if (typeof PThread !== 'undefined') {
|
|
912
912
|
PThread.unusedWorkers.forEach(emnapiTSFN.addListener);
|
|
913
|
-
PThread.
|
|
913
|
+
Object.values(PThread.pthreads).forEach(emnapiTSFN.addListener);
|
|
914
914
|
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
915
915
|
PThread.getNewWorker = function () {
|
|
916
916
|
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
@@ -932,7 +932,7 @@ function createNapiModule(options) {
|
|
|
932
932
|
var payload = __emnapi__.payload;
|
|
933
933
|
if (type === 'tsfn-send') {
|
|
934
934
|
var pendng = payload.tsfn + emnapiTSFN.offset.async_pending;
|
|
935
|
-
if (Atomics.load(new Int32Array(
|
|
935
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
936
936
|
emnapiTSFN.enqueue(payload.tsfn);
|
|
937
937
|
}
|
|
938
938
|
}
|
|
@@ -956,13 +956,21 @@ function createNapiModule(options) {
|
|
|
956
956
|
}
|
|
957
957
|
return true;
|
|
958
958
|
},
|
|
959
|
+
ensureBufferFor: function (end) {
|
|
960
|
+
var buffer = wasmMemory.buffer;
|
|
961
|
+
if (end > buffer.byteLength) {
|
|
962
|
+
wasmMemory.grow(0);
|
|
963
|
+
buffer = wasmMemory.buffer;
|
|
964
|
+
}
|
|
965
|
+
return buffer;
|
|
966
|
+
},
|
|
959
967
|
initQueue: function (func) {
|
|
960
968
|
var size = 2 * 4;
|
|
961
969
|
var queue = _malloc(size);
|
|
962
970
|
if (!queue)
|
|
963
971
|
return false;
|
|
964
972
|
queue >>>= 0;
|
|
965
|
-
new Uint8Array(
|
|
973
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(queue + size), queue, size).fill(0);
|
|
966
974
|
emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false);
|
|
967
975
|
return true;
|
|
968
976
|
},
|
|
@@ -1061,7 +1069,7 @@ function createNapiModule(options) {
|
|
|
1061
1069
|
var mutex = {
|
|
1062
1070
|
lock: function () {
|
|
1063
1071
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1064
|
-
var i32a = new Int32Array(
|
|
1072
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1065
1073
|
if (isBrowserMain) {
|
|
1066
1074
|
while (true) {
|
|
1067
1075
|
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
@@ -1081,7 +1089,7 @@ function createNapiModule(options) {
|
|
|
1081
1089
|
}
|
|
1082
1090
|
},
|
|
1083
1091
|
unlock: function () {
|
|
1084
|
-
var i32a = new Int32Array(
|
|
1092
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1085
1093
|
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1086
1094
|
if (oldValue !== 10) {
|
|
1087
1095
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
@@ -1105,14 +1113,14 @@ function createNapiModule(options) {
|
|
|
1105
1113
|
var mutex = emnapiTSFN.getMutex(func);
|
|
1106
1114
|
var cond = {
|
|
1107
1115
|
wait: function () {
|
|
1108
|
-
var i32a = new Int32Array(
|
|
1116
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1109
1117
|
var value = Atomics.load(i32a, 0);
|
|
1110
1118
|
mutex.unlock();
|
|
1111
1119
|
Atomics.wait(i32a, 0, value);
|
|
1112
1120
|
mutex.lock();
|
|
1113
1121
|
},
|
|
1114
1122
|
signal: function () {
|
|
1115
|
-
var i32a = new Int32Array(
|
|
1123
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(index + 4), index, 1);
|
|
1116
1124
|
Atomics.add(i32a, 0, 1);
|
|
1117
1125
|
Atomics.notify(i32a, 0, 1);
|
|
1118
1126
|
}
|
|
@@ -1125,14 +1133,14 @@ function createNapiModule(options) {
|
|
|
1125
1133
|
addQueueSize: function (func) {
|
|
1126
1134
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1127
1135
|
var arr, index;
|
|
1128
|
-
arr = new Uint32Array(
|
|
1136
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1129
1137
|
index = (func + offset) >>> 2;
|
|
1130
1138
|
Atomics.add(arr, index, 1);
|
|
1131
1139
|
},
|
|
1132
1140
|
subQueueSize: function (func) {
|
|
1133
1141
|
var offset = emnapiTSFN.offset.queue_size;
|
|
1134
1142
|
var arr, index;
|
|
1135
|
-
arr = new Uint32Array(
|
|
1143
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1136
1144
|
index = (func + offset) >>> 2;
|
|
1137
1145
|
Atomics.sub(arr, index, 1);
|
|
1138
1146
|
},
|
|
@@ -1142,31 +1150,31 @@ function createNapiModule(options) {
|
|
|
1142
1150
|
addThreadCount: function (func) {
|
|
1143
1151
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1144
1152
|
var arr, index;
|
|
1145
|
-
arr = new Uint32Array(
|
|
1153
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1146
1154
|
index = (func + offset) >>> 2;
|
|
1147
1155
|
Atomics.add(arr, index, 1);
|
|
1148
1156
|
},
|
|
1149
1157
|
subThreadCount: function (func) {
|
|
1150
1158
|
var offset = emnapiTSFN.offset.thread_count;
|
|
1151
1159
|
var arr, index;
|
|
1152
|
-
arr = new Uint32Array(
|
|
1160
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(func + offset + 4));
|
|
1153
1161
|
index = (func + offset) >>> 2;
|
|
1154
1162
|
Atomics.sub(arr, index, 1);
|
|
1155
1163
|
},
|
|
1156
1164
|
getState: function (func) {
|
|
1157
|
-
return Atomics.load(new Int32Array(
|
|
1165
|
+
return Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2);
|
|
1158
1166
|
},
|
|
1159
1167
|
setState: function (func, value) {
|
|
1160
|
-
Atomics.store(new Int32Array(
|
|
1168
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.state + 4)), (func + emnapiTSFN.offset.state) >>> 2, value);
|
|
1161
1169
|
},
|
|
1162
1170
|
getHandlesClosing: function (func) {
|
|
1163
|
-
return Atomics.load(new Int8Array(
|
|
1171
|
+
return Atomics.load(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing));
|
|
1164
1172
|
},
|
|
1165
1173
|
setHandlesClosing: function (func, value) {
|
|
1166
|
-
Atomics.store(new Int8Array(
|
|
1174
|
+
Atomics.store(new Int8Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.handles_closing + 1)), (func + emnapiTSFN.offset.handles_closing), value);
|
|
1167
1175
|
},
|
|
1168
1176
|
getDispatchState: function (func) {
|
|
1169
|
-
return Atomics.load(new Uint32Array(
|
|
1177
|
+
return Atomics.load(new Uint32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.dispatch_state + 4)), (func + emnapiTSFN.offset.dispatch_state) >>> 2);
|
|
1170
1178
|
},
|
|
1171
1179
|
getContext: function (func) {
|
|
1172
1180
|
return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false);
|
|
@@ -1196,12 +1204,12 @@ function createNapiModule(options) {
|
|
|
1196
1204
|
var ret;
|
|
1197
1205
|
var arr;
|
|
1198
1206
|
if (unsigned) {
|
|
1199
|
-
arr = new Uint32Array(
|
|
1207
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1200
1208
|
ret = Atomics.load(arr, offset >>> 2);
|
|
1201
1209
|
return ret;
|
|
1202
1210
|
}
|
|
1203
1211
|
else {
|
|
1204
|
-
arr = new Int32Array(
|
|
1212
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1205
1213
|
ret = Atomics.load(arr, offset >>> 2);
|
|
1206
1214
|
return ret;
|
|
1207
1215
|
}
|
|
@@ -1209,12 +1217,12 @@ function createNapiModule(options) {
|
|
|
1209
1217
|
storeSizeTypeValue: function (offset, value, unsigned) {
|
|
1210
1218
|
var arr;
|
|
1211
1219
|
if (unsigned) {
|
|
1212
|
-
arr = new Uint32Array(
|
|
1220
|
+
arr = new Uint32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1213
1221
|
Atomics.store(arr, offset >>> 2, value);
|
|
1214
1222
|
return undefined;
|
|
1215
1223
|
}
|
|
1216
1224
|
else {
|
|
1217
|
-
arr = new Int32Array(
|
|
1225
|
+
arr = new Int32Array(emnapiTSFN.ensureBufferFor(offset + 4));
|
|
1218
1226
|
Atomics.store(arr, offset >>> 2, value >>> 0);
|
|
1219
1227
|
return undefined;
|
|
1220
1228
|
}
|
|
@@ -1230,18 +1238,20 @@ function createNapiModule(options) {
|
|
|
1230
1238
|
}
|
|
1231
1239
|
var resource = emnapiTSFN.getResource(func);
|
|
1232
1240
|
emnapiCtx.refStore.get(resource).dispose();
|
|
1241
|
+
emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.is_some + 1);
|
|
1233
1242
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1234
1243
|
HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true);
|
|
1235
1244
|
emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func);
|
|
1236
1245
|
envObject.unref();
|
|
1237
|
-
var
|
|
1238
|
-
var
|
|
1246
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1247
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1248
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1239
1249
|
if (Atomics.load(arr, asyncRefOffset) > 0) {
|
|
1240
1250
|
Atomics.store(arr, asyncRefOffset, 0);
|
|
1241
1251
|
emnapiCtx.decreaseWaitingRequestCounter();
|
|
1242
1252
|
}
|
|
1243
1253
|
if (emnapiNodeBinding) {
|
|
1244
|
-
var view = new DataView(
|
|
1254
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1245
1255
|
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1246
1256
|
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1247
1257
|
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
@@ -1302,7 +1312,7 @@ function createNapiModule(options) {
|
|
|
1302
1312
|
var resource = emnapiTSFN.getResource(func);
|
|
1303
1313
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1304
1314
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1305
|
-
var view = new DataView(
|
|
1315
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1306
1316
|
var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true);
|
|
1307
1317
|
var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true);
|
|
1308
1318
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
@@ -1340,7 +1350,7 @@ function createNapiModule(options) {
|
|
|
1340
1350
|
return;
|
|
1341
1351
|
}
|
|
1342
1352
|
emnapiTSFN.setHandlesClosing(func, 1);
|
|
1343
|
-
Atomics.store(new Int32Array(
|
|
1353
|
+
Atomics.store(new Int32Array(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.async_pending + 4)), (func + emnapiTSFN.offset.async_pending) >>> 2, 1);
|
|
1344
1354
|
emnapiCtx.feature.setImmediate(function () {
|
|
1345
1355
|
emnapiTSFN.finalize(func);
|
|
1346
1356
|
});
|
|
@@ -1410,7 +1420,7 @@ function createNapiModule(options) {
|
|
|
1410
1420
|
var resource = emnapiTSFN.getResource(func);
|
|
1411
1421
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
1412
1422
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
1413
|
-
var view = new DataView(
|
|
1423
|
+
var view = new DataView(emnapiTSFN.ensureBufferFor(func + emnapiTSFN.offset.trigger_async_id + 8));
|
|
1414
1424
|
emnapiNodeBinding.node.makeCallback(resourceObject, f, [], {
|
|
1415
1425
|
asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true),
|
|
1416
1426
|
triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true)
|
|
@@ -1429,8 +1439,9 @@ function createNapiModule(options) {
|
|
|
1429
1439
|
dispatch: function (func) {
|
|
1430
1440
|
var has_more = true;
|
|
1431
1441
|
var iterations_left = 1000;
|
|
1432
|
-
var
|
|
1433
|
-
var
|
|
1442
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1443
|
+
var ui32a = new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4));
|
|
1444
|
+
var index = dispatchStateAddress >>> 2;
|
|
1434
1445
|
while (has_more && --iterations_left !== 0) {
|
|
1435
1446
|
Atomics.store(ui32a, index, 1);
|
|
1436
1447
|
has_more = emnapiTSFN.dispatchOne(func);
|
|
@@ -1445,7 +1456,7 @@ function createNapiModule(options) {
|
|
|
1445
1456
|
enqueue: function (func) {
|
|
1446
1457
|
var pending = func + emnapiTSFN.offset.async_pending;
|
|
1447
1458
|
var scheduled = func + emnapiTSFN.offset.async_u_fd;
|
|
1448
|
-
var i32a = new Int32Array(
|
|
1459
|
+
var i32a = new Int32Array(emnapiTSFN.ensureBufferFor(Math.max(pending, scheduled) + 4));
|
|
1449
1460
|
if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) {
|
|
1450
1461
|
return;
|
|
1451
1462
|
}
|
|
@@ -1479,15 +1490,16 @@ function createNapiModule(options) {
|
|
|
1479
1490
|
});
|
|
1480
1491
|
},
|
|
1481
1492
|
send: function (func) {
|
|
1482
|
-
var
|
|
1493
|
+
var dispatchStateAddress = func + emnapiTSFN.offset.dispatch_state;
|
|
1494
|
+
var current_state = Atomics.or(new Uint32Array(emnapiTSFN.ensureBufferFor(dispatchStateAddress + 4)), dispatchStateAddress >>> 2, 1 << 1);
|
|
1483
1495
|
if ((current_state & 1) === 1) {
|
|
1484
1496
|
return;
|
|
1485
1497
|
}
|
|
1486
1498
|
var pendng = func + emnapiTSFN.offset.async_pending;
|
|
1487
|
-
if (Atomics.load(new Int32Array(
|
|
1499
|
+
if (Atomics.load(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2) !== 0) {
|
|
1488
1500
|
return;
|
|
1489
1501
|
}
|
|
1490
|
-
if (Atomics.exchange(new Int32Array(
|
|
1502
|
+
if (Atomics.exchange(new Int32Array(emnapiTSFN.ensureBufferFor(pendng + 4)), pendng >>> 2, 1) === 0) {
|
|
1491
1503
|
if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) {
|
|
1492
1504
|
postMessage({
|
|
1493
1505
|
__emnapi__: {
|
|
@@ -1561,7 +1573,7 @@ function createNapiModule(options) {
|
|
|
1561
1573
|
if (!tsfn)
|
|
1562
1574
|
return envObject.setLastError(9);
|
|
1563
1575
|
tsfn >>>= 0;
|
|
1564
|
-
new Uint8Array(
|
|
1576
|
+
new Uint8Array(emnapiTSFN.ensureBufferFor(tsfn + sizeofTSFN)).subarray(tsfn, tsfn + sizeofTSFN).fill(0);
|
|
1565
1577
|
var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1);
|
|
1566
1578
|
var resource_ = resourceRef.id;
|
|
1567
1579
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
@@ -1668,8 +1680,9 @@ function createNapiModule(options) {
|
|
|
1668
1680
|
return 1;
|
|
1669
1681
|
}
|
|
1670
1682
|
func >>>= 0;
|
|
1671
|
-
var
|
|
1672
|
-
var
|
|
1683
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1684
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1685
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1673
1686
|
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1674
1687
|
if (currentValue > 0) {
|
|
1675
1688
|
Atomics.store(arr, asyncRefOffset, currentValue - 1);
|
|
@@ -1685,8 +1698,9 @@ function createNapiModule(options) {
|
|
|
1685
1698
|
return 1;
|
|
1686
1699
|
}
|
|
1687
1700
|
func >>>= 0;
|
|
1688
|
-
var
|
|
1689
|
-
var
|
|
1701
|
+
var asyncRefAddress = func + emnapiTSFN.offset.async_ref;
|
|
1702
|
+
var asyncRefOffset = asyncRefAddress >>> 2;
|
|
1703
|
+
var arr = new Uint32Array(emnapiTSFN.ensureBufferFor(asyncRefAddress + 4));
|
|
1690
1704
|
var currentValue = Atomics.load(arr, asyncRefOffset);
|
|
1691
1705
|
if (!currentValue) {
|
|
1692
1706
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
@@ -1722,12 +1736,20 @@ function createNapiModule(options) {
|
|
|
1722
1736
|
complete: 6 * 4 + 24,
|
|
1723
1737
|
end: 7 * 4 + 24
|
|
1724
1738
|
},
|
|
1739
|
+
ensureBufferFor: function (end) {
|
|
1740
|
+
var buffer = wasmMemory.buffer;
|
|
1741
|
+
if (end > buffer.byteLength) {
|
|
1742
|
+
wasmMemory.grow(0);
|
|
1743
|
+
buffer = wasmMemory.buffer;
|
|
1744
|
+
}
|
|
1745
|
+
return buffer;
|
|
1746
|
+
},
|
|
1725
1747
|
init: function () {
|
|
1726
1748
|
emnapiAWMT.pool = [];
|
|
1727
1749
|
emnapiAWMT.workerReady = null;
|
|
1728
1750
|
if (typeof PThread !== 'undefined') {
|
|
1729
1751
|
PThread.unusedWorkers.forEach(emnapiAWMT.addListener);
|
|
1730
|
-
PThread.
|
|
1752
|
+
Object.values(PThread.pthreads).forEach(emnapiAWMT.addListener);
|
|
1731
1753
|
var __original_getNewWorker_1 = PThread.getNewWorker;
|
|
1732
1754
|
PThread.getNewWorker = function () {
|
|
1733
1755
|
var r = __original_getNewWorker_1.apply(this, arguments);
|
|
@@ -1776,7 +1798,7 @@ function createNapiModule(options) {
|
|
|
1776
1798
|
emnapiAWMT.globalAddress >>>= 0;
|
|
1777
1799
|
var size = emnapiAWMT.globalOffset.end;
|
|
1778
1800
|
var addr = emnapiAWMT.globalAddress;
|
|
1779
|
-
new Uint8Array(
|
|
1801
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(addr + size), addr, size).fill(0);
|
|
1780
1802
|
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q);
|
|
1781
1803
|
emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message);
|
|
1782
1804
|
}
|
|
@@ -1816,8 +1838,8 @@ function createNapiModule(options) {
|
|
|
1816
1838
|
return worker.whenLoaded;
|
|
1817
1839
|
}
|
|
1818
1840
|
index >>>= 0;
|
|
1819
|
-
var view = new DataView(wasmMemory.buffer);
|
|
1820
1841
|
var tidOffset = 20;
|
|
1842
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(index + tidOffset + 4));
|
|
1821
1843
|
var tid = view.getInt32(index + tidOffset, true);
|
|
1822
1844
|
worker = PThread.pthreads[tid];
|
|
1823
1845
|
return worker.whenLoaded;
|
|
@@ -1826,22 +1848,27 @@ function createNapiModule(options) {
|
|
|
1826
1848
|
return emnapiAWMT.workerReady;
|
|
1827
1849
|
},
|
|
1828
1850
|
getResource: function (work) {
|
|
1851
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.resource + 4);
|
|
1829
1852
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1830
1853
|
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true);
|
|
1831
1854
|
},
|
|
1832
1855
|
getExecute: function (work) {
|
|
1856
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.execute + 4);
|
|
1833
1857
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1834
1858
|
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true);
|
|
1835
1859
|
},
|
|
1836
1860
|
getComplete: function (work) {
|
|
1861
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.complete + 4);
|
|
1837
1862
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1838
1863
|
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true);
|
|
1839
1864
|
},
|
|
1840
1865
|
getEnv: function (work) {
|
|
1866
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.env + 4);
|
|
1841
1867
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1842
1868
|
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true);
|
|
1843
1869
|
},
|
|
1844
1870
|
getData: function (work) {
|
|
1871
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.data + 4);
|
|
1845
1872
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1846
1873
|
return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true);
|
|
1847
1874
|
},
|
|
@@ -1850,7 +1877,7 @@ function createNapiModule(options) {
|
|
|
1850
1877
|
var mutex = {
|
|
1851
1878
|
lock: function () {
|
|
1852
1879
|
var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE;
|
|
1853
|
-
var i32a = new Int32Array(
|
|
1880
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1854
1881
|
if (isBrowserMain) {
|
|
1855
1882
|
while (true) {
|
|
1856
1883
|
var oldValue = Atomics.compareExchange(i32a, 0, 0, 10);
|
|
@@ -1870,7 +1897,7 @@ function createNapiModule(options) {
|
|
|
1870
1897
|
}
|
|
1871
1898
|
},
|
|
1872
1899
|
unlock: function () {
|
|
1873
|
-
var i32a = new Int32Array(
|
|
1900
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1874
1901
|
var oldValue = Atomics.compareExchange(i32a, 0, 10, 0);
|
|
1875
1902
|
if (oldValue !== 10) {
|
|
1876
1903
|
throw new Error('Tried to unlock while not holding the mutex');
|
|
@@ -1894,14 +1921,14 @@ function createNapiModule(options) {
|
|
|
1894
1921
|
var mutex = emnapiAWMT.getMutex();
|
|
1895
1922
|
var cond = {
|
|
1896
1923
|
wait: function () {
|
|
1897
|
-
var i32a = new Int32Array(
|
|
1924
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1898
1925
|
var value = Atomics.load(i32a, 0);
|
|
1899
1926
|
mutex.unlock();
|
|
1900
1927
|
Atomics.wait(i32a, 0, value);
|
|
1901
1928
|
mutex.lock();
|
|
1902
1929
|
},
|
|
1903
1930
|
signal: function () {
|
|
1904
|
-
var i32a = new Int32Array(
|
|
1931
|
+
var i32a = new Int32Array(emnapiAWMT.ensureBufferFor(index + 4), index, 1);
|
|
1905
1932
|
Atomics.add(i32a, 0, 1);
|
|
1906
1933
|
Atomics.notify(i32a, 0, 1);
|
|
1907
1934
|
}
|
|
@@ -1909,11 +1936,14 @@ function createNapiModule(options) {
|
|
|
1909
1936
|
return cond;
|
|
1910
1937
|
},
|
|
1911
1938
|
queueInit: function (q) {
|
|
1939
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1912
1940
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1913
1941
|
HEAP_DATA_VIEW.setUint32(q, q, true);
|
|
1914
1942
|
HEAP_DATA_VIEW.setUint32(q + 4, q, true);
|
|
1915
1943
|
},
|
|
1916
1944
|
queueInsertTail: function (h, q) {
|
|
1945
|
+
emnapiAWMT.ensureBufferFor(h + 4 + 4);
|
|
1946
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1917
1947
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1918
1948
|
HEAP_DATA_VIEW.setUint32(q, h, true);
|
|
1919
1949
|
var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true);
|
|
@@ -1923,6 +1953,7 @@ function createNapiModule(options) {
|
|
|
1923
1953
|
HEAP_DATA_VIEW.setUint32(h + 4, q, true);
|
|
1924
1954
|
},
|
|
1925
1955
|
queueRemove: function (q) {
|
|
1956
|
+
emnapiAWMT.ensureBufferFor(q + 4 + 4);
|
|
1926
1957
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1927
1958
|
var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true);
|
|
1928
1959
|
var qnext = HEAP_DATA_VIEW.getUint32(q, true);
|
|
@@ -1930,6 +1961,7 @@ function createNapiModule(options) {
|
|
|
1930
1961
|
HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true);
|
|
1931
1962
|
},
|
|
1932
1963
|
queueEmpty: function (q) {
|
|
1964
|
+
emnapiAWMT.ensureBufferFor(q + 4);
|
|
1933
1965
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1934
1966
|
return q == HEAP_DATA_VIEW.getUint32(q, true);
|
|
1935
1967
|
},
|
|
@@ -1944,7 +1976,7 @@ function createNapiModule(options) {
|
|
|
1944
1976
|
});
|
|
1945
1977
|
}
|
|
1946
1978
|
emnapiCtx.increaseWaitingRequestCounter();
|
|
1947
|
-
var statusBuffer = new Int32Array(
|
|
1979
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
1948
1980
|
Atomics.store(statusBuffer, 0, 0);
|
|
1949
1981
|
var mutex = emnapiAWMT.getMutex();
|
|
1950
1982
|
var cond = emnapiAWMT.getCond();
|
|
@@ -1957,6 +1989,7 @@ function createNapiModule(options) {
|
|
|
1957
1989
|
mutex.unlock();
|
|
1958
1990
|
throw err;
|
|
1959
1991
|
}
|
|
1992
|
+
emnapiAWMT.ensureBufferFor(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads + 4);
|
|
1960
1993
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1961
1994
|
if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) {
|
|
1962
1995
|
cond.signal();
|
|
@@ -1966,6 +1999,7 @@ function createNapiModule(options) {
|
|
|
1966
1999
|
cancelWork: function (work) {
|
|
1967
2000
|
var cancelled = false;
|
|
1968
2001
|
emnapiAWMT.getMutex().execute(function () {
|
|
2002
|
+
emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4);
|
|
1969
2003
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
1970
2004
|
cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2;
|
|
1971
2005
|
if (cancelled) {
|
|
@@ -1975,7 +2009,7 @@ function createNapiModule(options) {
|
|
|
1975
2009
|
if (!cancelled) {
|
|
1976
2010
|
return 9;
|
|
1977
2011
|
}
|
|
1978
|
-
if (Atomics.compareExchange(new Int32Array(
|
|
2012
|
+
if (Atomics.compareExchange(new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) {
|
|
1979
2013
|
return 9;
|
|
1980
2014
|
}
|
|
1981
2015
|
emnapiCtx.feature.setImmediate(function () {
|
|
@@ -2002,7 +2036,7 @@ function createNapiModule(options) {
|
|
|
2002
2036
|
var resource = emnapiAWMT.getResource(work);
|
|
2003
2037
|
var resource_value = emnapiCtx.refStore.get(resource).get();
|
|
2004
2038
|
var resourceObject = emnapiCtx.handleStore.get(resource_value).value;
|
|
2005
|
-
var view = new DataView(
|
|
2039
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
2006
2040
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
2007
2041
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
2008
2042
|
emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], {
|
|
@@ -2069,7 +2103,7 @@ function createNapiModule(options) {
|
|
|
2069
2103
|
if (!aw)
|
|
2070
2104
|
return envObject.setLastError(9);
|
|
2071
2105
|
aw >>>= 0;
|
|
2072
|
-
new Uint8Array(
|
|
2106
|
+
new Uint8Array(emnapiAWMT.ensureBufferFor(aw + sizeofAW)).subarray(aw, aw + sizeofAW).fill(0);
|
|
2073
2107
|
var s = envObject.ensureHandleId(resourceObject);
|
|
2074
2108
|
var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1);
|
|
2075
2109
|
var resource_ = resourceRef.id;
|
|
@@ -2108,7 +2142,7 @@ function createNapiModule(options) {
|
|
|
2108
2142
|
var resource = emnapiAWMT.getResource(work);
|
|
2109
2143
|
emnapiCtx.refStore.get(resource).dispose();
|
|
2110
2144
|
if (emnapiNodeBinding) {
|
|
2111
|
-
var view = new DataView(
|
|
2145
|
+
var view = new DataView(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.trigger_async_id + 8));
|
|
2112
2146
|
var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true);
|
|
2113
2147
|
var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true);
|
|
2114
2148
|
_emnapi_node_emit_async_destroy(asyncId, triggerAsyncId);
|
|
@@ -2173,10 +2207,11 @@ function createNapiModule(options) {
|
|
|
2173
2207
|
var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q;
|
|
2174
2208
|
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2175
2209
|
for (;;) {
|
|
2210
|
+
emnapiAWMT.ensureBufferFor(workerQueueAddr + 4);
|
|
2176
2211
|
while (emnapiAWMT.queueEmpty(workerQueueAddr)) {
|
|
2177
|
-
Atomics.add(new Int32Array(
|
|
2212
|
+
Atomics.add(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2178
2213
|
cond.wait();
|
|
2179
|
-
Atomics.sub(new Int32Array(
|
|
2214
|
+
Atomics.sub(new Int32Array(emnapiAWMT.ensureBufferFor(idleThreadsAddr + 4), idleThreadsAddr, 1), 0, 1);
|
|
2180
2215
|
}
|
|
2181
2216
|
var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true);
|
|
2182
2217
|
if (q === exitMessageAddr) {
|
|
@@ -2188,7 +2223,7 @@ function createNapiModule(options) {
|
|
|
2188
2223
|
emnapiAWMT.queueRemove(q);
|
|
2189
2224
|
emnapiAWMT.queueInit(q);
|
|
2190
2225
|
mutex.unlock();
|
|
2191
|
-
var statusBuffer = new Int32Array(
|
|
2226
|
+
var statusBuffer = new Int32Array(emnapiAWMT.ensureBufferFor(work + emnapiAWMT.offset.status + 4), work + emnapiAWMT.offset.status, 1);
|
|
2192
2227
|
if (Atomics.load(statusBuffer, 0) === 1) {
|
|
2193
2228
|
abort('unreachable');
|
|
2194
2229
|
}
|
|
@@ -2386,6 +2421,55 @@ function createNapiModule(options) {
|
|
|
2386
2421
|
return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view };
|
|
2387
2422
|
}
|
|
2388
2423
|
};
|
|
2424
|
+
var emnapiExternalSAB = {
|
|
2425
|
+
registry: undefined,
|
|
2426
|
+
handleTable: new WeakMap(),
|
|
2427
|
+
init: function () {
|
|
2428
|
+
emnapiExternalSAB.handleTable = new WeakMap();
|
|
2429
|
+
emnapiExternalSAB.registry = typeof FinalizationRegistry === 'function'
|
|
2430
|
+
? new FinalizationRegistry(function (metaPtr) {
|
|
2431
|
+
emnapiExternalSAB.release(metaPtr);
|
|
2432
|
+
})
|
|
2433
|
+
: undefined;
|
|
2434
|
+
},
|
|
2435
|
+
allocMeta: function (external_data, byte_length, finalize_cb, finalize_data, finalize_hint) {
|
|
2436
|
+
var size = 4 * 6;
|
|
2437
|
+
var metaPtr = _malloc(size);
|
|
2438
|
+
if (!metaPtr)
|
|
2439
|
+
throw new Error('Out of memory');
|
|
2440
|
+
metaPtr >>>= 0;
|
|
2441
|
+
Atomics.store(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2442
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2443
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 4, external_data, true);
|
|
2444
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 8, byte_length, true);
|
|
2445
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 12, finalize_cb, true);
|
|
2446
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 16, finalize_data, true);
|
|
2447
|
+
HEAP_DATA_VIEW.setUint32(metaPtr + 20, finalize_hint, true);
|
|
2448
|
+
return metaPtr;
|
|
2449
|
+
},
|
|
2450
|
+
readMeta: function (metaPtr) {
|
|
2451
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
2452
|
+
var external_data = HEAP_DATA_VIEW.getUint32(metaPtr + 4, true);
|
|
2453
|
+
var byte_length = HEAP_DATA_VIEW.getUint32(metaPtr + 8, true);
|
|
2454
|
+
var finalize_cb = HEAP_DATA_VIEW.getUint32(metaPtr + 12, true);
|
|
2455
|
+
var finalize_data = HEAP_DATA_VIEW.getUint32(metaPtr + 16, true);
|
|
2456
|
+
var finalize_hint = HEAP_DATA_VIEW.getUint32(metaPtr + 20, true);
|
|
2457
|
+
return { external_data: external_data, byte_length: byte_length, finalize_cb: finalize_cb, finalize_data: finalize_data, finalize_hint: finalize_hint };
|
|
2458
|
+
},
|
|
2459
|
+
release: function (metaPtr) {
|
|
2460
|
+
var oldRefcount = Atomics.sub(new Int32Array(wasmMemory.buffer, metaPtr, 1), 0, 1);
|
|
2461
|
+
if (oldRefcount === 1) {
|
|
2462
|
+
var info = emnapiExternalSAB.readMeta(metaPtr);
|
|
2463
|
+
var finalize_cb = info.finalize_cb;
|
|
2464
|
+
if (finalize_cb) {
|
|
2465
|
+
var finalize_data = info.finalize_data;
|
|
2466
|
+
var finalize_hint = info.finalize_hint;
|
|
2467
|
+
(wasmTable.get(finalize_cb))(finalize_data, finalize_hint);
|
|
2468
|
+
}
|
|
2469
|
+
_free(metaPtr);
|
|
2470
|
+
}
|
|
2471
|
+
}
|
|
2472
|
+
};
|
|
2389
2473
|
var emnapiString = {
|
|
2390
2474
|
utf8Decoder: undefined,
|
|
2391
2475
|
utf16Decoder: undefined,
|
|
@@ -4257,16 +4341,95 @@ function createNapiModule(options) {
|
|
|
4257
4341
|
HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true);
|
|
4258
4342
|
return envObject.clearLastError();
|
|
4259
4343
|
}
|
|
4344
|
+
function emnapi_get_external_sharedarraybuffer_handle(env, sharedarraybuffer, handle) {
|
|
4345
|
+
if (!env)
|
|
4346
|
+
return 1;
|
|
4347
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4348
|
+
envObject.checkGCAccess();
|
|
4349
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4350
|
+
return envObject.setLastError(10);
|
|
4351
|
+
if (!envObject.canCallIntoJs())
|
|
4352
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4353
|
+
envObject.clearLastError();
|
|
4354
|
+
try {
|
|
4355
|
+
if (!sharedarraybuffer)
|
|
4356
|
+
return envObject.setLastError(1);
|
|
4357
|
+
if (!handle)
|
|
4358
|
+
return envObject.setLastError(1);
|
|
4359
|
+
handle >>>= 0;
|
|
4360
|
+
var jsValue = emnapiCtx.handleStore.get(sharedarraybuffer).value;
|
|
4361
|
+
if (!emnapiExternalMemory.isSharedArrayBuffer(jsValue)) {
|
|
4362
|
+
return envObject.setLastError(1);
|
|
4363
|
+
}
|
|
4364
|
+
var metaPtr = emnapiExternalSAB.handleTable.get(jsValue);
|
|
4365
|
+
if (metaPtr === undefined) {
|
|
4366
|
+
return envObject.setLastError(1);
|
|
4367
|
+
}
|
|
4368
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4369
|
+
HEAP_DATA_VIEW.setUint32(handle, metaPtr, true);
|
|
4370
|
+
return envObject.getReturnStatus();
|
|
4371
|
+
}
|
|
4372
|
+
catch (err) {
|
|
4373
|
+
envObject.tryCatch.setError(err);
|
|
4374
|
+
return envObject.setLastError(10);
|
|
4375
|
+
}
|
|
4376
|
+
}
|
|
4377
|
+
function emnapi_acquire_external_sharedarraybuffer(handle) {
|
|
4378
|
+
handle >>>= 0;
|
|
4379
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4380
|
+
}
|
|
4381
|
+
function emnapi_release_external_sharedarraybuffer(handle) {
|
|
4382
|
+
handle >>>= 0;
|
|
4383
|
+
emnapiExternalSAB.release(handle);
|
|
4384
|
+
}
|
|
4385
|
+
function $emnapiAcquireExternalSharedArrayBuffer(handle, sab) {
|
|
4386
|
+
if (sab != null && !emnapiExternalMemory.isSharedArrayBuffer(sab)) {
|
|
4387
|
+
throw new TypeError('Expected a SharedArrayBuffer');
|
|
4388
|
+
}
|
|
4389
|
+
if (!emnapiExternalSAB.registry) {
|
|
4390
|
+
throw new Error('FinalizationRegistry is not supported in this environment');
|
|
4391
|
+
}
|
|
4392
|
+
handle >>>= 0;
|
|
4393
|
+
var meta = emnapiExternalSAB.readMeta(handle);
|
|
4394
|
+
var external_data = meta.external_data;
|
|
4395
|
+
external_data >>>= 0;
|
|
4396
|
+
if (sab == null) {
|
|
4397
|
+
sab = new SharedArrayBuffer(meta.byte_length);
|
|
4398
|
+
new Uint8Array(sab).set(new Uint8Array(wasmMemory.buffer, external_data, meta.byte_length));
|
|
4399
|
+
}
|
|
4400
|
+
else {
|
|
4401
|
+
if (emnapiExternalSAB.handleTable.has(sab)) {
|
|
4402
|
+
return sab;
|
|
4403
|
+
}
|
|
4404
|
+
}
|
|
4405
|
+
Atomics.add(new Int32Array(wasmMemory.buffer, handle, 1), 0, 1);
|
|
4406
|
+
if (!emnapiExternalMemory.table.has(sab)) {
|
|
4407
|
+
if (external_data) {
|
|
4408
|
+
emnapiExternalMemory.table.set(sab, {
|
|
4409
|
+
address: external_data,
|
|
4410
|
+
ownership: 1,
|
|
4411
|
+
runtimeAllocated: 0
|
|
4412
|
+
});
|
|
4413
|
+
}
|
|
4414
|
+
}
|
|
4415
|
+
emnapiExternalSAB.handleTable.set(sab, handle);
|
|
4416
|
+
emnapiExternalSAB.registry.register(sab, handle);
|
|
4417
|
+
return sab;
|
|
4418
|
+
}
|
|
4260
4419
|
var emnapiMod = Object.freeze({
|
|
4261
4420
|
__proto__: null,
|
|
4421
|
+
$emnapiAcquireExternalSharedArrayBuffer: $emnapiAcquireExternalSharedArrayBuffer,
|
|
4262
4422
|
$emnapiGetMemoryAddress: $emnapiGetMemoryAddress,
|
|
4263
4423
|
$emnapiSyncMemory: $emnapiSyncMemory,
|
|
4424
|
+
emnapi_acquire_external_sharedarraybuffer: emnapi_acquire_external_sharedarraybuffer,
|
|
4264
4425
|
emnapi_create_memory_view: emnapi_create_memory_view,
|
|
4426
|
+
emnapi_get_external_sharedarraybuffer_handle: emnapi_get_external_sharedarraybuffer_handle,
|
|
4265
4427
|
emnapi_get_memory_address: emnapi_get_memory_address,
|
|
4266
4428
|
emnapi_get_runtime_version: emnapi_get_runtime_version,
|
|
4267
4429
|
emnapi_is_node_binding_available: emnapi_is_node_binding_available,
|
|
4268
4430
|
emnapi_is_support_bigint: emnapi_is_support_bigint,
|
|
4269
4431
|
emnapi_is_support_weakref: emnapi_is_support_weakref,
|
|
4432
|
+
emnapi_release_external_sharedarraybuffer: emnapi_release_external_sharedarraybuffer,
|
|
4270
4433
|
emnapi_sync_memory: emnapi_sync_memory
|
|
4271
4434
|
});
|
|
4272
4435
|
function napi_create_array(env, result) {
|
|
@@ -4485,6 +4648,60 @@ function createNapiModule(options) {
|
|
|
4485
4648
|
return envObject.setLastError(10);
|
|
4486
4649
|
}
|
|
4487
4650
|
}
|
|
4651
|
+
function node_api_create_external_sharedarraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) {
|
|
4652
|
+
var value;
|
|
4653
|
+
if (!env)
|
|
4654
|
+
return 1;
|
|
4655
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4656
|
+
envObject.checkGCAccess();
|
|
4657
|
+
if (!envObject.tryCatch.isEmpty())
|
|
4658
|
+
return envObject.setLastError(10);
|
|
4659
|
+
if (!envObject.canCallIntoJs())
|
|
4660
|
+
return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10);
|
|
4661
|
+
envObject.clearLastError();
|
|
4662
|
+
try {
|
|
4663
|
+
if (!result)
|
|
4664
|
+
return envObject.setLastError(1);
|
|
4665
|
+
byte_length >>>= 0;
|
|
4666
|
+
external_data >>>= 0;
|
|
4667
|
+
result >>>= 0;
|
|
4668
|
+
byte_length = byte_length >>> 0;
|
|
4669
|
+
if (!external_data) {
|
|
4670
|
+
byte_length = 0;
|
|
4671
|
+
}
|
|
4672
|
+
if ((external_data + byte_length) > wasmMemory.buffer.byteLength) {
|
|
4673
|
+
throw new RangeError('Memory out of range');
|
|
4674
|
+
}
|
|
4675
|
+
if (!emnapiExternalSAB.registry && finalize_cb) {
|
|
4676
|
+
throw emnapiCtx.createNotSupportWeakRefError('node_api_create_external_sharedarraybuffer', 'Parameter "finalize_cb" must be 0(NULL)');
|
|
4677
|
+
}
|
|
4678
|
+
var sharedArrayBuffer = new SharedArrayBuffer(byte_length);
|
|
4679
|
+
if (byte_length !== 0) {
|
|
4680
|
+
var u8arr = new Uint8Array(sharedArrayBuffer);
|
|
4681
|
+
u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length));
|
|
4682
|
+
emnapiExternalMemory.table.set(sharedArrayBuffer, {
|
|
4683
|
+
address: external_data,
|
|
4684
|
+
ownership: 1,
|
|
4685
|
+
runtimeAllocated: 0
|
|
4686
|
+
});
|
|
4687
|
+
}
|
|
4688
|
+
value = emnapiCtx.addToCurrentScope(sharedArrayBuffer).id;
|
|
4689
|
+
if (finalize_cb) {
|
|
4690
|
+
finalize_cb >>>= 0;
|
|
4691
|
+
finalize_hint >>>= 0;
|
|
4692
|
+
var metaPtr = emnapiExternalSAB.allocMeta(external_data, byte_length, finalize_cb, external_data, finalize_hint);
|
|
4693
|
+
emnapiExternalSAB.handleTable.set(sharedArrayBuffer, metaPtr);
|
|
4694
|
+
emnapiExternalSAB.registry.register(sharedArrayBuffer, metaPtr);
|
|
4695
|
+
}
|
|
4696
|
+
var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer);
|
|
4697
|
+
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4698
|
+
return envObject.getReturnStatus();
|
|
4699
|
+
}
|
|
4700
|
+
catch (err) {
|
|
4701
|
+
envObject.tryCatch.setError(err);
|
|
4702
|
+
return envObject.setLastError(10);
|
|
4703
|
+
}
|
|
4704
|
+
}
|
|
4488
4705
|
function napi_create_object(env, result) {
|
|
4489
4706
|
if (!env)
|
|
4490
4707
|
return 1;
|
|
@@ -4584,9 +4801,6 @@ function createNapiModule(options) {
|
|
|
4584
4801
|
if (!result)
|
|
4585
4802
|
return envObject.setLastError(1);
|
|
4586
4803
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
4587
|
-
if (!handle.isArrayBuffer()) {
|
|
4588
|
-
return envObject.setLastError(1);
|
|
4589
|
-
}
|
|
4590
4804
|
var buffer = handle.value;
|
|
4591
4805
|
byte_offset >>>= 0;
|
|
4592
4806
|
length >>>= 0;
|
|
@@ -4626,36 +4840,41 @@ function createNapiModule(options) {
|
|
|
4626
4840
|
HEAP_DATA_VIEW.setUint32(result, value, true);
|
|
4627
4841
|
return envObject.getReturnStatus();
|
|
4628
4842
|
};
|
|
4629
|
-
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
|
|
4643
|
-
|
|
4644
|
-
|
|
4645
|
-
|
|
4646
|
-
|
|
4647
|
-
|
|
4648
|
-
|
|
4649
|
-
|
|
4650
|
-
|
|
4651
|
-
|
|
4652
|
-
|
|
4653
|
-
|
|
4843
|
+
if (buffer instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(buffer)) {
|
|
4844
|
+
switch (type) {
|
|
4845
|
+
case 0:
|
|
4846
|
+
return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length);
|
|
4847
|
+
case 1:
|
|
4848
|
+
return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length);
|
|
4849
|
+
case 2:
|
|
4850
|
+
return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length);
|
|
4851
|
+
case 3:
|
|
4852
|
+
return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length);
|
|
4853
|
+
case 4:
|
|
4854
|
+
return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length);
|
|
4855
|
+
case 5:
|
|
4856
|
+
return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length);
|
|
4857
|
+
case 6:
|
|
4858
|
+
return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length);
|
|
4859
|
+
case 7:
|
|
4860
|
+
return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length);
|
|
4861
|
+
case 8:
|
|
4862
|
+
return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length);
|
|
4863
|
+
case 9:
|
|
4864
|
+
return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length);
|
|
4865
|
+
case 10:
|
|
4866
|
+
return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length);
|
|
4867
|
+
case 11:
|
|
4868
|
+
if (typeof Float16Array !== 'function') {
|
|
4869
|
+
return envObject.setLastError(1);
|
|
4870
|
+
}
|
|
4871
|
+
return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length);
|
|
4872
|
+
default:
|
|
4654
4873
|
return envObject.setLastError(1);
|
|
4655
|
-
|
|
4656
|
-
|
|
4657
|
-
|
|
4658
|
-
|
|
4874
|
+
}
|
|
4875
|
+
}
|
|
4876
|
+
else {
|
|
4877
|
+
return envObject.setLastError(1);
|
|
4659
4878
|
}
|
|
4660
4879
|
}
|
|
4661
4880
|
catch (err) {
|
|
@@ -4911,6 +5130,7 @@ function createNapiModule(options) {
|
|
|
4911
5130
|
napi_create_symbol: napi_create_symbol,
|
|
4912
5131
|
napi_create_typedarray: napi_create_typedarray,
|
|
4913
5132
|
node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer,
|
|
5133
|
+
node_api_create_external_sharedarraybuffer: node_api_create_external_sharedarraybuffer,
|
|
4914
5134
|
node_api_create_object_with_properties: node_api_create_object_with_properties,
|
|
4915
5135
|
node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer,
|
|
4916
5136
|
node_api_symbol_for: node_api_symbol_for
|
|
@@ -7110,11 +7330,13 @@ function createNapiModule(options) {
|
|
|
7110
7330
|
});
|
|
7111
7331
|
emnapiAWST.init();
|
|
7112
7332
|
emnapiExternalMemory.init();
|
|
7333
|
+
emnapiExternalSAB.init();
|
|
7113
7334
|
emnapiString.init();
|
|
7114
7335
|
emnapiTSFN.init();
|
|
7115
7336
|
PThread.init();
|
|
7116
7337
|
napiModule.emnapi.syncMemory = $emnapiSyncMemory;
|
|
7117
7338
|
napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress;
|
|
7339
|
+
napiModule.emnapi.acquireExternalSharedArrayBuffer = $emnapiAcquireExternalSharedArrayBuffer;
|
|
7118
7340
|
function addImports(mod) {
|
|
7119
7341
|
var keys = Object.keys(mod);
|
|
7120
7342
|
for (var i = 0; i < keys.length; ++i) {
|
|
@@ -7242,9 +7464,9 @@ function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) {
|
|
|
7242
7464
|
}
|
|
7243
7465
|
const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table;
|
|
7244
7466
|
if (wasi && !exportMemory) {
|
|
7245
|
-
const exports
|
|
7246
|
-
Object.assign(exports
|
|
7247
|
-
instance = { exports
|
|
7467
|
+
const exports = Object.create(null);
|
|
7468
|
+
Object.assign(exports, originalExports, { memory });
|
|
7469
|
+
instance = { exports };
|
|
7248
7470
|
}
|
|
7249
7471
|
const module = source.module;
|
|
7250
7472
|
if (wasi) {
|
|
@@ -7380,7 +7602,7 @@ class MessageHandler extends wasiThreads.ThreadMessageHandler {
|
|
|
7380
7602
|
}
|
|
7381
7603
|
}
|
|
7382
7604
|
|
|
7383
|
-
const version = "1.
|
|
7605
|
+
const version = "1.11.1";
|
|
7384
7606
|
|
|
7385
7607
|
exports.MessageHandler = MessageHandler;
|
|
7386
7608
|
exports.createNapiModule = createNapiModule;
|