--- old/src/share/vm/oops/valueArrayKlass.cpp 2017-06-14 12:29:22.244271153 +0200 +++ new/src/share/vm/oops/valueArrayKlass.cpp 2017-06-14 12:29:21.728271177 +0200 @@ -71,15 +71,15 @@ #endif } -void ValueArrayKlass::set_element_klass(ValueKlass* k) { +void ValueArrayKlass::set_element_klass(Klass* k) { _element_klass = k; - _element_value_store_size = k->raw_value_byte_size(); + _element_value_store_size = ((ValueKlass*)k)->raw_value_byte_size(); } ValueArrayKlass* ValueArrayKlass::allocate_klass(Klass* element_klass, Symbol* name, TRAPS) { - assert(ValueArrayFlatten, "Flatten array not allowed"); + assert(ValueArrayFlatten, "Flatten array required"); assert(ValueKlass::cast(element_klass)->is_atomic() || (!ValueArrayAtomicAccess), "Atomic by-default"); ClassLoaderData* loader_data = element_klass->class_loader_data(); @@ -197,7 +197,7 @@ int elem_incr = 1 << log2_element_size(); address src_end = src + (length << log2_element_size()); while (src < src_end) { - element_klass()->value_store(src, dst, element_value_store_size(), true, false); + ((ValueKlass*)element_klass())->value_store(src, dst, element_value_store_size(), true, false); src += elem_incr; dst += elem_incr; } @@ -294,7 +294,7 @@ void ValueArrayKlass::oop_print_on(oop obj, outputStream* st) { ArrayKlass::oop_print_on(obj, st); valueArrayOop va = valueArrayOop(obj); - ValueKlass* vk = element_klass(); + ValueKlass* vk = (ValueKlass*)element_klass(); int print_len = MIN2((intx) va->length(), MaxElementPrintSize); for(int index = 0; index < print_len; index++) { int off = (address) va->value_at_addr(index, layout_helper()) - (address) obj; @@ -337,7 +337,7 @@ ArrayKlass::oop_verify_on(obj, st); guarantee(obj->is_valueArray(), "must be valueArray"); - if (element_klass()->contains_oops()) { + if (((ValueKlass*)element_klass())->contains_oops()) { valueArrayOop va = valueArrayOop(obj); NoHeaderExtendedOopClosure wrapClosure(&VerifyOopClosure::verify_oop); va->oop_iterate(&wrapClosure);