< 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 >