3566 // checked for non-null. If we'll go thru a C2I adapter, the |
3566 // checked for non-null. If we'll go thru a C2I adapter, the |
3567 // interpreter expects method in R19_method. |
3567 // interpreter expects method in R19_method. |
3568 |
3568 |
3569 __ load_klass(R11_scratch1, R3); |
3569 __ load_klass(R11_scratch1, R3); |
3570 |
3570 |
3571 int entry_offset = InstanceKlass::vtable_start_offset() + _vtable_index * vtableEntry::size(); |
3571 int entry_offset = in_bytes(Klass::vtable_start_offset()) + _vtable_index * vtableEntry::size_in_bytes(); |
3572 int v_off = entry_offset * wordSize + vtableEntry::method_offset_in_bytes(); |
3572 int v_off = entry_offset + vtableEntry::method_offset_in_bytes(); |
3573 __ li(R19_method, v_off); |
3573 __ li(R19_method, v_off); |
3574 __ ldx(R19_method/*method oop*/, R19_method/*method offset*/, R11_scratch1/*class*/); |
3574 __ ldx(R19_method/*method oop*/, R19_method/*method offset*/, R11_scratch1/*class*/); |
3575 // NOTE: for vtable dispatches, the vtable entry will never be |
3575 // NOTE: for vtable dispatches, the vtable entry will never be |
3576 // null. However it may very well end up in handle_wrong_method |
3576 // null. However it may very well end up in handle_wrong_method |
3577 // if the method is abstract for the particular class. |
3577 // if the method is abstract for the particular class. |