8259706: C2 compilation fails with assert(vtable_index == Method::invalid_vtable_index) failed: correct sentinel value

Reviewed-by: lucy, chagedorn
This commit is contained in:
Tobias Hartmann 2021-01-14 07:23:09 +00:00
parent ae9187d757
commit 8b8b1f9a37

View File

@ -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());