11452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee /* 21452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee * Unlock an object. 31452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee * 41452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee * Exceptions that occur when unlocking a monitor need to appear as 51452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee * if they happened at the following instruction. See the Dalvik 61452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee * instruction spec. 71452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee */ 81452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee /* monitor-exit vAA */ 91452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee EXPORT_PC 101452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee mov r2, rINST, lsr #8 @ r2<- AA 111452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee GET_VREG r0, r2 @ r0<- vAA (object) 121452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee mov r1, rSELF @ r0<- self 131452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee bl artUnlockObjectFromCode @ r0<- success for unlock(self, obj) 141452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee cmp r0, #0 @ failed? 151452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee bne MterpException 161452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee FETCH_ADVANCE_INST 1 @ before throw: advance rPC, load rINST 171452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee GET_INST_OPCODE ip @ extract opcode from rINST 181452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee GOTO_OPCODE ip @ jump to next instruction 19