Reserve marking register for all GCs
Nterp relies on marking register to know if GC is happening. This is why
from the beginning nterp was enabled only if kUseReadBarrier was true.
Now, with userfaultfd GC merged in, this requirement hasn't changed. But
since userfaultfd GC is able to run even when marking register is
reserved, we allow nterp to be used with it. However, if at build time
read-barrier was disabled (using ART_USE_READ_BARRIER=false), then there
is no way to use nterp. This CL fixes this situation by reserving
marking register (and refreshing it) for every GC configuration.
This CL also puts back logic that was earlier taken away in the
userfaultfd GC to allow SS and CMS GCs to be used.
Test: ART_DEFAULT_GC_TYPE=SS ART_USE_READ_BARRIER=false art/test/testrunner/testrunner.py
--host --debug -bv
Test: Golem
Bug: 244737154
Change-Id: Ief336b9f39156571b7cd98d3d7f997eb82cd14c3
10 files changed