diff -r 2c44cff993b8 src/share/vm/gc/g1/heapRegion.cpp --- a/src/share/vm/gc/g1/heapRegion.cpp Mon Jan 30 13:48:14 2017 +0530 +++ b/src/share/vm/gc/g1/heapRegion.cpp Mon Feb 06 12:01:41 2017 +0100 @@ -791,6 +791,13 @@ if (!g1->is_obj_dead_cond(obj, this, vo)) { if (obj->is_oop()) { Klass* klass = obj->klass(); + + if (!is_region_humongous && (G1CollectedHeap::is_humongous(obj_size) || !is_in((HeapWord*)obj + obj_size - 1))) { + log_error(gc, verify)("obj " PTR_FORMAT " klass " PTR_FORMAT " size " SIZE_FORMAT " extends beyond region %u", p2i(obj), p2i(klass), obj_size, hrm_index()); + *failures = true; + return; + } + bool is_metaspace_object = Metaspace::contains(klass) || (vo == VerifyOption_G1UsePrevMarking && ClassLoaderDataGraph::unload_list_contains(klass)); @@ -806,6 +813,7 @@ return; } else { vl_cl.set_containing_obj(obj); + /* if (!g1->collector_state()->full_collection() || G1VerifyRSetsDuringFullGC) { // verify liveness and rem_set vr_cl.set_containing_obj(obj); @@ -820,9 +828,10 @@ return; } } else { + */ // verify only liveness obj->oop_iterate_no_header(&vl_cl); - } +// } if (vl_cl.failures()) { *failures = true; }