summaryrefslogtreecommitdiff
path: root/spec/ruby/library/zlib/gzipfile/finish_spec.rb
diff options
context:
space:
mode:
authorDaichi Kamiyama <32436625+dak2@users.noreply.github.com>2026-06-09 23:54:44 +0900
committerGitHub <noreply@github.com>2026-06-09 14:54:44 +0000
commit065623ab7ace52b34ee5a8c1f32b269ea808c9b6 (patch)
tree9fff7cbd7bd5bb831683c2aa52c50f5cbc60b091 /spec/ruby/library/zlib/gzipfile/finish_spec.rb
parenta8f5969016757ed73e6e2e5e1b5d0e42b27417a9 (diff)
ZJIT: Fix polymorphic_summary to chase guards on profile entries (#17238)HEADmaster
## Summary Using `chase_insn` instead of `find_const` in `polymorphic_summary`. ## Why When an ivar instruction is specialized, `self` is reassigned to a GuardType/RefineType wrapper, and profiling records that wrapper. The second-and-later polymorphic ivar/`defined?` on the same `self` therefore had its entry recorded against the wrapper, which `find_const` can't peel. So `polymorphic_summary` returned `None` and fell back to a generic `DefinedIvar`/`GetIvar`/`SetIvar` instead of inline shape branches. ## Benchmarks ``` Bench (arm64 linux devcontainer, ruby/ruby-bench, warmup=10 bench=20) master = HEAD 925fa46811 staged = master + patch (hir.rs: find_const→chase_insn) Throughput master/staged lobsters 0.970 (-3.0%, within ±2-9% noise) railsbench 1.017 (+1.7%, within ±2-5% noise) --zjit-stats lobsters / railsbench (staged vs master, %diff) code_region_bytes +0.5% / +0.1% guard_type_count -1.0% / -0.0% compile_hir_time_ns +3.7% / +4.7% invalidation_time_ns +4.1% / -1.6% ```
Diffstat (limited to 'spec/ruby/library/zlib/gzipfile/finish_spec.rb')
0 files changed, 0 insertions, 0 deletions