/* | |
* Unlock an object. | |
* | |
* Exceptions that occur when unlocking a monitor need to appear as | |
* if they happened at the following instruction. See the Dalvik | |
* instruction spec. | |
*/ | |
/* monitor-exit vAA */ | |
.extern artUnlockObjectFromCode | |
EXPORT_PC | |
srl a2, rINST, 8 # a2 <- AA | |
GET_VREG_U a0, a2 # a0 <- vAA (object) | |
move a1, rSELF # a1 <- self | |
jal artUnlockObjectFromCode # v0 <- success for unlock(self, obj) | |
bnezc v0, MterpException | |
FETCH_ADVANCE_INST 1 # before throw: advance rPC, load rINST | |
GET_INST_OPCODE v0 # extract opcode from rINST | |
GOTO_OPCODE v0 # jump to next instruction |