Skip to content

perf(codegen): getter arm only for declared getter names; one decline block per untyped index store - #11872

Merged
proggeramlug merged 3 commits into
mainfrom
perf-getter-arm-names
Oct 4, 2026
Merged

proggeramlug merged 3 commits into
mainfrom
perf-getter-arm-names

Conversation

@proggeramlug

@proggeramlug proggeramlug commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Refs #11784, Refs #10516.

main head
tsc binary 181.5 MB 173.4 MB
tsc instructions (n=5) — +0.09% (noise)
tsc full collections 238 238
RSS — +0.1%

Zod, qs, commander and hello are flat, and their output matches node. Matrix (583 cells): per-op averages fall (inherited −11, addkey −2.3); 68 cells are better and 45 worse by 2–6 instructions from register allocation and layout, with the same hit-path work. Runtime 4845/0 (--test-threads=1), codegen tests pass, and the getter/setter/accessor/class gap subset passes 163/163.

Ralph Küpper added 3 commits October 4, 2026 07:47
…mpiled class declares as a getter

The read site gets the gating the store site has had since the setter half: the runtime admits a getter entry only for an accessor some compiled class declares, so a read of any other name carried an arm it could never take. The compiled tsc workload drops 7.8 MB (181.5 MB to 173.7 MB).

Refs #11784
… runtime block

The typed-array tier (#5525) and the Array tier (#10513) of an untyped obj[i] = v each emitted their own decline: the admitted-Uint8Array byte arm (#10515) and the complete [[Set]] call. Both now branch to one block per site. No hit path changes; the compiled tsc workload drops 0.27 MB.

Refs #10516
@proggeramlug
proggeramlug merged commit 0a5bb47 into main Oct 4, 2026
23 of 24 checks passed
@proggeramlug
proggeramlug deleted the perf-getter-arm-names branch October 4, 2026 05:49
@coderabbitai

coderabbitai Bot commented Oct 4, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 0956a447-4ec4-485d-8cf6-a5e5bd8285ea
📥 Commits

Reviewing files that changed from the base of the PR and between 92cd17a and bb449a8.

📒 Files selected for processing (8)
  • changelog.d/PENDING-dynarr-one-decline.md
  • changelog.d/PENDING-getter-arm-names.md
  • crates/perry-codegen/src/codegen/opts.rs
  • crates/perry-codegen/src/expr/barrier_stem_census_tests.rs
  • crates/perry-codegen/src/expr/index_set_typed_array.rs
  • crates/perry-codegen/src/expr/mod.rs
  • crates/perry-codegen/src/expr/property_get/generic_dispatch.rs
  • crates/perry-codegen/src/expr/property_get/tests.rs
 _________________________________________________________________________________
< CodeRabbi is my uncle. He's a bit more orthodox. Feel lucky you got me instead. >
 ---------------------------------------------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant