src/share/vm/gc_implementation/g1/concurrentMark.hpp

Print this page
rev 6346 : 8040804: G1: Concurrent mark stuck in loop calling os::elapsedVTime()
Reviewed-by: TBD

*** 540,551 **** // method. So, this way, each task will spend very little time in // claim_region() and is allowed to call the regular clock method // frequently. HeapRegion* claim_region(uint worker_id); ! // It determines whether we've run out of regions to scan ! bool out_of_regions() { return _finger == _heap_end; } // Returns the task with the given id CMTask* task(int id) { assert(0 <= id && id < (int) _active_tasks, "task id not within active bounds"); --- 540,555 ---- // method. So, this way, each task will spend very little time in // claim_region() and is allowed to call the regular clock method // frequently. HeapRegion* claim_region(uint worker_id); ! // It determines whether we've run out of regions to scan. Note that ! // the finger can point past the heap end in case the heap was expanded ! // to satisfy an allocation without doing a GC. This is fine, because all ! // objects in those regions will be considered live anyway because of ! // SATB guarantees (i.e. their TAMS will be equal to bottom). ! bool out_of_regions() { return _finger >= _heap_end; } // Returns the task with the given id CMTask* task(int id) { assert(0 <= id && id < (int) _active_tasks, "task id not within active bounds");