blob: 26e2d8d7b124c3639fe7eac0eb8b665eb14b9282 [file] [log] [blame]
/*
* 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 */
EXPORT_PC
lsr w2, wINST, #8 // w2<- AA
GET_VREG w0, w2 // w0<- vAA (object)
mov x1, xSELF // w0<- self
bl artUnlockObjectFromCode // w0<- success for unlock(self, obj)
cbnz w0, MterpException
FETCH_ADVANCE_INST 1 // before throw: advance rPC, load rINST
GET_INST_OPCODE ip // extract opcode from rINST
GOTO_OPCODE ip // jump to next instruction