/* * 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: * a0 - self pointer * a1 - the object (which has already been null-checked by the caller * rPC - the Dalvik PC of the following instruction. */ la a2, .LdvmLockObject lw t9, (a2) sw zero, offThread_inJitCodeCache(a0) # record that we're not returning JALR(t9) # dvmLockObject(self, obj) lw gp, STACK_OFFSET_GP(sp) la a2, .LdvmJitToInterpNoChain lw a2, (a2) # Bail to interpreter - no chain [note - rPC still contains dPC] #if defined(WITH_JIT_TUNING) li a0, kHeavyweightMonitor #endif jr a2