diff --git a/src/hotspot/share/oops/objArrayKlass.cpp b/src/hotspot/share/oops/objArrayKlass.cpp index 6f5d4b8..ab0c390 100644 --- a/src/hotspot/share/oops/objArrayKlass.cpp +++ b/src/hotspot/share/oops/objArrayKlass.cpp @@ -218,23 +218,23 @@ oop ObjArrayKlass::multi_allocate(int rank, jint* sizes, TRAPS) { } // Either oop or narrowOop depending on UseCompressedOops. -template void ObjArrayKlass::do_copy(arrayOop s, size_t src_offset, - arrayOop d, size_t dst_offset, int length, TRAPS) { +void ObjArrayKlass::do_copy(arrayOop s, size_t src_offset, + arrayOop d, size_t dst_offset, int length, TRAPS) { if (oopDesc::equals(s, d)) { // since source and destination are equal we do not need conversion checks. assert(length > 0, "sanity check"); - ArrayAccess<>::template oop_arraycopy(s, src_offset, d, dst_offset, length); + ArrayAccess<>::oop_arraycopy(s, src_offset, d, dst_offset, length); } else { // We have to make sure all elements conform to the destination array Klass* bound = ObjArrayKlass::cast(d->klass())->element_klass(); Klass* stype = ObjArrayKlass::cast(s->klass())->element_klass(); if (stype == bound || stype->is_subtype_of(bound)) { // elements are guaranteed to be subtypes, so no check necessary - ArrayAccess::template oop_arraycopy(s, src_offset, d, dst_offset, length); + ArrayAccess::oop_arraycopy(s, src_offset, d, dst_offset, length); } else { // slow case: need individual subtype checks // note: don't use obj_at_put below because it includes a redundant store check - if (!ArrayAccess::template oop_arraycopy(s, src_offset, d, dst_offset, length)) { + if (!ArrayAccess::oop_arraycopy(s, src_offset, d, dst_offset, length)) { THROW(vmSymbols::java_lang_ArrayStoreException()); } } @@ -291,15 +291,19 @@ void ObjArrayKlass::copy_array(arrayOop s, int src_pos, arrayOop d, if (UseCompressedOops) { size_t src_offset = (size_t) objArrayOopDesc::obj_at_offset(src_pos); size_t dst_offset = (size_t) objArrayOopDesc::obj_at_offset(dst_pos); - assert(arrayOopDesc::obj_offset_to_raw(s, src_offset, NULL) == objArrayOop(s)->obj_at_addr(src_pos), "sanity"); - assert(arrayOopDesc::obj_offset_to_raw(d, dst_offset, NULL) == objArrayOop(d)->obj_at_addr(dst_pos), "sanity"); - do_copy(s, src_offset, d, dst_offset, length, CHECK); + assert(arrayOopDesc::obj_offset_to_raw(s, src_offset, NULL) == + objArrayOop(s)->obj_at_addr(src_pos), "sanity"); + assert(arrayOopDesc::obj_offset_to_raw(d, dst_offset, NULL) == + objArrayOop(d)->obj_at_addr(dst_pos), "sanity"); + do_copy(s, src_offset, d, dst_offset, length, CHECK); } else { size_t src_offset = (size_t) objArrayOopDesc::obj_at_offset(src_pos); size_t dst_offset = (size_t) objArrayOopDesc::obj_at_offset(dst_pos); - assert(arrayOopDesc::obj_offset_to_raw(s, src_offset, NULL) == objArrayOop(s)->obj_at_addr(src_pos), "sanity"); - assert(arrayOopDesc::obj_offset_to_raw(d, dst_offset, NULL) == objArrayOop(d)->obj_at_addr(dst_pos), "sanity"); - do_copy (s, src_offset, d, dst_offset, length, CHECK); + assert(arrayOopDesc::obj_offset_to_raw(s, src_offset, NULL) == + objArrayOop(s)->obj_at_addr(src_pos), "sanity"); + assert(arrayOopDesc::obj_offset_to_raw(d, dst_offset, NULL) == + objArrayOop(d)->obj_at_addr(dst_pos), "sanity"); + do_copy(s, src_offset, d, dst_offset, length, CHECK); } }