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     @ refresh Jit's on/off status
     17     ldr     r0, [rGLUE, #offGlue_ppJitProfTable]
     18     ldr     r0, [r0]
     19     ldr     r2, .LdvmJitToInterpNoChain
     20     str     r0, [rGLUE, #offGlue_pJitProfTable]
     21     @ Bail to interpreter - no chain [note - r4 still contains rPC]
     22 #if defined(WITH_JIT_TUNING)
     23     mov     r0, #kHeavyweightMonitor
     24 #endif
     25     bx      r2
     26