< prev index next >

src/share/vm/gc/cms/cmsOopClosures.hpp

Print this page
rev 11970 : imported patch base_volatiles


 248 
 249   // Deal with a stack overflow condition
 250   void handle_stack_overflow(HeapWord* lost);
 251  private:
 252   inline void do_yield_check();
 253 };
 254 
 255 // A parallel (MT) version of the above.
 256 // This closure is used during the concurrent marking phase
 257 // following the first checkpoint. Its use is buried in
 258 // the closure ParMarkFromRootsClosure.
 259 class ParPushOrMarkClosure: public MetadataAwareOopClosure {
 260  private:
 261   CMSCollector*    _collector;
 262   MemRegion        _whole_span;
 263   MemRegion        _span;        // local chunk
 264   CMSBitMap*       _bit_map;
 265   OopTaskQueue*    _work_queue;
 266   CMSMarkStack*    _overflow_stack;
 267   HeapWord*  const _finger;
 268   HeapWord** const _global_finger_addr;
 269   ParMarkFromRootsClosure* const
 270                    _parent;
 271  protected:
 272   DO_OOP_WORK_DEFN
 273  public:
 274   ParPushOrMarkClosure(CMSCollector* cms_collector,
 275                        MemRegion span,
 276                        CMSBitMap* bit_map,
 277                        OopTaskQueue* work_queue,
 278                        CMSMarkStack* mark_stack,
 279                        HeapWord* finger,
 280                        HeapWord** global_finger_addr,
 281                        ParMarkFromRootsClosure* parent);
 282   virtual void do_oop(oop* p);
 283   virtual void do_oop(narrowOop* p);
 284   inline void do_oop_nv(oop* p);
 285   inline void do_oop_nv(narrowOop* p);
 286 
 287   // Deal with a stack overflow condition
 288   void handle_stack_overflow(HeapWord* lost);
 289  private:
 290   inline void do_yield_check();
 291 };
 292 
 293 // For objects in CMS generation, this closure marks
 294 // given objects (transitively) as being reachable/live.
 295 // This is currently used during the (weak) reference object
 296 // processing phase of the CMS final checkpoint step, as
 297 // well as during the concurrent precleaning of the discovered
 298 // reference lists.
 299 class CMSKeepAliveClosure: public MetadataAwareOopClosure {
 300  private:




 248 
 249   // Deal with a stack overflow condition
 250   void handle_stack_overflow(HeapWord* lost);
 251  private:
 252   inline void do_yield_check();
 253 };
 254 
 255 // A parallel (MT) version of the above.
 256 // This closure is used during the concurrent marking phase
 257 // following the first checkpoint. Its use is buried in
 258 // the closure ParMarkFromRootsClosure.
 259 class ParPushOrMarkClosure: public MetadataAwareOopClosure {
 260  private:
 261   CMSCollector*                  _collector;
 262   MemRegion                      _whole_span;
 263   MemRegion                      _span;       // local chunk
 264   CMSBitMap*                     _bit_map;
 265   OopTaskQueue*                  _work_queue;
 266   CMSMarkStack*                  _overflow_stack;
 267   HeapWord*  const               _finger;
 268   HeapWord* volatile* const      _global_finger_addr;
 269   ParMarkFromRootsClosure* const _parent;

 270  protected:
 271   DO_OOP_WORK_DEFN
 272  public:
 273   ParPushOrMarkClosure(CMSCollector* cms_collector,
 274                        MemRegion span,
 275                        CMSBitMap* bit_map,
 276                        OopTaskQueue* work_queue,
 277                        CMSMarkStack* mark_stack,
 278                        HeapWord* finger,
 279                        HeapWord* volatile* global_finger_addr,
 280                        ParMarkFromRootsClosure* parent);
 281   virtual void do_oop(oop* p);
 282   virtual void do_oop(narrowOop* p);
 283   inline void do_oop_nv(oop* p);
 284   inline void do_oop_nv(narrowOop* p);
 285 
 286   // Deal with a stack overflow condition
 287   void handle_stack_overflow(HeapWord* lost);
 288  private:
 289   inline void do_yield_check();
 290 };
 291 
 292 // For objects in CMS generation, this closure marks
 293 // given objects (transitively) as being reachable/live.
 294 // This is currently used during the (weak) reference object
 295 // processing phase of the CMS final checkpoint step, as
 296 // well as during the concurrent precleaning of the discovered
 297 // reference lists.
 298 class CMSKeepAliveClosure: public MetadataAwareOopClosure {
 299  private:


< prev index next >