28 #include "gc_implementation/g1/heapRegionSets.hpp" |
28 #include "gc_implementation/g1/heapRegionSets.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> CMTaskQueue; |
33 typedef GenericTaskQueue<oop, mtGC> CMTaskQueue; |
34 typedef GenericTaskQueueSet<CMTaskQueue> CMTaskQueueSet; |
34 typedef GenericTaskQueueSet<CMTaskQueue, mtGC> CMTaskQueueSet; |
35 |
35 |
36 // Closure used by CM during concurrent reference discovery |
36 // Closure used by CM during concurrent reference discovery |
37 // and reference processing (during remarking) to determine |
37 // and reference processing (during remarking) to determine |
38 // if a particular object is alive. It is primarily used |
38 // if a particular object is alive. It is primarily used |
39 // to determine if referents of discovered reference objects |
39 // to determine if referents of discovered reference objects |
341 bool wait_until_scan_finished(); |
341 bool wait_until_scan_finished(); |
342 }; |
342 }; |
343 |
343 |
344 class ConcurrentMarkThread; |
344 class ConcurrentMarkThread; |
345 |
345 |
346 class ConcurrentMark : public CHeapObj { |
346 class ConcurrentMark: public CHeapObj<mtGC> { |
347 friend class ConcurrentMarkThread; |
347 friend class ConcurrentMarkThread; |
348 friend class CMTask; |
348 friend class CMTask; |
349 friend class CMBitMapClosure; |
349 friend class CMBitMapClosure; |
350 friend class CMGlobalObjectClosure; |
350 friend class CMGlobalObjectClosure; |
351 friend class CMRemarkTask; |
351 friend class CMRemarkTask; |