diff options
author | Aaron Patterson <tenderlove@ruby-lang.org> | 2021-01-21 09:52:56 -0800 |
---|---|---|
committer | Aaron Patterson <tenderlove@ruby-lang.org> | 2021-01-21 09:55:18 -0800 |
commit | 0130e17a410d60a10e7041ce98748b8de6946971 (patch) | |
tree | 270030652712f35e7b7163ac2c2b80b883542adc /lib | |
parent | a3efbda7128ef20b55505b32d1608ea48f80af4a (diff) |
Always enabled read barrier even on GC.compact
Some objects can survive the GC before compaction, but get collected in
the second compaction. This means we could have objects reference
T_MOVED during "free" in the second, compacting GC. If that is the
case, we need to invalidate those "moved" addresses. Invalidation is
done via read barrier, so we need to make sure the read barrier is
active even during `GC.compact`.
This also means we don't actually need to do one GC before compaction,
we can just do the compaction and GC in one step.
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions