hotspot/src/share/vm/opto/library_call.cpp
changeset 35913 928548a43408
parent 35581 dd47cf4734f2
parent 35899 0dbc821628fc
child 36384 b0b41336a9a8
child 36314 31a4d71411b9
equal deleted inserted replaced
35607:d73b0b6a24e6 35913:928548a43408
  3820   ciMethod* method = callee();
  3820   ciMethod* method = callee();
  3821   int vtable_index = method->vtable_index();
  3821   int vtable_index = method->vtable_index();
  3822   assert(vtable_index >= 0 || vtable_index == Method::nonvirtual_vtable_index,
  3822   assert(vtable_index >= 0 || vtable_index == Method::nonvirtual_vtable_index,
  3823          "bad index %d", vtable_index);
  3823          "bad index %d", vtable_index);
  3824   // Get the Method* out of the appropriate vtable entry.
  3824   // Get the Method* out of the appropriate vtable entry.
  3825   int entry_offset  = (InstanceKlass::vtable_start_offset() +
  3825   int entry_offset  = in_bytes(Klass::vtable_start_offset()) +
  3826                      vtable_index*vtableEntry::size()) * wordSize +
  3826                      vtable_index*vtableEntry::size_in_bytes() +
  3827                      vtableEntry::method_offset_in_bytes();
  3827                      vtableEntry::method_offset_in_bytes();
  3828   Node* entry_addr  = basic_plus_adr(obj_klass, entry_offset);
  3828   Node* entry_addr  = basic_plus_adr(obj_klass, entry_offset);
  3829   Node* target_call = make_load(NULL, entry_addr, TypePtr::NOTNULL, T_ADDRESS, MemNode::unordered);
  3829   Node* target_call = make_load(NULL, entry_addr, TypePtr::NOTNULL, T_ADDRESS, MemNode::unordered);
  3830 
  3830 
  3831   // Compare the target method with the expected method (e.g., Object.hashCode).
  3831   // Compare the target method with the expected method (e.g., Object.hashCode).