hotspot/src/share/vm/jvmci/jvmciCompilerToVM.cpp
changeset 35913 928548a43408
parent 35606 d873b64009cc
parent 35900 d64cf9290fc4
child 36800 37014ee7264c
child 37161 e881f320966e
--- 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);