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    lsr      w2, wINST, #8              // w2<- AA
11    GET_VREG w0, w2                     // w0<- vAA (object)
12    mov      x1, xSELF                  // w0<- self
13    bl       artUnlockObjectFromCode    // w0<- success for unlock(self, obj)
14    cbnz     w0, MterpException
15    FETCH_ADVANCE_INST 1                // before throw: advance rPC, load rINST
16    GET_INST_OPCODE ip                  // extract opcode from rINST
17    GOTO_OPCODE ip                      // jump to next instruction
18