Home | History | Annotate | Download | only in mips
      1     /*
      2      * Call out to the runtime to lock an object.  Because this thread
      3      * may have been suspended in THREAD_MONITOR state and the Jit's
      4      * translation cache subsequently cleared, we cannot return directly.
      5      * Instead, unconditionally transition to the interpreter to resume.
      6      *
      7      * On entry:
      8      *    a0 - self pointer
      9      *    a1 - the object (which has already been null-checked by the caller
     10      *    rPC - the Dalvik PC of the following instruction.
     11      */
     12     la     a2, .LdvmLockObject
     13     lw     t9, (a2)
     14     sw     zero, offThread_inJitCodeCache(a0)   # record that we're not returning
     15     JALR(t9)                                    # dvmLockObject(self, obj)
     16     lw     gp, STACK_OFFSET_GP(sp)
     17 
     18     la     a2, .LdvmJitToInterpNoChain
     19     lw     a2, (a2)
     20 
     21     # Bail to interpreter - no chain [note - rPC still contains dPC]
     22 #if defined(WITH_JIT_TUNING)
     23     li      a0, kHeavyweightMonitor
     24 #endif
     25     jr      a2
     26