mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
Merge
This commit is contained in:
commit
40c4fe8573
192 changed files with 4253 additions and 2003 deletions
|
@ -121,8 +121,8 @@ extern uint64_t jvmciHotSpotVMAddressEntryValueOffset;
|
|||
extern uint64_t jvmciHotSpotVMAddressEntryArrayStride;
|
||||
}
|
||||
|
||||
int CompilerToVM::Data::InstanceKlass_vtable_start_offset;
|
||||
int CompilerToVM::Data::InstanceKlass_vtable_length_offset;
|
||||
int CompilerToVM::Data::Klass_vtable_start_offset;
|
||||
int CompilerToVM::Data::Klass_vtable_length_offset;
|
||||
|
||||
int CompilerToVM::Data::Method_extra_stack_entries;
|
||||
|
||||
|
@ -153,8 +153,8 @@ int CompilerToVM::Data::cardtable_shift;
|
|||
int CompilerToVM::Data::vm_page_size;
|
||||
|
||||
void CompilerToVM::Data::initialize() {
|
||||
InstanceKlass_vtable_start_offset = InstanceKlass::vtable_start_offset();
|
||||
InstanceKlass_vtable_length_offset = InstanceKlass::vtable_length_offset() * HeapWordSize;
|
||||
Klass_vtable_start_offset = in_bytes(Klass::vtable_start_offset());
|
||||
Klass_vtable_length_offset = in_bytes(Klass::vtable_length_offset());
|
||||
|
||||
Method_extra_stack_entries = Method::extra_stack_entries();
|
||||
|
||||
|
@ -659,8 +659,7 @@ C2V_VMENTRY(jobject, resolveMethod, (JNIEnv *, jobject, jobject receiver_jvmci_t
|
|||
vtable_index = LinkResolver::vtable_index_of_interface_method(holder_klass, resolved_method);
|
||||
assert(vtable_index >= 0 , "we should have valid vtable index at this point");
|
||||
|
||||
InstanceKlass* inst = InstanceKlass::cast(recv_klass);
|
||||
selected_method = inst->method_at_vtable(vtable_index);
|
||||
selected_method = recv_klass->method_at_vtable(vtable_index);
|
||||
} else {
|
||||
// at this point we are sure that resolved_method is virtual and not
|
||||
// a miranda method; therefore, it must have a valid vtable index.
|
||||
|
@ -675,10 +674,7 @@ C2V_VMENTRY(jobject, resolveMethod, (JNIEnv *, jobject, jobject receiver_jvmci_t
|
|||
assert(resolved_method->can_be_statically_bound(), "cannot override this method");
|
||||
selected_method = resolved_method();
|
||||
} else {
|
||||
// recv_klass might be an arrayKlassOop but all vtables start at
|
||||
// the same place. The cast is to avoid virtual call and assertion.
|
||||
InstanceKlass* inst = (InstanceKlass*)recv_klass;
|
||||
selected_method = inst->method_at_vtable(vtable_index);
|
||||
selected_method = recv_klass->method_at_vtable(vtable_index);
|
||||
}
|
||||
}
|
||||
oop result = CompilerToVM::get_jvmci_method(selected_method, CHECK_NULL);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue