@ai-ecoverse/slicc-kernel 1.7.1 → 1.7.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.
@@ -734,7 +734,7 @@ function sabViews(sab) {
734
734
  window: new Uint8Array(sab, SAB_HEADER_BYTES)
735
735
  };
736
736
  }
737
- var SAB_HEADER_I32, SAB_HEADER_BYTES, SAB_I_STATE, SAB_I_SEQ, SAB_I_STATUS, SAB_I_TOTAL, SAB_I_CHUNK, SAB_I_OFFSET, SAB_I_SIGNALS, SAB_I_TIMERS, SAB_STATE_IDLE, SAB_STATE_PENDING, SAB_STATE_READY, SAB_STATUS_BYTES, SAB_STATUS_JSON, SAB_STATUS_VOID, SAB_STATUS_ERRNO, SAB_DEFAULT_WINDOW_BYTES, SAB_MIN_BYTES, SYNC_SAB_REQ_MSG, SYNC_SAB_NEXT_MSG, encoder, decoder;
737
+ var SAB_HEADER_I32, SAB_HEADER_BYTES, SAB_I_STATE, SAB_I_SEQ, SAB_I_STATUS, SAB_I_TOTAL, SAB_I_CHUNK, SAB_I_OFFSET, SAB_I_REQ, SAB_I_PUB, SAB_I_SIGNALS, SAB_I_TIMERS, SAB_STATE_IDLE, SAB_STATE_PENDING, SAB_STATE_READY, SAB_STATUS_BYTES, SAB_STATUS_JSON, SAB_STATUS_VOID, SAB_STATUS_ERRNO, SAB_DEFAULT_WINDOW_BYTES, SAB_MIN_BYTES, SYNC_SAB_REQ_MSG, SYNC_SAB_NEXT_MSG, encoder, decoder;
738
738
  var init_sync_sab_wire = __esm({
739
739
  "src/realm/sync-sab-wire.ts"() {
740
740
  "use strict";
@@ -746,6 +746,8 @@ var init_sync_sab_wire = __esm({
746
746
  SAB_I_TOTAL = 3;
747
747
  SAB_I_CHUNK = 4;
748
748
  SAB_I_OFFSET = 5;
749
+ SAB_I_REQ = 6;
750
+ SAB_I_PUB = 7;
749
751
  SAB_I_SIGNALS = 8;
750
752
  SAB_I_TIMERS = 9;
751
753
  SAB_STATE_IDLE = 0;
@@ -773,15 +775,13 @@ function createSyncSabTransport(sab, port, deps = {}) {
773
775
  let seq = 0;
774
776
  function awaitReady(id, deadline, label) {
775
777
  for (; ; ) {
776
- const remaining = deadline - now();
777
- if (remaining <= 0) throw syncError("ETIMEDOUT", label);
778
- wait(header, SAB_I_STATE, SAB_STATE_PENDING, remaining);
778
+ const published = Atomics.load(header, SAB_I_PUB);
779
779
  if (Atomics.load(header, SAB_I_STATE) === SAB_STATE_READY && Atomics.load(header, SAB_I_SEQ) === id) {
780
780
  return;
781
781
  }
782
- if (Atomics.load(header, SAB_I_STATE) === SAB_STATE_READY) {
783
- Atomics.store(header, SAB_I_STATE, SAB_STATE_PENDING);
784
- }
782
+ const remaining = deadline - now();
783
+ if (remaining <= 0) throw syncError("ETIMEDOUT", label);
784
+ wait(header, SAB_I_PUB, published, remaining);
785
785
  }
786
786
  }
787
787
  return {
@@ -791,6 +791,7 @@ function createSyncSabTransport(sab, port, deps = {}) {
791
791
  let out = null;
792
792
  let status2 = 0;
793
793
  let offset = 0;
794
+ Atomics.store(header, SAB_I_REQ, id);
794
795
  try {
795
796
  for (; ; ) {
796
797
  Atomics.store(header, SAB_I_STATE, SAB_STATE_PENDING);
@@ -817,6 +818,7 @@ function createSyncSabTransport(sab, port, deps = {}) {
817
818
  if (chunk === 0) throw syncError("EIO", label);
818
819
  }
819
820
  } finally {
821
+ Atomics.store(header, SAB_I_REQ, 0);
820
822
  Atomics.store(header, SAB_I_STATE, SAB_STATE_IDLE);
821
823
  }
822
824
  return decodeSabResult(status2, out);