mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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. |
||
|---|---|---|
| .. | ||
| array.h | ||
| bignum.h | ||
| bits.h | ||
| class.h | ||
| compar.h | ||
| compile.h | ||
| compilers.h | ||
| complex.h | ||
| cont.h | ||
| dir.h | ||
| enc.h | ||
| encoding.h | ||
| enum.h | ||
| enumerator.h | ||
| error.h | ||
| eval.h | ||
| file.h | ||
| fixnum.h | ||
| gc.h | ||
| hash.h | ||
| imemo.h | ||
| inits.h | ||
| io.h | ||
| load.h | ||
| loadpath.h | ||
| math.h | ||
| missing.h | ||
| numeric.h | ||
| object.h | ||
| parse.h | ||
| proc.h | ||
| process.h | ||
| random.h | ||
| range.h | ||
| rational.h | ||
| re.h | ||
| sanitizers.h | ||
| scheduler.h | ||
| serial.h | ||
| signal.h | ||
| static_assert.h | ||
| string.h | ||
| struct.h | ||
| symbol.h | ||
| thread.h | ||
| time.h | ||
| transcode.h | ||
| util.h | ||
| variable.h | ||
| vm.h | ||
| warnings.h | ||