8263679: C1: Remove vtable call

Reviewed-by: vlivanov, kvn
This commit is contained in:
Zhengyu Gu 2021-03-16 18:41:04 +00:00
parent 11c8c78c47
commit a67a679c78
13 changed files with 11 additions and 68 deletions

View file

@ -2958,14 +2958,10 @@ void LIRGenerator::do_Invoke(Invoke* x) {
__ call_opt_virtual(target, receiver, result_register,
SharedRuntime::get_resolve_opt_virtual_call_stub(),
arg_list, info);
} else if (x->vtable_index() < 0) {
} else {
__ call_icvirtual(target, receiver, result_register,
SharedRuntime::get_resolve_virtual_call_stub(),
arg_list, info);
} else {
int entry_offset = in_bytes(Klass::vtable_start_offset()) + x->vtable_index() * vtableEntry::size_in_bytes();
int vtable_offset = entry_offset + vtableEntry::method_offset_in_bytes();
__ call_virtual(target, receiver, result_register, vtable_offset, arg_list, info);
}
break;
case Bytecodes::_invokedynamic: {