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