< prev index next >

src/hotspot/share/gc/shared/generation.cpp

Print this page




 236  public:
 237   const HeapWord* _p;
 238   bool is_obj;
 239   virtual void do_space(Space* s) {
 240     if (!is_obj && s->is_in_reserved(_p)) {
 241       is_obj |= s->block_is_obj(_p);
 242     }
 243   }
 244   GenerationBlockIsObjClosure(const HeapWord* p) { _p = p; is_obj = false; }
 245 };
 246 
 247 bool Generation::block_is_obj(const HeapWord* p) const {
 248   GenerationBlockIsObjClosure blk(p);
 249   // Cast away const
 250   ((Generation*)this)->space_iterate(&blk);
 251   return blk.is_obj;
 252 }
 253 
 254 class GenerationOopIterateClosure : public SpaceClosure {
 255  public:
 256   ExtendedOopClosure* _cl;
 257   virtual void do_space(Space* s) {
 258     s->oop_iterate(_cl);
 259   }
 260   GenerationOopIterateClosure(ExtendedOopClosure* cl) :
 261     _cl(cl) {}
 262 };
 263 
 264 void Generation::oop_iterate(ExtendedOopClosure* cl) {
 265   GenerationOopIterateClosure blk(cl);
 266   space_iterate(&blk);
 267 }
 268 
 269 void Generation::younger_refs_in_space_iterate(Space* sp,
 270                                                OopsInGenClosure* cl,
 271                                                uint n_threads) {
 272   CardTableRS* rs = GenCollectedHeap::heap()->rem_set();
 273   rs->younger_refs_in_space_iterate(sp, cl, n_threads);
 274 }
 275 
 276 class GenerationObjIterateClosure : public SpaceClosure {
 277  private:
 278   ObjectClosure* _cl;
 279  public:
 280   virtual void do_space(Space* s) {
 281     s->object_iterate(_cl);
 282   }
 283   GenerationObjIterateClosure(ObjectClosure* cl) : _cl(cl) {}
 284 };




 236  public:
 237   const HeapWord* _p;
 238   bool is_obj;
 239   virtual void do_space(Space* s) {
 240     if (!is_obj && s->is_in_reserved(_p)) {
 241       is_obj |= s->block_is_obj(_p);
 242     }
 243   }
 244   GenerationBlockIsObjClosure(const HeapWord* p) { _p = p; is_obj = false; }
 245 };
 246 
 247 bool Generation::block_is_obj(const HeapWord* p) const {
 248   GenerationBlockIsObjClosure blk(p);
 249   // Cast away const
 250   ((Generation*)this)->space_iterate(&blk);
 251   return blk.is_obj;
 252 }
 253 
 254 class GenerationOopIterateClosure : public SpaceClosure {
 255  public:
 256   OopIterateClosure* _cl;
 257   virtual void do_space(Space* s) {
 258     s->oop_iterate(_cl);
 259   }
 260   GenerationOopIterateClosure(OopIterateClosure* cl) :
 261     _cl(cl) {}
 262 };
 263 
 264 void Generation::oop_iterate(OopIterateClosure* cl) {
 265   GenerationOopIterateClosure blk(cl);
 266   space_iterate(&blk);
 267 }
 268 
 269 void Generation::younger_refs_in_space_iterate(Space* sp,
 270                                                OopsInGenClosure* cl,
 271                                                uint n_threads) {
 272   CardTableRS* rs = GenCollectedHeap::heap()->rem_set();
 273   rs->younger_refs_in_space_iterate(sp, cl, n_threads);
 274 }
 275 
 276 class GenerationObjIterateClosure : public SpaceClosure {
 277  private:
 278   ObjectClosure* _cl;
 279  public:
 280   virtual void do_space(Space* s) {
 281     s->object_iterate(_cl);
 282   }
 283   GenerationObjIterateClosure(ObjectClosure* cl) : _cl(cl) {}
 284 };


< prev index next >