61 |
61 |
62 class MarkAndPushClosure: public OopClosure { |
62 class MarkAndPushClosure: public OopClosure { |
63 public: |
63 public: |
64 virtual void do_oop(oop* p); |
64 virtual void do_oop(oop* p); |
65 virtual void do_oop(narrowOop* p); |
65 virtual void do_oop(narrowOop* p); |
66 }; |
|
67 |
|
68 // The one and only place to start following the classes. |
|
69 // Should only be applied to the ClassLoaderData klasses list. |
|
70 class FollowKlassClosure : public KlassClosure { |
|
71 public: |
|
72 void do_klass(Klass* klass); |
|
73 }; |
|
74 class AdjustKlassClosure : public KlassClosure { |
|
75 public: |
|
76 void do_klass(Klass* klass); |
|
77 }; |
66 }; |
78 |
67 |
79 class FollowStackClosure: public VoidClosure { |
68 class FollowStackClosure: public VoidClosure { |
80 public: |
69 public: |
81 virtual void do_void(); |
70 virtual void do_void(); |
142 public: |
131 public: |
143 // Public closures |
132 // Public closures |
144 static IsAliveClosure is_alive; |
133 static IsAliveClosure is_alive; |
145 static FollowRootClosure follow_root_closure; |
134 static FollowRootClosure follow_root_closure; |
146 static MarkAndPushClosure mark_and_push_closure; |
135 static MarkAndPushClosure mark_and_push_closure; |
147 static FollowKlassClosure follow_klass_closure; |
|
148 static FollowStackClosure follow_stack_closure; |
136 static FollowStackClosure follow_stack_closure; |
|
137 static CLDToOopClosure follow_cld_closure; |
149 static AdjustPointerClosure adjust_pointer_closure; |
138 static AdjustPointerClosure adjust_pointer_closure; |
150 static AdjustKlassClosure adjust_klass_closure; |
139 static CLDToOopClosure adjust_cld_closure; |
151 |
140 |
152 // Accessors |
141 // Accessors |
153 static uint total_invocations() { return _total_invocations; } |
142 static uint total_invocations() { return _total_invocations; } |
154 |
143 |
155 // Reference Processing |
144 // Reference Processing |