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     EXPORT_PC()
      8     FETCH(a0, 1)                           # a0 <- field ref CCCC
      9     GET_OPB(a1)                            # a1 <- B
     10     GET_VREG(a1, a1)                       # a1 <- fp[B], the object pointer
     11     lw    a2, OFF_FP_METHOD(rFP)           # a2 <- referrer
     12     move  a3, rSELF                        # a3 <- self
     13     JAL($helper)
     14     lw   a3, THREAD_EXCEPTION_OFFSET(rSELF)
     15     GET_OPA4(a2)                           # a2<- A+
     16     PREFETCH_INST(2)                       # load rINST
     17     bnez  a3, MterpPossibleException        # bail out
     18     .if $is_object
     19     SET_VREG_OBJECT(v0, a2)                # fp[A] <- v0
     20     .else
     21     SET_VREG(v0, a2)                       # fp[A] <- v0
     22     .endif
     23     ADVANCE(2)                             #  advance rPC
     24     GET_INST_OPCODE(t0)                    #  extract opcode from rINST
     25     GOTO_OPCODE(t0)                        #  jump to next instruction
     26