272 uint n_threads) { 273 CardTableRS* rs = GenCollectedHeap::heap()->rem_set(); 274 rs->younger_refs_in_space_iterate(sp, cl, n_threads); 275 } 276 277 class GenerationObjIterateClosure : public SpaceClosure { 278 private: 279 ObjectClosure* _cl; 280 public: 281 virtual void do_space(Space* s) { 282 s->object_iterate(_cl); 283 } 284 GenerationObjIterateClosure(ObjectClosure* cl) : _cl(cl) {} 285 }; 286 287 void Generation::object_iterate(ObjectClosure* cl) { 288 GenerationObjIterateClosure blk(cl); 289 space_iterate(&blk); 290 } 291 292 class GenerationSafeObjIterateClosure : public SpaceClosure { 293 private: 294 ObjectClosure* _cl; 295 public: 296 virtual void do_space(Space* s) { 297 s->safe_object_iterate(_cl); 298 } 299 GenerationSafeObjIterateClosure(ObjectClosure* cl) : _cl(cl) {} 300 }; 301 302 void Generation::safe_object_iterate(ObjectClosure* cl) { 303 GenerationSafeObjIterateClosure blk(cl); 304 space_iterate(&blk); 305 } 306 307 #if INCLUDE_SERIALGC 308 309 void Generation::prepare_for_compaction(CompactPoint* cp) { 310 // Generic implementation, can be specialized 311 CompactibleSpace* space = first_compaction_space(); 312 while (space != NULL) { 313 space->prepare_for_compaction(cp); 314 space = space->next_compaction_space(); 315 } 316 } 317 318 class AdjustPointersClosure: public SpaceClosure { 319 public: 320 void do_space(Space* sp) { 321 sp->adjust_pointers(); 322 } 323 }; 324 325 void Generation::adjust_pointers() { 326 // Note that this is done over all spaces, not just the compactible | 272 uint n_threads) { 273 CardTableRS* rs = GenCollectedHeap::heap()->rem_set(); 274 rs->younger_refs_in_space_iterate(sp, cl, n_threads); 275 } 276 277 class GenerationObjIterateClosure : public SpaceClosure { 278 private: 279 ObjectClosure* _cl; 280 public: 281 virtual void do_space(Space* s) { 282 s->object_iterate(_cl); 283 } 284 GenerationObjIterateClosure(ObjectClosure* cl) : _cl(cl) {} 285 }; 286 287 void Generation::object_iterate(ObjectClosure* cl) { 288 GenerationObjIterateClosure blk(cl); 289 space_iterate(&blk); 290 } 291 292 #if INCLUDE_SERIALGC 293 294 void Generation::prepare_for_compaction(CompactPoint* cp) { 295 // Generic implementation, can be specialized 296 CompactibleSpace* space = first_compaction_space(); 297 while (space != NULL) { 298 space->prepare_for_compaction(cp); 299 space = space->next_compaction_space(); 300 } 301 } 302 303 class AdjustPointersClosure: public SpaceClosure { 304 public: 305 void do_space(Space* sp) { 306 sp->adjust_pointers(); 307 } 308 }; 309 310 void Generation::adjust_pointers() { 311 // Note that this is done over all spaces, not just the compactible |