< prev index next >

src/share/vm/gc/shared/cardTableModRefBS.cpp

Print this page




 483   // For product build verification
 484   guarantee(_byte_map[_guard_index] == last_card,
 485             "card table guard has been modified");
 486 }
 487 
 488 void CardTableModRefBS::verify() {
 489   verify_guard();
 490 }
 491 
 492 #ifndef PRODUCT
 493 void CardTableModRefBS::verify_region(MemRegion mr,
 494                                       jbyte val, bool val_equals) {
 495   jbyte* start    = byte_for(mr.start());
 496   jbyte* end      = byte_for(mr.last());
 497   bool failures = false;
 498   for (jbyte* curr = start; curr <= end; ++curr) {
 499     jbyte curr_val = *curr;
 500     bool failed = (val_equals) ? (curr_val != val) : (curr_val == val);
 501     if (failed) {
 502       if (!failures) {
 503         tty->cr();
 504         tty->print_cr("== CT verification failed: [" INTPTR_FORMAT "," INTPTR_FORMAT "]", p2i(start), p2i(end));
 505         tty->print_cr("==   %sexpecting value: %d",
 506                       (val_equals) ? "" : "not ", val);
 507         failures = true;
 508       }
 509       tty->print_cr("==   card " PTR_FORMAT " [" PTR_FORMAT "," PTR_FORMAT "], "
 510                     "val: %d", p2i(curr), p2i(addr_for(curr)),
 511                     p2i((HeapWord*) (((size_t) addr_for(curr)) + card_size)),
 512                     (int) curr_val);
 513     }
 514   }
 515   guarantee(!failures, "there should not have been any failures");
 516 }
 517 
 518 void CardTableModRefBS::verify_not_dirty_region(MemRegion mr) {
 519   verify_region(mr, dirty_card, false /* val_equals */);
 520 }
 521 
 522 void CardTableModRefBS::verify_dirty_region(MemRegion mr) {
 523   verify_region(mr, dirty_card, true /* val_equals */);
 524 }
 525 #endif
 526 
 527 void CardTableModRefBS::print_on(outputStream* st) const {
 528   st->print_cr("Card table byte_map: [" INTPTR_FORMAT "," INTPTR_FORMAT "] byte_map_base: " INTPTR_FORMAT,
 529                p2i(_byte_map), p2i(_byte_map + _byte_map_size), p2i(byte_map_base));
 530 }


 483   // For product build verification
 484   guarantee(_byte_map[_guard_index] == last_card,
 485             "card table guard has been modified");
 486 }
 487 
 488 void CardTableModRefBS::verify() {
 489   verify_guard();
 490 }
 491 
 492 #ifndef PRODUCT
 493 void CardTableModRefBS::verify_region(MemRegion mr,
 494                                       jbyte val, bool val_equals) {
 495   jbyte* start    = byte_for(mr.start());
 496   jbyte* end      = byte_for(mr.last());
 497   bool failures = false;
 498   for (jbyte* curr = start; curr <= end; ++curr) {
 499     jbyte curr_val = *curr;
 500     bool failed = (val_equals) ? (curr_val != val) : (curr_val == val);
 501     if (failed) {
 502       if (!failures) {
 503         log_error(gc, verify)("== CT verification failed: [" INTPTR_FORMAT "," INTPTR_FORMAT "]", p2i(start), p2i(end));
 504         log_error(gc, verify)("==   %sexpecting value: %d", (val_equals) ? "" : "not ", val);


 505         failures = true;
 506       }
 507       log_error(gc, verify)("==   card " PTR_FORMAT " [" PTR_FORMAT "," PTR_FORMAT "], val: %d",
 508                             p2i(curr), p2i(addr_for(curr)),
 509                             p2i((HeapWord*) (((size_t) addr_for(curr)) + card_size)),
 510                             (int) curr_val);
 511     }
 512   }
 513   guarantee(!failures, "there should not have been any failures");
 514 }
 515 
 516 void CardTableModRefBS::verify_not_dirty_region(MemRegion mr) {
 517   verify_region(mr, dirty_card, false /* val_equals */);
 518 }
 519 
 520 void CardTableModRefBS::verify_dirty_region(MemRegion mr) {
 521   verify_region(mr, dirty_card, true /* val_equals */);
 522 }
 523 #endif
 524 
 525 void CardTableModRefBS::print_on(outputStream* st) const {
 526   st->print_cr("Card table byte_map: [" INTPTR_FORMAT "," INTPTR_FORMAT "] byte_map_base: " INTPTR_FORMAT,
 527                p2i(_byte_map), p2i(_byte_map + _byte_map_size), p2i(byte_map_base));
 528 }
< prev index next >