--- old/src/share/vm/oops/valueArrayKlass.inline.hpp 2017-06-14 12:29:22.760271129 +0200 +++ new/src/share/vm/oops/valueArrayKlass.inline.hpp 2017-06-14 12:29:21.968271166 +0200 @@ -48,10 +48,10 @@ 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(); + const int oop_offset = ((ValueKlass*)element_klass())->first_field_offset(); while (elem_addr < stop_addr) { - element_klass()->oop_iterate_specialized((address)(elem_addr - oop_offset), closure); + ((ValueKlass*)element_klass())->oop_iterate_specialized((address)(elem_addr - oop_offset), closure); elem_addr += addr_incr; } } @@ -66,7 +66,7 @@ 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(); + const int oop_offset = ((ValueKlass*)element_klass())->first_field_offset(); if (elem_addr < (uintptr_t) lo) { uintptr_t diff = ((uintptr_t) lo) - elem_addr; @@ -79,7 +79,7 @@ const uintptr_t end = stop_addr; while (elem_addr < end) { - element_klass()->oop_iterate_specialized_bounded((address)(elem_addr - oop_offset), closure, lo, hi); + ((ValueKlass*)element_klass())->oop_iterate_specialized_bounded((address)(elem_addr - oop_offset), closure, lo, hi); elem_addr += addr_incr; } }