Home | History | Annotate | Download | only in mips
      1     /*
      2      * Check to see if an object reference is an instance of a class.
      3      *
      4      * Most common situation is a non-null object, being compared against
      5      * an already-resolved class.
      6      */
      7     # instance-of vA, vB, class            /* CCCC */
      8     EXPORT_PC()
      9     FETCH(a0, 1)                           # a0 <- CCCC
     10     GET_OPB(a1)                            # a1 <- B
     11     EAS2(a1, rFP, a1)                      # a1 <- &object
     12     lw    a2, OFF_FP_METHOD(rFP)           # a2 <- method
     13     move  a3, rSELF                        # a3 <- self
     14     GET_OPA4(rOBJ)                         # rOBJ <- A+
     15     JAL(MterpInstanceOf)                   # v0 <- Mterp(index, &obj, method, self)
     16     lw   a1, THREAD_EXCEPTION_OFFSET(rSELF)
     17     PREFETCH_INST(2)                       # load rINST
     18     bnez a1, MterpException
     19     ADVANCE(2)                             # advance rPC
     20     GET_INST_OPCODE(t0)                    # extract opcode from rINST
     21     SET_VREG_GOTO(v0, rOBJ, t0)            # vA <- v0
     22