< prev index next >

src/hotspot/share/gc/g1/g1OopClosures.inline.hpp

Print this page

        

@@ -80,10 +80,12 @@
 
   if (CompressedOops::is_null(heap_oop)) {
     return;
   }
   oop obj = CompressedOops::decode_not_null(heap_oop);
+  assert_object_is_in_heap(p, obj);
+
   const G1HeapRegionAttr region_attr = _g1h->region_attr(obj);
   if (region_attr.is_in_cset()) {
     prefetch_and_push(p, obj);
   } else if (!HeapRegion::is_in_same_region(p, obj)) {
     handle_non_cset_obj_common(region_attr, p, obj);

@@ -105,10 +107,12 @@
   T heap_oop = RawAccess<MO_VOLATILE>::oop_load(p);
   if (CompressedOops::is_null(heap_oop)) {
     return;
   }
   oop obj = CompressedOops::decode_not_null(heap_oop);
+  assert_object_is_in_heap(p, obj);
+
   _cm->mark_in_next_bitmap(_worker_id, obj);
 }
 
 template <class T>
 inline static void check_obj_during_refinement(T* p, oop const obj) {

@@ -116,10 +120,11 @@
   G1CollectedHeap* g1h = G1CollectedHeap::heap();
   // can't do because of races
   // assert(oopDesc::is_oop_or_null(obj), "expected an oop");
   assert(is_object_aligned(obj), "oop must be aligned");
   assert(g1h->is_in_reserved(obj), "oop must be in reserved");
+  assert_object_is_in_heap(p, obj);
 
   HeapRegion* from = g1h->heap_region_containing(p);
 
   assert(from != NULL, "from region must be non-NULL");
   assert(from->is_in_reserved(p) ||

@@ -262,10 +267,11 @@
 template <class T> void G1RebuildRemSetClosure::do_oop_work(T* p) {
   oop const obj = RawAccess<MO_VOLATILE>::oop_load(p);
   if (obj == NULL) {
     return;
   }
+  assert_object_is_in_heap(p, obj);
 
   if (HeapRegion::is_in_same_region(p, obj)) {
     return;
   }
 
< prev index next >