/* * Call out to the runtime to lock an object. Because this thread * may have been suspended in THREAD_MONITOR state and the Jit's * translation cache subsequently cleared, we cannot return directly. * Instead, unconditionally transition to the interpreter to resume. * * On entry: * r0 - self pointer * r1 - the object (which has already been null-checked by the caller * r4 - the Dalvik PC of the following instruction. */ ldr r2, .LdvmLockObject mov r3, #0 @ Record that we're not returning str r3, [r0, #offThread_inJitCodeCache] blx r2 @ dvmLockObject(self, obj) ldr r2, .LdvmJitToInterpNoChain @ Bail to interpreter - no chain [note - r4 still contains rPC] #if defined(WITH_JIT_TUNING) mov r0, #kHeavyweightMonitor #endif bx r2