src/share/vm/memory/cardTableModRefBS.cpp

changeset 1526
6aa7255741f3
parent 1375
8624da129f0b
child 1907
c18cbe5936b8
equal deleted inserted replaced
1525:fa357420e7d2 1526:6aa7255741f3
509 } 509 }
510 non_clean_card_iterate(sp, used_mr, dcto_cl, dcto_cl, clear); 510 non_clean_card_iterate(sp, used_mr, dcto_cl, dcto_cl, clear);
511 } 511 }
512 512
513 void CardTableModRefBS::dirty_MemRegion(MemRegion mr) { 513 void CardTableModRefBS::dirty_MemRegion(MemRegion mr) {
514 assert((HeapWord*)align_size_down((uintptr_t)mr.start(), HeapWordSize) == mr.start(), "Unaligned start");
515 assert((HeapWord*)align_size_up ((uintptr_t)mr.end(), HeapWordSize) == mr.end(), "Unaligned end" );
514 jbyte* cur = byte_for(mr.start()); 516 jbyte* cur = byte_for(mr.start());
515 jbyte* last = byte_after(mr.last()); 517 jbyte* last = byte_after(mr.last());
516 while (cur < last) { 518 while (cur < last) {
517 *cur = dirty_card; 519 *cur = dirty_card;
518 cur++; 520 cur++;
519 } 521 }
520 } 522 }
521 523
522 void CardTableModRefBS::invalidate(MemRegion mr, bool whole_heap) { 524 void CardTableModRefBS::invalidate(MemRegion mr, bool whole_heap) {
525 assert((HeapWord*)align_size_down((uintptr_t)mr.start(), HeapWordSize) == mr.start(), "Unaligned start");
526 assert((HeapWord*)align_size_up ((uintptr_t)mr.end(), HeapWordSize) == mr.end(), "Unaligned end" );
523 for (int i = 0; i < _cur_covered_regions; i++) { 527 for (int i = 0; i < _cur_covered_regions; i++) {
524 MemRegion mri = mr.intersection(_covered[i]); 528 MemRegion mri = mr.intersection(_covered[i]);
525 if (!mri.is_empty()) dirty_MemRegion(mri); 529 if (!mri.is_empty()) dirty_MemRegion(mri);
526 } 530 }
527 } 531 }

mercurial