Home | History | Annotate | Download | only in mips
      1 %default { "is_object":"0", "helper":"artGet32InstanceFromCode"}
      2     /*
      3      * General instance field get.
      4      *
      5      * for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short
      6      */
      7     /* op vA, vB, field@CCCC */
      8     EXPORT_PC()
      9     FETCH(a0, 1)                           # a0 <- field ref CCCC
     10     GET_OPB(a1)                            # a1 <- B
     11     GET_VREG(a1, a1)                       # a1 <- fp[B], the object pointer
     12     lw    a2, OFF_FP_METHOD(rFP)           # a2 <- referrer
     13     move  a3, rSELF                        # a3 <- self
     14     JAL($helper)
     15     lw   a3, THREAD_EXCEPTION_OFFSET(rSELF)
     16     GET_OPA4(a2)                           # a2<- A+
     17     PREFETCH_INST(2)                       # load rINST
     18     bnez  a3, MterpPossibleException        # bail out
     19     ADVANCE(2)                             #  advance rPC
     20     GET_INST_OPCODE(t0)                    #  extract opcode from rINST
     21     .if $is_object
     22     SET_VREG_OBJECT_GOTO(v0, a2, t0)       # fp[A] <- v0
     23     .else
     24     SET_VREG_GOTO(v0, a2, t0)              # fp[A] <- v0
     25     .endif
     26