1/* 2 * Inter-instruction transfer stub. Call out to MterpCheckBefore to handle 3 * any interesting requests and then jump to the real instruction 4 * handler. Unlike the Arm handler, we can't do this as a tail call 5 * because rIBASE is caller save and we need to reload it. 6 * 7 * Note that unlike in the Arm implementation, we should never arrive 8 * here with a zero breakFlag because we always refresh rIBASE on 9 * return. 10 */ 11 .extern MterpCheckBefore 12 movl rSELF, %ecx 13 movl %ecx, OUT_ARG0(%esp) 14 leal OFF_FP_SHADOWFRAME(rFP), %eax 15 movl %eax, OUT_ARG1(%esp) 16 movl rPC, OUT_ARG2(%esp) 17 call SYMBOL(MterpCheckBefore) # (self, shadow_frame, dex_pc_ptr) 18 REFRESH_IBASE 19 jmp .L_op_nop+(${opnum}*${handler_size_bytes}) 20