Speedup marking inter-region refs in 2-phase CC

Using card table to indicate objects with inter-regions references has
performance implications. Due to coarse-granularity of card-table,
it leads to excessive number of unneeded objects being re-visited. Also,
it forces calling Scan with true for kNoUnEvac as the distinction
between mutated objects and ones with inter-region references is lost.

A separate bitmap is introduced which is updated in the marking phase
during full-heap GC to track objects with inter-region references. Then,
in copying phase, this bitmap is scanned to re-visit such objects.

Test: art/test/testrunner/testrunner.py --target --runtime-option=-XX:DumpGCPerformanceOnShutdown
Bug: 112720851
Change-Id: Idd032c18ffdddc13c71668502ef1f53a19dcee71
4 files changed