3686 //__ profile_called_method(Rindex, Rscratch1); |
3686 //__ profile_called_method(Rindex, Rscratch1); |
3687 __ call_from_interpreter(Rmethod2, Rret_addr, Rscratch1, Rscratch2); |
3687 __ call_from_interpreter(Rmethod2, Rret_addr, Rscratch1, Rscratch2); |
3688 |
3688 |
3689 // Vtable entry was NULL => Throw abstract method error. |
3689 // Vtable entry was NULL => Throw abstract method error. |
3690 __ bind(Lthrow_ame); |
3690 __ bind(Lthrow_ame); |
3691 call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError)); |
3691 // Pass arguments for generating a verbose error message. |
|
3692 call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodErrorVerbose), |
|
3693 Rrecv_klass, Rmethod); |
3692 |
3694 |
3693 // Interface was not found => Throw incompatible class change error. |
3695 // Interface was not found => Throw incompatible class change error. |
3694 __ bind(L_no_such_interface); |
3696 __ bind(L_no_such_interface); |
3695 call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_IncompatibleClassChangeError)); |
3697 // Pass arguments for generating a verbose error message. |
|
3698 call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_IncompatibleClassChangeErrorVerbose), |
|
3699 Rrecv_klass, Rinterface_klass); |
3696 DEBUG_ONLY( __ should_not_reach_here(); ) |
3700 DEBUG_ONLY( __ should_not_reach_here(); ) |
3697 |
3701 |
3698 // Special case of invokeinterface called for virtual method of |
3702 // Special case of invokeinterface called for virtual method of |
3699 // java.lang.Object. See ConstantPoolCacheEntry::set_method() for details: |
3703 // java.lang.Object. See ConstantPoolCacheEntry::set_method() for details: |
3700 // The invokeinterface was rewritten to a invokevirtual, hence we have |
3704 // The invokeinterface was rewritten to a invokevirtual, hence we have |