Home | History | Annotate | Download | only in armv5te
      1 %verify "executed"
      2 %verify "exception for null object (impossible in javac)"
      3 %verify "dvmUnlockObject fails"
      4     /*
      5      * Unlock an object.
      6      *
      7      * Exceptions that occur when unlocking a monitor need to appear as
      8      * if they happened at the following instruction.  See the Dalvik
      9      * instruction spec.
     10      */
     11     /* monitor-exit vAA */
     12     mov     r2, rINST, lsr #8           @ r2<- AA
     13     EXPORT_PC()                         @ before fetch: export the PC
     14     GET_VREG(r1, r2)                    @ r1<- vAA (object)
     15     cmp     r1, #0                      @ null object?
     16     beq     1f                          @ yes
     17     ldr     r0, [rGLUE, #offGlue_self]  @ r0<- glue->self
     18     bl      dvmUnlockObject             @ r0<- success for unlock(self, obj)
     19     cmp     r0, #0                      @ failed?
     20     FETCH_ADVANCE_INST(1)               @ before throw: advance rPC, load rINST
     21     beq     common_exceptionThrown      @ yes, exception is pending
     22     GET_INST_OPCODE(ip)                 @ extract opcode from rINST
     23     GOTO_OPCODE(ip)                     @ jump to next instruction
     24 1:
     25     FETCH_ADVANCE_INST(1)               @ advance before throw
     26     b      common_errNullObject
     27