Skip to content

Write barrier insertion policy

Ensure Go-style concurrent GC remains correct during pointer writes.

  • Barrier semantics are owned by runtime memory model policy.
  • Lowering is responsible for inserting barrier calls at required write sites.
  • Backend choice (JIT/AOT) must not change barrier insertion semantics.
  • Insertion barrier (Dijkstra-style).
  • On pointer write, mark/gray the target before store completes.
  • Heap field stores (obj.field = ptr).
  • Array element stores (arr[i] = ptr).
  • Captured environment updates in closures.
  • Emit a runtime builtin call: gc_write_barrier(dst, value).
  • Perform barrier before the store.
  • Stores of non-pointer values.
  • Stack-only locals (no heap escape).
  • Pointer/non-pointer typing for each field.
  • Escape analysis to distinguish stack vs heap objects.
  • Defining GC pacing or collector phase transitions.
  • Defining language-level mutability or borrow semantics.