@@ -219,14 +219,14 @@ class G1CMMarkStack {
219219// Typically they contain the areas from TAMS to top of the regions.
220220// We could scan and mark through these objects during the concurrent start pause,
221221// but for pause time reasons we move this work to the concurrent phase.
222- // We need to complete this procedure before the next GC because it might determine
223- // that some of these "root objects" are dead, potentially dropping some required
224- // references.
222+ // We need to complete this procedure before we can evacuate a particular region
223+ // because evacuation might determine that some of these "root objects" are dead,
224+ // potentially dropping some required references.
225225// Root MemRegions comprise of the contents of survivor regions at the end
226226// of the GC, and any objects copied into the old gen during GC.
227227class G1CMRootMemRegions {
228228 // The set of root MemRegions.
229- MemRegion* _root_regions;
229+ MemRegion* _root_regions;
230230 size_t const _max_regions;
231231
232232 volatile size_t _num_root_regions; // Actual number of root regions.
@@ -557,6 +557,7 @@ class G1ConcurrentMark : public CHeapObj<mtGC> {
557557 void scan_root_regions ();
558558 bool wait_until_root_region_scan_finished ();
559559 void add_root_region (HeapRegion* r);
560+ void root_region_scan_abort_and_wait ();
560561
561562private:
562563 G1CMRootMemRegions* root_regions () { return &_root_regions; }
0 commit comments