comparison src/share/vm/gc_implementation/g1/concurrentMark.hpp @ 17950:8a140676873f

8040804: G1: Concurrent mark stuck in loop calling os::elapsedVTime() Reviewed-by: brutisso, tschatzl
author pliden
date Wed, 14 May 2014 14:32:23 +0200
parents 58fc1b1523dc
children 52b4284cb496 0982ec23da03
comparison
equal deleted inserted replaced
17949:487f09bf44e0 17950:8a140676873f
540 // method. So, this way, each task will spend very little time in 540 // method. So, this way, each task will spend very little time in
541 // claim_region() and is allowed to call the regular clock method 541 // claim_region() and is allowed to call the regular clock method
542 // frequently. 542 // frequently.
543 HeapRegion* claim_region(uint worker_id); 543 HeapRegion* claim_region(uint worker_id);
544 544
545 // It determines whether we've run out of regions to scan. 545 // It determines whether we've run out of regions to scan. Note that
546 bool out_of_regions() { return _finger == _heap_end; } 546 // the finger can point past the heap end in case the heap was expanded
547 // to satisfy an allocation without doing a GC. This is fine, because all
548 // objects in those regions will be considered live anyway because of
549 // SATB guarantees (i.e. their TAMS will be equal to bottom).
550 bool out_of_regions() { return _finger >= _heap_end; }
547 551
548 // Returns the task with the given id 552 // Returns the task with the given id
549 CMTask* task(int id) { 553 CMTask* task(int id) {
550 assert(0 <= id && id < (int) _active_tasks, 554 assert(0 <= id && id < (int) _active_tasks,
551 "task id not within active bounds"); 555 "task id not within active bounds");