ReviewOS

zig-utils/zig-js

GC relocation: rewrite Object prototype and property storage

#343
Closed chris opened this 9 days ago ·
9 days ago

Parent: #335 Depends on: #342 Roadmap: #144, #134

Implement the first Object relocation slice over the hot and property-storage graph.

Acceptance:

  • Rewrite [[Prototype]], inline/external named slots, dense elements, accessor get/set Values, accessor descriptor cells, and C API custom-accessor cells.
  • Preserve Shape and arena/backing metadata addresses.
  • Weak Map/Set element storage is excluded for the dedicated weak-state slice.
  • Rewrite happens only at the world-stopped commit boundary without property/element/backing locks.
  • Cover inline and external storage with distinct-target tests.
  • Focused normal and TSan runs report zero failures and leaks.
  • Production movement remains disabled and #335 is updated.
9 days ago

Implemented and pushed in c6016fe2.

Delivered:

  • rewrites Object prototype, inline/external named slots, non-weak dense elements, accessor getter/setter Values, accessor descriptor cells, and C API custom-accessor cells;
  • preserves Shape, storage wrapper, accessor map, element store, and C API owner addresses;
  • explicitly excludes WeakMap/WeakSet element storage for ordered weak processing;
  • world-stopped rewrite takes no backing/property/element locks;
  • regression covers inline and external property layouts with distinct targets.

Local gates:

  • filtered normal: 3/3 passed, 0 failed, 0 leaked;
  • filtered TSan: 3/3 passed, 0 failed, 0 leaked.

Production movement remains disabled. Keeping this open only for descendant full GitHub Actions evidence.

9 days ago

Completed and accepted. The implementation-specific local evidence is recorded above, and descendant full CI at https://github.com/zig-utils/zig-js/actions/runs/29716788619 completed with 42 successful jobs, one intentional nightly skip, zero failures, and zero cancellations.

Sign in to comment on this issue.