comparison src/share/vm/gc_implementation/g1/concurrentMark.hpp @ 18041:52b4284cb496

Merge with jdk8u20-b26
author Gilles Duboscq <duboscq@ssw.jku.at>
date Wed, 15 Oct 2014 16:02:50 +0200
parents 4ca6dc0799b6 8a140676873f
children 7848fc12602b
comparison
equal deleted inserted replaced
17606:45d7b2c7029d 18041:52b4284cb496
23 */ 23 */
24 24
25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP 25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP 26 #define SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP
27 27
28 #include "gc_implementation/g1/heapRegionSets.hpp" 28 #include "gc_implementation/g1/heapRegionSet.hpp"
29 #include "utilities/taskqueue.hpp" 29 #include "utilities/taskqueue.hpp"
30 30
31 class G1CollectedHeap; 31 class G1CollectedHeap;
32 class CMTask; 32 class CMTask;
33 typedef GenericTaskQueue<oop, mtGC> CMTaskQueue; 33 typedef GenericTaskQueue<oop, mtGC> CMTaskQueue;
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");