Home | History | Annotate | Download | only in x86
      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