Skip to content
  • Koichi Sasada's avatar
    b93e16dc
    enable constant cache on ractors · b93e16dc
    Koichi Sasada authored
    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.
    
    This patch enables it by introducing `imemo_constcache` and allocates
    it by every re-fill of const cache like `imemo_callcache`.
    [Bug #17510]
    
    Now `IC` only has one entry `IC::entry` and it points to
    `iseq_inline_constant_cache_entry`, managed by T_IMEMO object.
    
    `IC` is atomic data structure so `rb_mjit_before_vm_ic_update()` and
    `rb_mjit_after_vm_ic_update()` is not needed.
    b93e16dc
    enable constant cache on ractors
    Koichi Sasada authored
    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.
    
    This patch enables it by introducing `imemo_constcache` and allocates
    it by every re-fill of const cache like `imemo_callcache`.
    [Bug #17510]
    
    Now `IC` only has one entry `IC::entry` and it points to
    `iseq_inline_constant_cache_entry`, managed by T_IMEMO object.
    
    `IC` is atomic data structure so `rb_mjit_before_vm_ic_update()` and
    `rb_mjit_after_vm_ic_update()` is not needed.
Loading