Tracking issue for #6759 Phase C (shape tree), per the parent issue's "own tracking issue + design review" gate.
Design doc: docs/shape-tree-plan.md, landing in #6797 — review of that doc is the design review. Core thesis: a shared keys_array already IS a shape (mutation always forks), the transition cache already IS the edge set, and typed_feedback/read-plan/wide-index already key on keys_array identity — Phase C promotes this to first-class Shape records and re-points consumers rung by rung.
Ladder (each rung lands independently behind green suites):
Acceptance (from #6759): read/write/define/in/Object.keys within ~1.5× node across the micro suite; babel-class module init ≤2× node.
Known hard problems (doc §risks): class instances with keys_array == null (fourth shape representation, no array to key on); enumeration-order preservation through C4; per-thread shape tables on workers.
Prerequisites: #6795 (Phase A), #6796 (Phase B).
Tracking issue for #6759 Phase C (shape tree), per the parent issue's "own tracking issue + design review" gate.
Design doc:
docs/shape-tree-plan.md, landing in #6797 — review of that doc is the design review. Core thesis: a sharedkeys_arrayalready IS a shape (mutation always forks), the transition cache already IS the edge set, andtyped_feedback/read-plan/wide-index already key on keys_array identity — Phase C promotes this to first-classShaperecords and re-points consumers rung by rung.Ladder (each rung lands independently behind green suites):
KEYS_INDEX+ 4-entryWIDE_KEY_INDEXLRU → perf(runtime): #6759 Phase C1 — first-class Shape records keyed on keys_array identity (+ Phase C design doc) #6797metarecord)class_id/ literal shape ids / keys_array identity; codegen ICs + prop plans compare shape ids;keys_arraydemoted to a shape-owned enumeration artifact. Subsumes FIELD_CACHE, transition cache, read prop-plan. Own design review before landing (touches codegen + GC + every object path).metarecord, off the transition systemobject_get/set_by_name,class_field_get/set,method_direct_call) vet one exact shape id instead of re-deriving getter/setter/descriptor/prototype facts per call; representation-change invalidation gated on "shape actually changed"Acceptance (from #6759): read/write/define/
in/Object.keyswithin ~1.5× node across the micro suite; babel-class module init ≤2× node.Known hard problems (doc §risks): class instances with
keys_array == null(fourth shape representation, no array to key on); enumeration-order preservation through C4; per-thread shape tables on workers.Prerequisites: #6795 (Phase A), #6796 (Phase B).