126 const Register argcnt = R26_tmp6; |
126 const Register argcnt = R26_tmp6; |
127 const Register intSlot = R27_tmp7; |
127 const Register intSlot = R27_tmp7; |
128 const Register target_sp = R28_tmp8; |
128 const Register target_sp = R28_tmp8; |
129 const FloatRegister floatSlot = F0; |
129 const FloatRegister floatSlot = F0; |
130 |
130 |
131 address entry = __ emit_fd(); |
131 address entry = __ function_entry(); |
132 |
132 |
133 __ save_LR_CR(R0); |
133 __ save_LR_CR(R0); |
134 __ save_nonvolatile_gprs(R1_SP, _spill_nonvolatiles_neg(r14)); |
134 __ save_nonvolatile_gprs(R1_SP, _spill_nonvolatiles_neg(r14)); |
135 // We use target_sp for storing arguments in the C frame. |
135 // We use target_sp for storing arguments in the C frame. |
136 __ mr(target_sp, R1_SP); |
136 __ mr(target_sp, R1_SP); |
137 __ push_frame_abi112_nonvolatiles(0, R11_scratch1); |
137 __ push_frame_reg_args_nonvolatiles(0, R11_scratch1); |
138 |
138 |
139 __ mr(arg_java, R3_ARG1); |
139 __ mr(arg_java, R3_ARG1); |
140 |
140 |
141 __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::get_signature), R16_thread, R19_method); |
141 __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::get_signature), R16_thread, R19_method); |
142 |
142 |
472 // our caller set up the JavaFrameAnchor. |
472 // our caller set up the JavaFrameAnchor. |
473 __ set_top_ijava_frame_at_SP_as_last_Java_frame(R1_SP, R12_scratch2/*tmp*/); |
473 __ set_top_ijava_frame_at_SP_as_last_Java_frame(R1_SP, R12_scratch2/*tmp*/); |
474 |
474 |
475 // Push a new C frame and save LR. |
475 // Push a new C frame and save LR. |
476 __ save_LR_CR(R0); |
476 __ save_LR_CR(R0); |
477 __ push_frame_abi112(0, R11_scratch1); |
477 __ push_frame_reg_args(0, R11_scratch1); |
478 |
478 |
479 // This is not a leaf but we have a JavaFrameAnchor now and we will |
479 // This is not a leaf but we have a JavaFrameAnchor now and we will |
480 // check (create) exceptions afterward so this is ok. |
480 // check (create) exceptions afterward so this is ok. |
481 __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError)); |
481 __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError)); |
482 |
482 |