OSDN Git Service

Dalvik fast interpreter support and JIT implementation
[android-x86/dalvik.git] / vm / compiler / template / mips / TEMPLATE_MONITOR_ENTER_DEBUG.S
1     /*
2      * To support deadlock prediction, this version of MONITOR_ENTER
3      * will always call the heavyweight dvmLockObject, check for an
4      * exception and then bail out to the interpreter.
5      *
6      * On entry:
7      *    a0 - self pointer
8      *    a1 - the object (which has already been null-checked by the caller
9      *    rPC - the Dalvik PC of the following instruction.
10      *
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     # test for exception
19     lw     a1, offThread_exception(rSELF)
20     beqz   a1, 1f
21     sub    a0, rPC, 2                           # roll dPC back to this monitor instruction
22     j      .LhandleException
23 1:
24     # Bail to interpreter - no chain [note - rPC still contains dPC]
25 #if defined(WITH_JIT_TUNING)
26     li     a0, kHeavyweightMonitor
27 #endif
28     la     a2, .LdvmJitToInterpNoChain
29     lw     a2, (a2)
30     jr     a2