summaryrefslogtreecommitdiff
path: root/range.c
diff options
context:
space:
mode:
authorAlan Wu <[email protected]>2025-03-16 16:00:08 -0400
committerGitHub <[email protected]>2025-03-16 16:00:08 -0400
commit3e04f7b69fb56eac88b56f491b6a298fcc28b7f9 (patch)
tree6c76547860d811f11b1878a762c6b2166639b52d /range.c
parent70a9e5f6eb42cb1badba13d118f3c0d4106a3fe1 (diff)
Only mark `cc->cme_` on valid imemo_callcache
We observed T_NONE on `cc->cme_` on a --repeat-count=50 run a compaction test on CI: http://ci.rvm.jp/results/trunk-repeat50@ruby-sp2-noble-docker/5654900 During reference updating for imemo_callcache in rb_imemo_mark_and_move(), if `cc->klass` is not live, but `cc->_cme` is live and moved, we go to the vm_cc_invalidate() path which leaves `cc->_cme` not updated and stale. In the next marking run after compaction, CME would've become a T_NONE. So to quote the comment above "... cc is invalidated by `vm_cc_invalidate()` and cc->cme is not be accessed."
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/12936 Merged-By: XrXr
Diffstat (limited to 'range.c')
0 files changed, 0 insertions, 0 deletions