Home | History | Annotate | Download | only in armv5te
      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      *    r0 - self pointer
      9      *    r1 - the object (which has already been null-checked by the caller
     10      *    r4 - the Dalvik PC of the following instruction.
     11      */
     12     ldr     r2, .LdvmLockObject
     13     mov     r3, #0                       @ Record that we're not returning
     14     str     r3, [r0, #offThread_inJitCodeCache]
     15     blx     r2                           @ dvmLockObject(self, obj)
     16     ldr     r2, .LdvmJitToInterpNoChain
     17     @ Bail to interpreter - no chain [note - r4 still contains rPC]
     18 #if defined(WITH_JIT_TUNING)
     19     mov     r0, #kHeavyweightMonitor
     20 #endif
     21     bx      r2
     22