1    /*
2     * Unlock an object.
3     *
4     * Exceptions that occur when unlocking a monitor need to appear as
5     * if they happened at the following instruction.  See the Dalvik
6     * instruction spec.
7     */
8    /* monitor-exit vAA */
9    EXPORT_PC
10    mov      r2, rINST, lsr #8          @ r2<- AA
11    GET_VREG r0, r2                     @ r0<- vAA (object)
12    mov      r1, rSELF                  @ r0<- self
13    bl       artUnlockObjectFromCode    @ r0<- success for unlock(self, obj)
14    cmp     r0, #0                      @ failed?
15    bne     MterpException
16    FETCH_ADVANCE_INST 1                @ before throw: advance rPC, load rINST
17    GET_INST_OPCODE ip                  @ extract opcode from rINST
18    GOTO_OPCODE ip                      @ jump to next instruction
19