Home | History | Annotate | Download | only in mips
      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     GET_OPA(a2)                            #  a2 <- AA
     13     EXPORT_PC()                            #  before fetch: export the PC
     14     GET_VREG(a1, a2)                       #  a1 <- vAA (object)
     15     # null object?
     16     beqz      a1, 1f
     17     move      a0, rSELF                    #  a0 <- self
     18     JAL(dvmUnlockObject)                   #  v0 <- success for unlock(self, obj)
     19     # failed?
     20     FETCH_ADVANCE_INST(1)                  #  before throw: advance rPC, load rINST
     21     beqz      v0, common_exceptionThrown   #  yes, exception is pending
     22     GET_INST_OPCODE(t0)                    #  extract opcode from rINST
     23     GOTO_OPCODE(t0)                        #  jump to next instruction
     24 1:
     25     FETCH_ADVANCE_INST(1)                  #  before throw: advance rPC, load rINST
     26     b         common_errNullObject
     27