20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_GC_CMS_PAROOPCLOSURES_HPP
26 #define SHARE_VM_GC_CMS_PAROOPCLOSURES_HPP
27
28 #include "gc/shared/genOopClosures.hpp"
29 #include "gc/shared/taskqueue.hpp"
30 #include "memory/padded.hpp"
31
32 // Closures for ParNewGeneration
33
34 class ParScanThreadState;
35 class ParNewGeneration;
36 typedef Padded<OopTaskQueue> ObjToScanQueue;
37 typedef GenericTaskQueueSet<ObjToScanQueue, mtGC> ObjToScanQueueSet;
38 class ParallelTaskTerminator;
39
40 class ParScanClosure: public OopsInKlassOrGenClosure {
41 protected:
42 ParScanThreadState* _par_scan_state;
43 ParNewGeneration* _g;
44 HeapWord* _boundary;
45 template <class T> void inline par_do_barrier(T* p);
46 template <class T> void inline do_oop_work(T* p,
47 bool gc_barrier,
48 bool root_scan);
49 public:
50 ParScanClosure(ParNewGeneration* g, ParScanThreadState* par_scan_state);
51 };
52
53 class ParScanWithBarrierClosure: public ParScanClosure {
54 public:
55 ParScanWithBarrierClosure(ParNewGeneration* g,
56 ParScanThreadState* par_scan_state) :
57 ParScanClosure(g, par_scan_state) {}
58 virtual void do_oop(oop* p);
59 virtual void do_oop(narrowOop* p);
60 inline void do_oop_nv(oop* p);
|
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_GC_CMS_PAROOPCLOSURES_HPP
26 #define SHARE_VM_GC_CMS_PAROOPCLOSURES_HPP
27
28 #include "gc/shared/genOopClosures.hpp"
29 #include "gc/shared/taskqueue.hpp"
30 #include "memory/padded.hpp"
31
32 // Closures for ParNewGeneration
33
34 class ParScanThreadState;
35 class ParNewGeneration;
36 typedef Padded<OopTaskQueue> ObjToScanQueue;
37 typedef GenericTaskQueueSet<ObjToScanQueue, mtGC> ObjToScanQueueSet;
38 class ParallelTaskTerminator;
39
40 class ParScanClosure: public OopsInClassLoaderDataOrGenClosure {
41 protected:
42 ParScanThreadState* _par_scan_state;
43 ParNewGeneration* _g;
44 HeapWord* _boundary;
45 template <class T> void inline par_do_barrier(T* p);
46 template <class T> void inline do_oop_work(T* p,
47 bool gc_barrier,
48 bool root_scan);
49 public:
50 ParScanClosure(ParNewGeneration* g, ParScanThreadState* par_scan_state);
51 };
52
53 class ParScanWithBarrierClosure: public ParScanClosure {
54 public:
55 ParScanWithBarrierClosure(ParNewGeneration* g,
56 ParScanThreadState* par_scan_state) :
57 ParScanClosure(g, par_scan_state) {}
58 virtual void do_oop(oop* p);
59 virtual void do_oop(narrowOop* p);
60 inline void do_oop_nv(oop* p);
|