< prev index next >

src/hotspot/share/gc/serial/serialFullGC.hpp

Print this page

130   static void follow_stack();   // Empty marking stack.
131 
132   template <class T> static void adjust_pointer(T* p);
133 
134   // Check mark and maybe push on marking stack
135   template <class T> static void mark_and_push(T* p);
136 
137  private:
138   // Mark live objects
139   static void phase1_mark(bool clear_all_softrefs);
140 
141   // Temporary data structures for traversal and storing/restoring marks
142   static void allocate_stacks();
143   static void deallocate_stacks();
144 
145   // Call backs for marking
146   static void mark_object(oop obj);
147   // Mark pointer and follow contents.  Empty marking stack afterwards.
148   template <class T> static inline void follow_root(T* p);
149 
150   static inline void push_objarray(oop obj, size_t index);
151 
152   static void follow_object(oop obj);
153 
154   static void follow_array(objArrayOop array);
155 
156   static void follow_array_chunk(objArrayOop array, int index);
157 };
158 
159 class MarkAndPushClosure: public ClaimMetadataVisitingOopIterateClosure {
160 public:
161   MarkAndPushClosure(int claim) : ClaimMetadataVisitingOopIterateClosure(claim) {}
162 
163   template <typename T> void do_oop_work(T* p);
164   virtual void do_oop(      oop* p);
165   virtual void do_oop(narrowOop* p);
166 
167   void set_ref_discoverer(ReferenceDiscoverer* rd) {
168     set_ref_discoverer_internal(rd);
169   }
170 };

130   static void follow_stack();   // Empty marking stack.
131 
132   template <class T> static void adjust_pointer(T* p);
133 
134   // Check mark and maybe push on marking stack
135   template <class T> static void mark_and_push(T* p);
136 
137  private:
138   // Mark live objects
139   static void phase1_mark(bool clear_all_softrefs);
140 
141   // Temporary data structures for traversal and storing/restoring marks
142   static void allocate_stacks();
143   static void deallocate_stacks();
144 
145   // Call backs for marking
146   static void mark_object(oop obj);
147   // Mark pointer and follow contents.  Empty marking stack afterwards.
148   template <class T> static inline void follow_root(T* p);
149 
150   static inline void push_objarray(objArrayOop obj, size_t index);
151 
152   static void follow_object(oop obj);
153 
154   static void follow_array(objArrayOop array);
155 
156   static void follow_array_chunk(objArrayOop array, int index);
157 };
158 
159 class MarkAndPushClosure: public ClaimMetadataVisitingOopIterateClosure {
160 public:
161   MarkAndPushClosure(int claim) : ClaimMetadataVisitingOopIterateClosure(claim) {}
162 
163   template <typename T> void do_oop_work(T* p);
164   virtual void do_oop(      oop* p);
165   virtual void do_oop(narrowOop* p);
166 
167   void set_ref_discoverer(ReferenceDiscoverer* rd) {
168     set_ref_discoverer_internal(rd);
169   }
170 };
< prev index next >