247 // Cast away const 248 ((Generation*)this)->space_iterate(&blk); 249 return blk.is_obj; 250 } 251 252 class GenerationOopIterateClosure : public SpaceClosure { 253 public: 254 OopIterateClosure* _cl; 255 virtual void do_space(Space* s) { 256 s->oop_iterate(_cl); 257 } 258 GenerationOopIterateClosure(OopIterateClosure* cl) : 259 _cl(cl) {} 260 }; 261 262 void Generation::oop_iterate(OopIterateClosure* cl) { 263 GenerationOopIterateClosure blk(cl); 264 space_iterate(&blk); 265 } 266 267 void Generation::younger_refs_in_space_iterate(Space* sp, 268 OopsInGenClosure* cl, 269 uint n_threads) { 270 CardTableRS* rs = GenCollectedHeap::heap()->rem_set(); 271 rs->younger_refs_in_space_iterate(sp, cl, n_threads); 272 } 273 274 class GenerationObjIterateClosure : public SpaceClosure { 275 private: 276 ObjectClosure* _cl; 277 public: 278 virtual void do_space(Space* s) { 279 s->object_iterate(_cl); 280 } 281 GenerationObjIterateClosure(ObjectClosure* cl) : _cl(cl) {} 282 }; 283 284 void Generation::object_iterate(ObjectClosure* cl) { 285 GenerationObjIterateClosure blk(cl); 286 space_iterate(&blk); 287 } 288 289 #if INCLUDE_SERIALGC 290 291 void Generation::prepare_for_compaction(CompactPoint* cp) { 292 // Generic implementation, can be specialized 293 CompactibleSpace* space = first_compaction_space(); | 247 // Cast away const 248 ((Generation*)this)->space_iterate(&blk); 249 return blk.is_obj; 250 } 251 252 class GenerationOopIterateClosure : public SpaceClosure { 253 public: 254 OopIterateClosure* _cl; 255 virtual void do_space(Space* s) { 256 s->oop_iterate(_cl); 257 } 258 GenerationOopIterateClosure(OopIterateClosure* cl) : 259 _cl(cl) {} 260 }; 261 262 void Generation::oop_iterate(OopIterateClosure* cl) { 263 GenerationOopIterateClosure blk(cl); 264 space_iterate(&blk); 265 } 266 267 class GenerationObjIterateClosure : public SpaceClosure { 268 private: 269 ObjectClosure* _cl; 270 public: 271 virtual void do_space(Space* s) { 272 s->object_iterate(_cl); 273 } 274 GenerationObjIterateClosure(ObjectClosure* cl) : _cl(cl) {} 275 }; 276 277 void Generation::object_iterate(ObjectClosure* cl) { 278 GenerationObjIterateClosure blk(cl); 279 space_iterate(&blk); 280 } 281 282 #if INCLUDE_SERIALGC 283 284 void Generation::prepare_for_compaction(CompactPoint* cp) { 285 // Generic implementation, can be specialized 286 CompactibleSpace* space = first_compaction_space(); |