16cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov/* 26cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov * Unlock an object. 36cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov * 46cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov * Exceptions that occur when unlocking a monitor need to appear as 56cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov * if they happened at the following instruction. See the Dalvik 66cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov * instruction spec. 76cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov */ 86cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov /* monitor-exit vAA */ 96cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov EXPORT_PC 106cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov GET_VREG OUT_32_ARG0, rINSTq 116cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov movq rSELF, OUT_ARG1 126cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov call SYMBOL(artUnlockObjectFromCode) # (object, self) 136cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov testq %rax, %rax 146cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov jnz MterpException 156cbe0814952bd3bbb329c4ca4dc683ac87c2c2deSerguei Katkov ADVANCE_PC_FETCH_AND_GOTO_NEXT 1 16