@ai-ecoverse/slicc-kernel 1.108.4 → 1.108.5

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.
@@ -1070,10 +1070,28 @@ function createSyncSabTransport(sab, port2, deps = {}) {
1070
1070
  const wait2 = deps.wait ?? ((a, i, v, t) => rawWait(a, i, v, t));
1071
1071
  const now = deps.now ?? (() => performance.now());
1072
1072
  let seq = 0;
1073
+ let typical = 0;
1074
+ const ready = (id) => Atomics.load(header, SAB_I_STATE) === SAB_STATE_READY && Atomics.load(header, SAB_I_SEQ) === id;
1075
+ function spinUntil(id, until) {
1076
+ for (let stride = 0; stride < SPIN_STRIDES; stride++) {
1077
+ for (let i = 0; i < SPIN_STRIDE; i++) if (ready(id)) return true;
1078
+ if (now() >= until) return false;
1079
+ }
1080
+ return false;
1081
+ }
1082
+ function settled2(start2) {
1083
+ typical += (Math.min(now() - start2, SPIN_CAP_MS) - typical) / 8;
1084
+ }
1073
1085
  function awaitReady(id, deadline, label) {
1086
+ const start2 = now();
1087
+ if (spinning && typical < SPIN_MS && spinUntil(id, start2 + SPIN_MS)) {
1088
+ settled2(start2);
1089
+ return;
1090
+ }
1074
1091
  for (; ; ) {
1075
1092
  const published = Atomics.load(header, SAB_I_PUB);
1076
- if (Atomics.load(header, SAB_I_STATE) === SAB_STATE_READY && Atomics.load(header, SAB_I_SEQ) === id) {
1093
+ if (ready(id)) {
1094
+ settled2(start2);
1077
1095
  return;
1078
1096
  }
1079
1097
  const remaining = deadline - now();
@@ -1281,7 +1299,7 @@ function createSyncFsSabBridge(transport, opts = {}) {
1281
1299
  statfs: (path = "/") => parseSyncFsUsage(json2({ op: "statfs", path }, path))
1282
1300
  };
1283
1301
  }
1284
- var PATH_OPS, calls;
1302
+ var PATH_OPS, calls, SPIN_MS, SPIN_STRIDE, SPIN_STRIDES, SPIN_CORES, spinning, SPIN_CAP_MS;
1285
1303
  var init_sync_sab_bridge = __esm({
1286
1304
  "src/realm/sync-sab-bridge.ts"() {
1287
1305
  "use strict";
@@ -1291,6 +1309,12 @@ var init_sync_sab_bridge = __esm({
1291
1309
  init_sync_sab_wire();
1292
1310
  PATH_OPS = new Set(SYNC_FS_OPS);
1293
1311
  calls = 0;
1312
+ SPIN_MS = 0.06;
1313
+ SPIN_STRIDE = 128;
1314
+ SPIN_STRIDES = 256;
1315
+ SPIN_CORES = 4;
1316
+ spinning = (globalThis.navigator?.hardwareConcurrency ?? 0) >= SPIN_CORES;
1317
+ SPIN_CAP_MS = 1;
1294
1318
  }
1295
1319
  });
1296
1320
 
@@ -2491,7 +2515,7 @@ var KERNEL_VERSION, OS_RELEASE;
2491
2515
  var init_version = __esm({
2492
2516
  "src/version.ts"() {
2493
2517
  "use strict";
2494
- KERNEL_VERSION = true ? "1.108.4" : "0.0.0-dev";
2518
+ KERNEL_VERSION = true ? "1.108.5" : "0.0.0-dev";
2495
2519
  OS_RELEASE = "6.0.0-slicc";
2496
2520
  }
2497
2521
  });