equal
deleted
inserted
replaced
235 #define ContiguousSpaceDCTOC__walk_mem_region_with_cl_DEFN(ClosureType) \ |
235 #define ContiguousSpaceDCTOC__walk_mem_region_with_cl_DEFN(ClosureType) \ |
236 void ContiguousSpaceDCTOC::walk_mem_region_with_cl(MemRegion mr, \ |
236 void ContiguousSpaceDCTOC::walk_mem_region_with_cl(MemRegion mr, \ |
237 HeapWord* bottom, \ |
237 HeapWord* bottom, \ |
238 HeapWord* top, \ |
238 HeapWord* top, \ |
239 ClosureType* cl) { \ |
239 ClosureType* cl) { \ |
240 bottom += oop(bottom)->oop_iterate(cl, mr); \ |
240 bottom += oop(bottom)->oop_iterate_size(cl, mr); \ |
241 if (bottom < top) { \ |
241 if (bottom < top) { \ |
242 HeapWord* next_obj = bottom + oop(bottom)->size(); \ |
242 HeapWord* next_obj = bottom + oop(bottom)->size(); \ |
243 while (next_obj < top) { \ |
243 while (next_obj < top) { \ |
244 /* Bottom lies entirely below top, so we can call the */ \ |
244 /* Bottom lies entirely below top, so we can call the */ \ |
245 /* non-memRegion version of oop_iterate below. */ \ |
245 /* non-memRegion version of oop_iterate below. */ \ |
506 void ContiguousSpace::par_oop_iterate(MemRegion mr, OopClosureType* blk) {\ |
506 void ContiguousSpace::par_oop_iterate(MemRegion mr, OopClosureType* blk) {\ |
507 HeapWord* obj_addr = mr.start(); \ |
507 HeapWord* obj_addr = mr.start(); \ |
508 HeapWord* t = mr.end(); \ |
508 HeapWord* t = mr.end(); \ |
509 while (obj_addr < t) { \ |
509 while (obj_addr < t) { \ |
510 assert(oop(obj_addr)->is_oop(), "Should be an oop"); \ |
510 assert(oop(obj_addr)->is_oop(), "Should be an oop"); \ |
511 obj_addr += oop(obj_addr)->oop_iterate(blk); \ |
511 obj_addr += oop(obj_addr)->oop_iterate_size(blk); \ |
512 } \ |
512 } \ |
513 } |
513 } |
514 |
514 |
515 ALL_PAR_OOP_ITERATE_CLOSURES(ContigSpace_PAR_OOP_ITERATE_DEFN) |
515 ALL_PAR_OOP_ITERATE_CLOSURES(ContigSpace_PAR_OOP_ITERATE_DEFN) |
516 |
516 |
521 if (is_empty()) return; |
521 if (is_empty()) return; |
522 HeapWord* obj_addr = bottom(); |
522 HeapWord* obj_addr = bottom(); |
523 HeapWord* t = top(); |
523 HeapWord* t = top(); |
524 // Could call objects iterate, but this is easier. |
524 // Could call objects iterate, but this is easier. |
525 while (obj_addr < t) { |
525 while (obj_addr < t) { |
526 obj_addr += oop(obj_addr)->oop_iterate(blk); |
526 obj_addr += oop(obj_addr)->oop_iterate_size(blk); |
527 } |
527 } |
528 } |
528 } |
529 |
529 |
530 void ContiguousSpace::object_iterate(ObjectClosure* blk) { |
530 void ContiguousSpace::object_iterate(ObjectClosure* blk) { |
531 if (is_empty()) return; |
531 if (is_empty()) return; |
576 t = top(); \ |
576 t = top(); \ |
577 while (p < t) { \ |
577 while (p < t) { \ |
578 Prefetch::write(p, interval); \ |
578 Prefetch::write(p, interval); \ |
579 debug_only(HeapWord* prev = p); \ |
579 debug_only(HeapWord* prev = p); \ |
580 oop m = oop(p); \ |
580 oop m = oop(p); \ |
581 p += m->oop_iterate(blk); \ |
581 p += m->oop_iterate_size(blk); \ |
582 } \ |
582 } \ |
583 } while (t < top()); \ |
583 } while (t < top()); \ |
584 \ |
584 \ |
585 set_saved_mark_word(p); \ |
585 set_saved_mark_word(p); \ |
586 } |
586 } |