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