788 HeapWord* p = bottom(); |
788 HeapWord* p = bottom(); |
789 HeapWord* prev_p = NULL; |
789 HeapWord* prev_p = NULL; |
790 int objs = 0; |
790 int objs = 0; |
791 int blocks = 0; |
791 int blocks = 0; |
792 VerifyLiveClosure vl_cl(g1, use_prev_marking); |
792 VerifyLiveClosure vl_cl(g1, use_prev_marking); |
|
793 bool is_humongous = isHumongous(); |
|
794 size_t object_num = 0; |
793 while (p < top()) { |
795 while (p < top()) { |
794 size_t size = oop(p)->size(); |
796 size_t size = oop(p)->size(); |
|
797 if (is_humongous != g1->isHumongous(size)) { |
|
798 gclog_or_tty->print_cr("obj "PTR_FORMAT" is of %shumongous size (" |
|
799 SIZE_FORMAT" words) in a %shumongous region", |
|
800 p, g1->isHumongous(size) ? "" : "non-", |
|
801 size, is_humongous ? "" : "non-"); |
|
802 *failures = true; |
|
803 } |
|
804 object_num += 1; |
795 if (blocks == BLOCK_SAMPLE_INTERVAL) { |
805 if (blocks == BLOCK_SAMPLE_INTERVAL) { |
796 HeapWord* res = block_start_const(p + (size/2)); |
806 HeapWord* res = block_start_const(p + (size/2)); |
797 if (p != res) { |
807 if (p != res) { |
798 gclog_or_tty->print_cr("offset computation 1 for "PTR_FORMAT" and " |
808 gclog_or_tty->print_cr("offset computation 1 for "PTR_FORMAT" and " |
799 SIZE_FORMAT" returned "PTR_FORMAT, |
809 SIZE_FORMAT" returned "PTR_FORMAT, |
855 *failures = true; |
865 *failures = true; |
856 return; |
866 return; |
857 } |
867 } |
858 } |
868 } |
859 |
869 |
|
870 if (is_humongous && object_num > 1) { |
|
871 gclog_or_tty->print_cr("region ["PTR_FORMAT","PTR_FORMAT"] is humongous " |
|
872 "but has "SIZE_FORMAT", objects", |
|
873 bottom(), end(), object_num); |
|
874 *failures = true; |
|
875 } |
|
876 |
860 if (p != top()) { |
877 if (p != top()) { |
861 gclog_or_tty->print_cr("end of last object "PTR_FORMAT" " |
878 gclog_or_tty->print_cr("end of last object "PTR_FORMAT" " |
862 "does not match top "PTR_FORMAT, p, top()); |
879 "does not match top "PTR_FORMAT, p, top()); |
863 *failures = true; |
880 *failures = true; |
864 return; |
881 return; |