src/share/vm/oops/valueArrayKlass.inline.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
valhalla Cdiff src/share/vm/oops/valueArrayKlass.inline.hpp
src/share/vm/oops/valueArrayKlass.inline.hpp
Print this page
*** 46,59 ****
const int shift = Klass::layout_helper_log2_element_size(layout_helper());
const int addr_incr = 1 << shift;
uintptr_t elem_addr = (uintptr_t) a->base();
const uintptr_t stop_addr = elem_addr + ((uintptr_t)a->length() << shift);
! const int oop_offset = element_klass()->first_field_offset();
while (elem_addr < stop_addr) {
! element_klass()->oop_iterate_specialized<nv, T>((address)(elem_addr - oop_offset), closure);
elem_addr += addr_incr;
}
}
template <bool nv, typename T, class OopClosureType>
--- 46,59 ----
const int shift = Klass::layout_helper_log2_element_size(layout_helper());
const int addr_incr = 1 << shift;
uintptr_t elem_addr = (uintptr_t) a->base();
const uintptr_t stop_addr = elem_addr + ((uintptr_t)a->length() << shift);
! const int oop_offset = ((ValueKlass*)element_klass())->first_field_offset();
while (elem_addr < stop_addr) {
! ((ValueKlass*)element_klass())->oop_iterate_specialized<nv, T>((address)(elem_addr - oop_offset), closure);
elem_addr += addr_incr;
}
}
template <bool nv, typename T, class OopClosureType>
*** 64,74 ****
const int shift = Klass::layout_helper_log2_element_size(layout_helper());
const int addr_incr = 1 << shift;
uintptr_t elem_addr = (uintptr_t)a->base();
uintptr_t stop_addr = elem_addr + ((uintptr_t)a->length() << shift);
! const int oop_offset = element_klass()->first_field_offset();
if (elem_addr < (uintptr_t) lo) {
uintptr_t diff = ((uintptr_t) lo) - elem_addr;
elem_addr += (diff >> shift) << shift;
}
--- 64,74 ----
const int shift = Klass::layout_helper_log2_element_size(layout_helper());
const int addr_incr = 1 << shift;
uintptr_t elem_addr = (uintptr_t)a->base();
uintptr_t stop_addr = elem_addr + ((uintptr_t)a->length() << shift);
! const int oop_offset = ((ValueKlass*)element_klass())->first_field_offset();
if (elem_addr < (uintptr_t) lo) {
uintptr_t diff = ((uintptr_t) lo) - elem_addr;
elem_addr += (diff >> shift) << shift;
}
*** 77,87 ****
stop_addr -= (diff >> shift) << shift;
}
const uintptr_t end = stop_addr;
while (elem_addr < end) {
! element_klass()->oop_iterate_specialized_bounded<nv, T>((address)(elem_addr - oop_offset), closure, lo, hi);
elem_addr += addr_incr;
}
}
template <bool nv, class OopClosureType>
--- 77,87 ----
stop_addr -= (diff >> shift) << shift;
}
const uintptr_t end = stop_addr;
while (elem_addr < end) {
! ((ValueKlass*)element_klass())->oop_iterate_specialized_bounded<nv, T>((address)(elem_addr - oop_offset), closure, lo, hi);
elem_addr += addr_incr;
}
}
template <bool nv, class OopClosureType>
src/share/vm/oops/valueArrayKlass.inline.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File