8199559: objArrayKlass::oop_iterate() and friends must use base_raw() instead of base()
Reviewed-by: tschatzl, eosterlund
--- a/src/hotspot/share/oops/objArrayKlass.inline.hpp Thu Mar 15 07:40:00 2018 -0400
+++ b/src/hotspot/share/oops/objArrayKlass.inline.hpp Thu Mar 15 12:44:27 2018 +0100
@@ -37,7 +37,7 @@
template <bool nv, typename T, class OopClosureType>
void ObjArrayKlass::oop_oop_iterate_elements_specialized(objArrayOop a, OopClosureType* closure) {
- T* p = (T*)a->base();
+ T* p = (T*)a->base_raw();
T* const end = p + a->length();
for (;p < end; p++) {
@@ -52,7 +52,7 @@
T* const l = (T*)low;
T* const h = (T*)high;
- T* p = (T*)a->base();
+ T* p = (T*)a->base_raw();
T* end = p + a->length();
if (p < l) {
@@ -112,7 +112,7 @@
template <bool nv, typename T, class OopClosureType>
void ObjArrayKlass::oop_oop_iterate_range_specialized(objArrayOop a, OopClosureType* closure, int start, int end) {
T* low = start == 0 ? cast_from_oop<T*>(a) : a->obj_at_addr_raw<T>(start);
- T* high = (T*)a->base() + end;
+ T* high = (T*)a->base_raw() + end;
oop_oop_iterate_elements_specialized_bounded<nv, T>(a, closure, low, high);
}