--- a/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp Sat May 18 12:13:38 2019 -0700
+++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.inline.hpp Sat May 18 22:11:25 2019 +0200
@@ -208,6 +208,8 @@
inline void G1ParScanThreadState::remember_root_into_optional_region(T* p) {
oop o = RawAccess<IS_NOT_NULL>::oop_load(p);
uint index = _g1h->heap_region_containing(o)->index_in_opt_cset();
+ assert(index < _num_optional_regions,
+ "Trying to access optional region idx %u beyond " SIZE_FORMAT, index, _num_optional_regions);
_oops_into_optional_regions[index].push_root(p);
}
@@ -215,11 +217,16 @@
inline void G1ParScanThreadState::remember_reference_into_optional_region(T* p) {
oop o = RawAccess<IS_NOT_NULL>::oop_load(p);
uint index = _g1h->heap_region_containing(o)->index_in_opt_cset();
+ assert(index < _num_optional_regions,
+ "Trying to access optional region idx %u beyond " SIZE_FORMAT, index, _num_optional_regions);
_oops_into_optional_regions[index].push_oop(p);
DEBUG_ONLY(verify_ref(p);)
}
G1OopStarChunkedList* G1ParScanThreadState::oops_into_optional_region(const HeapRegion* hr) {
+ assert(hr->index_in_opt_cset() < _num_optional_regions,
+ "Trying to access optional region idx %u beyond " SIZE_FORMAT " " HR_FORMAT,
+ hr->index_in_opt_cset(), _num_optional_regions, HR_FORMAT_PARAMS(hr));
return &_oops_into_optional_regions[hr->index_in_opt_cset()];
}