--- a/hotspot/src/share/vm/jvmci/jvmciCompilerToVM.cpp Thu Jan 28 16:30:37 2016 -0800
+++ b/hotspot/src/share/vm/jvmci/jvmciCompilerToVM.cpp Wed Feb 03 01:35:25 2016 +0100
@@ -121,8 +121,8 @@
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::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 @@
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 @@
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);