--- old/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp 2015-02-12 22:25:30.669173848 -0800 +++ new/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp 2015-02-12 22:25:30.585173845 -0800 @@ -126,7 +126,10 @@ bool ObjectStartArray::object_starts_in_range(HeapWord* start_addr, HeapWord* end_addr) const { - assert(start_addr <= end_addr, "range is wrong"); + assert(start_addr <= end_addr, + err_msg("Range is wrong. start_addr (" PTR_FORMAT ") is after end_addr (" PTR_FORMAT ")", + p2i(start_addr), p2i(end_addr))); + if (start_addr > end_addr) { return false; } --- old/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.hpp 2015-02-12 22:25:31.009173859 -0800 +++ new/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.hpp 2015-02-12 22:25:30.921173856 -0800 @@ -120,7 +120,9 @@ MemRegion covered_region() { return _covered_region; } void allocate_block(HeapWord* p) { - assert(_covered_region.contains(p), "Must be in covered region"); + assert(_covered_region.contains(p), + err_msg("p (" PTR_FORMAT ") is not in covered region [" PTR_FORMAT ", " PTR_FORMAT ")", + p2i(p), p2i(_covered_region.start()), p2i(_covered_region.end()))); jbyte* block = block_for_addr(p); HeapWord* block_base = addr_for_block(block); size_t offset = pointer_delta(p, block_base, sizeof(HeapWord*)); @@ -135,7 +137,9 @@ // object in that block. Scroll backwards by one, and the first // object hit should be at the beginning of the block HeapWord* object_start(HeapWord* addr) const { - assert(_covered_region.contains(addr), "Must be in covered region"); + assert(_covered_region.contains(addr), + err_msg("addr (" PTR_FORMAT ") is not in covered region [" PTR_FORMAT ", " PTR_FORMAT ")", + p2i(addr), p2i(_covered_region.start()), p2i(_covered_region.end()))); jbyte* block = block_for_addr(addr); HeapWord* scroll_forward = offset_addr_for_block(block--); while (scroll_forward > addr) { @@ -153,7 +157,9 @@ } bool is_block_allocated(HeapWord* addr) { - assert(_covered_region.contains(addr), "Must be in covered region"); + assert(_covered_region.contains(addr), + err_msg("addr (" PTR_FORMAT ") is not in covered region [" PTR_FORMAT ", " PTR_FORMAT ")", + p2i(addr), p2i(_covered_region.start()), p2i(_covered_region.end()))); jbyte* block = block_for_addr(addr); if (*block == clean_block) return false;