< prev index next >
src/hotspot/share/gc/g1/g1ConcurrentMark.cpp
Print this page
rev 54086 : imported patch 8219100-cleanup-young-collection-prologue
rev 54087 : imported patch 8218668-reorganize-collection-set
@@ -1938,13 +1938,14 @@
return;
}
guarantee(oopDesc::is_oop(task_entry.obj()),
"Non-oop " PTR_FORMAT ", phase: %s, info: %d",
p2i(task_entry.obj()), _phase, _info);
- guarantee(!_g1h->is_in_cset(task_entry.obj()),
- "obj: " PTR_FORMAT " in CSet, phase: %s, info: %d",
- p2i(task_entry.obj()), _phase, _info);
+ HeapRegion* r = _g1h->heap_region_containing(task_entry.obj());
+ guarantee(!(r->in_collection_set() || r->has_index_in_opt_cset()),
+ "obj " PTR_FORMAT " from %s (%d) in region %u in (optional) collection set",
+ p2i(task_entry.obj()), _phase, _info, r->hrm_index());
}
};
void G1ConcurrentMark::verify_no_collection_set_oops_in_stacks() {
assert(SafepointSynchronize::is_at_safepoint(), "should be at a safepoint");
@@ -1977,15 +1978,15 @@
for (uint i = 0; i < _num_concurrent_workers; ++i) {
G1CMTask* task = _tasks[i];
HeapWord* task_finger = task->finger();
if (task_finger != NULL && task_finger < _heap.end()) {
// See above note on the global finger verification.
- HeapRegion* task_hr = _g1h->heap_region_containing(task_finger);
- guarantee(task_hr == NULL || task_finger == task_hr->bottom() ||
- !task_hr->in_collection_set(),
+ HeapRegion* r = _g1h->heap_region_containing(task_finger);
+ guarantee(r == NULL || task_finger == r->bottom() ||
+ !r->in_collection_set() || !r->has_index_in_opt_cset(),
"task finger: " PTR_FORMAT " region: " HR_FORMAT,
- p2i(task_finger), HR_FORMAT_PARAMS(task_hr));
+ p2i(task_finger), HR_FORMAT_PARAMS(r));
}
}
}
#endif // PRODUCT
< prev index next >