56
57 virtual void do_oop(oop* p);
58 virtual void do_oop(narrowOop* p);
59 };
60
61 class G1MarkAndPushClosure : public ClaimMetadataVisitingOopIterateClosure {
62 G1FullGCMarker* _marker;
63 uint _worker_id;
64
65 public:
66 G1MarkAndPushClosure(uint worker_id, G1FullGCMarker* marker, int claim, ReferenceDiscoverer* ref) :
67 ClaimMetadataVisitingOopIterateClosure(claim, ref),
68 _marker(marker),
69 _worker_id(worker_id) { }
70
71 template <class T> inline void do_oop_work(T* p);
72 virtual void do_oop(oop* p);
73 virtual void do_oop(narrowOop* p);
74 };
75
76 class G1AdjustClosure : public BasicOopIterateClosure {
77 G1FullCollector* _collector;
78
79 template <class T> inline void adjust_pointer(T* p);
80 public:
81 G1AdjustClosure(G1FullCollector* collector) : _collector(collector) { }
82 template <class T> void do_oop_work(T* p) { adjust_pointer(p); }
83 virtual void do_oop(oop* p);
84 virtual void do_oop(narrowOop* p);
85
86 virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
87 };
88
89 class G1FollowStackClosure: public VoidClosure {
90 G1FullGCMarker* _marker;
91
92 public:
93 G1FollowStackClosure(G1FullGCMarker* marker) : _marker(marker) {}
94 virtual void do_void();
95 };
|
56
57 virtual void do_oop(oop* p);
58 virtual void do_oop(narrowOop* p);
59 };
60
61 class G1MarkAndPushClosure : public ClaimMetadataVisitingOopIterateClosure {
62 G1FullGCMarker* _marker;
63 uint _worker_id;
64
65 public:
66 G1MarkAndPushClosure(uint worker_id, G1FullGCMarker* marker, int claim, ReferenceDiscoverer* ref) :
67 ClaimMetadataVisitingOopIterateClosure(claim, ref),
68 _marker(marker),
69 _worker_id(worker_id) { }
70
71 template <class T> inline void do_oop_work(T* p);
72 virtual void do_oop(oop* p);
73 virtual void do_oop(narrowOop* p);
74 };
75
76 template <bool ALT_FWD>
77 class G1AdjustClosure : public BasicOopIterateClosure {
78 G1FullCollector* _collector;
79
80 template <class T> inline void adjust_pointer(T* p);
81 public:
82 G1AdjustClosure(G1FullCollector* collector) : _collector(collector) { }
83 template <class T> void do_oop_work(T* p) { adjust_pointer(p); }
84 virtual void do_oop(oop* p);
85 virtual void do_oop(narrowOop* p);
86
87 virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
88 };
89
90 class G1FollowStackClosure: public VoidClosure {
91 G1FullGCMarker* _marker;
92
93 public:
94 G1FollowStackClosure(G1FullGCMarker* marker) : _marker(marker) {}
95 virtual void do_void();
96 };
|