Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/6812-builder-fold.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
perf(hir): #6812 — straight-line builder sequences (`const o = {…}; o.k = v; …`) fold into the object literal they spell out before lowering, routing them through the anon-shape literal machinery (shape-cached keys, typed slots, direct stores) instead of N dynamic transition writes. The matrix's worst real-world row (fresh-object builds) improves 7.6× (186× → 25× vs node); conservative guards (`__proto__`, duplicates, accessor/spread literals, self-referencing values) keep the rewrite unobservable — a non-matching shape lowers exactly as before.
1 change: 1 addition & 0 deletions changelog.d/6812-clone-eligibility.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
perf(codegen): #6812 — widen whole-loop object-write clone eligibility: multiplication in numeric RHS (endpoint-product interval bounds), `let`-declared receiver aliases (reassignment is structurally impossible in the matched region), and the `let i = 0; while (i < N)` spelling of the counted inner loop. Three matrix rows move from 6–9× node to 0.62–0.75× (beating node); the emitter needed no changes — it already finalizes counter slots on the fast edge. Also restores the packed-f64 index-offset matcher's exact Add|Sub guard after a mis-scoped widening was caught pre-merge (multiplied-index sanity added to the validation set).
236 changes: 206 additions & 30 deletions crates/perry-codegen/src/stmt/loops.rs

Large diffs are not rendered by default.

Loading
Loading