diff --git a/src/hotspot/share/opto/library_call.cpp b/src/hotspot/share/opto/library_call.cpp index 956c338c80f..a1bab02f40c 100644 --- a/src/hotspot/share/opto/library_call.cpp +++ b/src/hotspot/share/opto/library_call.cpp @@ -3328,8 +3328,13 @@ bool LibraryCallKit::inline_unsafe_newArray(bool uninitialized) { // ensuing call will throw an exception, or else it // will cache the array klass for next time. PreserveJVMState pjvms(this); - CallJavaNode* slow_call = uninitialized ? generate_method_call_virtual(vmIntrinsics::_allocateUninitializedArray) : - generate_method_call_static(vmIntrinsics::_newArray); + CallJavaNode* slow_call = NULL; + if (uninitialized) { + // Generate optimized virtual call (holder class 'Unsafe' is final) + slow_call = generate_method_call(vmIntrinsics::_allocateUninitializedArray, false, false); + } else { + slow_call = generate_method_call_static(vmIntrinsics::_newArray); + } Node* slow_result = set_results_for_java_call(slow_call); // this->control() comes from set_results_for_java_call result_reg->set_req(_slow_path, control());