53 |
53 |
54 virtual void do_oop(oop* p); |
54 virtual void do_oop(oop* p); |
55 virtual void do_oop(narrowOop* p); |
55 virtual void do_oop(narrowOop* p); |
56 }; |
56 }; |
57 |
57 |
58 class G1MarkAndPushClosure : public ExtendedOopClosure { |
58 class G1MarkAndPushClosure : public OopIterateClosure { |
59 G1FullGCMarker* _marker; |
59 G1FullGCMarker* _marker; |
60 uint _worker_id; |
60 uint _worker_id; |
61 |
61 |
62 public: |
62 public: |
63 G1MarkAndPushClosure(uint worker, G1FullGCMarker* marker, ReferenceDiscoverer* ref) : |
63 G1MarkAndPushClosure(uint worker, G1FullGCMarker* marker, ReferenceDiscoverer* ref) : |
64 _marker(marker), |
64 _marker(marker), |
65 _worker_id(worker), |
65 _worker_id(worker), |
66 ExtendedOopClosure(ref) { } |
66 OopIterateClosure(ref) { } |
67 |
67 |
68 template <class T> inline void do_oop_nv(T* p); |
68 template <class T> inline void do_oop_work(T* p); |
69 virtual void do_oop(oop* p); |
69 virtual void do_oop(oop* p); |
70 virtual void do_oop(narrowOop* p); |
70 virtual void do_oop(narrowOop* p); |
71 |
71 |
72 virtual bool do_metadata(); |
72 virtual bool do_metadata(); |
73 bool do_metadata_nv(); |
|
74 |
|
75 virtual void do_klass(Klass* k); |
73 virtual void do_klass(Klass* k); |
76 void do_klass_nv(Klass* k); |
|
77 |
|
78 virtual void do_cld(ClassLoaderData* cld); |
74 virtual void do_cld(ClassLoaderData* cld); |
79 void do_cld_nv(ClassLoaderData* cld); |
|
80 }; |
75 }; |
81 |
76 |
82 class G1AdjustClosure : public ExtendedOopClosure { |
77 class G1AdjustClosure : public BasicOopIterateClosure { |
83 template <class T> static inline void adjust_pointer(T* p); |
78 template <class T> static inline void adjust_pointer(T* p); |
84 public: |
79 public: |
85 template <class T> void do_oop_nv(T* p) { adjust_pointer(p); } |
80 template <class T> void do_oop_work(T* p) { adjust_pointer(p); } |
86 virtual void do_oop(oop* p); |
81 virtual void do_oop(oop* p); |
87 virtual void do_oop(narrowOop* p); |
82 virtual void do_oop(narrowOop* p); |
88 |
83 |
89 virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; } |
84 virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; } |
90 }; |
85 }; |
105 } |
100 } |
106 |
101 |
107 bool failures() { return _failures; } |
102 bool failures() { return _failures; } |
108 void print_object(outputStream* out, oop obj); |
103 void print_object(outputStream* out, oop obj); |
109 |
104 |
110 template <class T> void do_oop_nv(T* p); |
105 template <class T> void do_oop_work(T* p); |
111 |
106 |
112 void do_oop(oop* p) { do_oop_nv(p); } |
107 void do_oop(oop* p) { do_oop_work(p); } |
113 void do_oop(narrowOop* p) { do_oop_nv(p); } |
108 void do_oop(narrowOop* p) { do_oop_work(p); } |
114 }; |
109 }; |
115 |
110 |
116 class G1FollowStackClosure: public VoidClosure { |
111 class G1FollowStackClosure: public VoidClosure { |
117 G1FullGCMarker* _marker; |
112 G1FullGCMarker* _marker; |
118 |
113 |