enable constant cache on ractors
constant cache IC is accessed by non-atomic manner and there are thread-safety issues, so Ruby 3.0 disables to use const cache on non-main ractors.
IC
This patch enables it by introducing imemo_constcache and allocates it by every re-fill of const cache like imemo_callcache. [Bug #17510]
imemo_constcache
imemo_callcache
Now IC only has one entry IC::entry and it points to iseq_inline_constant_cache_entry, managed by T_IMEMO object.
IC::entry
iseq_inline_constant_cache_entry
IC is atomic data structure so rb_mjit_before_vm_ic_update() and rb_mjit_after_vm_ic_update() is not needed.
rb_mjit_before_vm_ic_update()
rb_mjit_after_vm_ic_update()
enable constant cache on ractors
constant cache
ICis accessed by non-atomic manner and there arethread-safety issues, so Ruby 3.0 disables to use const cache on
non-main ractors.
This patch enables it by introducing
imemo_constcacheand allocatesit by every re-fill of const cache like
imemo_callcache.[Bug #17510]
Now
IConly has one entryIC::entryand it points toiseq_inline_constant_cache_entry, managed by T_IMEMO object.ICis atomic data structure sorb_mjit_before_vm_ic_update()andrb_mjit_after_vm_ic_update()is not needed.