811 } 812 } 813 } else { 814 log_error(gc, verify)(PTR_FORMAT " not an oop", p2i(obj)); 815 *failures = true; 816 return; 817 } 818 } 819 prev_p = p; 820 p += obj_size; 821 } 822 823 if (!is_young() && !is_empty()) { 824 _bot_part.verify(); 825 } 826 827 if (is_region_humongous) { 828 oop obj = oop(this->humongous_start_region()->bottom()); 829 if ((HeapWord*)obj > bottom() || (HeapWord*)obj + obj->size() < bottom()) { 830 log_error(gc, verify)("this humongous region is not part of its' humongous object " PTR_FORMAT, p2i(obj)); 831 } 832 } 833 834 if (!is_region_humongous && p != top()) { 835 log_error(gc, verify)("end of last object " PTR_FORMAT " " 836 "does not match top " PTR_FORMAT, p2i(p), p2i(top())); 837 *failures = true; 838 return; 839 } 840 841 HeapWord* the_end = end(); 842 // Do some extra BOT consistency checking for addresses in the 843 // range [top, end). BOT look-ups in this range should yield 844 // top. No point in doing that if top == end (there's nothing there). 845 if (p < the_end) { 846 // Look up top 847 HeapWord* addr_1 = p; 848 HeapWord* b_start_1 = _bot_part.block_start_const(addr_1); 849 if (b_start_1 != p) { 850 log_error(gc, verify)("BOT look up for top: " PTR_FORMAT " " | 811 } 812 } 813 } else { 814 log_error(gc, verify)(PTR_FORMAT " not an oop", p2i(obj)); 815 *failures = true; 816 return; 817 } 818 } 819 prev_p = p; 820 p += obj_size; 821 } 822 823 if (!is_young() && !is_empty()) { 824 _bot_part.verify(); 825 } 826 827 if (is_region_humongous) { 828 oop obj = oop(this->humongous_start_region()->bottom()); 829 if ((HeapWord*)obj > bottom() || (HeapWord*)obj + obj->size() < bottom()) { 830 log_error(gc, verify)("this humongous region is not part of its' humongous object " PTR_FORMAT, p2i(obj)); 831 *failures = true; 832 return; 833 } 834 } 835 836 if (!is_region_humongous && p != top()) { 837 log_error(gc, verify)("end of last object " PTR_FORMAT " " 838 "does not match top " PTR_FORMAT, p2i(p), p2i(top())); 839 *failures = true; 840 return; 841 } 842 843 HeapWord* the_end = end(); 844 // Do some extra BOT consistency checking for addresses in the 845 // range [top, end). BOT look-ups in this range should yield 846 // top. No point in doing that if top == end (there's nothing there). 847 if (p < the_end) { 848 // Look up top 849 HeapWord* addr_1 = p; 850 HeapWord* b_start_1 = _bot_part.block_start_const(addr_1); 851 if (b_start_1 != p) { 852 log_error(gc, verify)("BOT look up for top: " PTR_FORMAT " " |