Home | History | Annotate | Download | only in mips64
      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     .extern $helper
      8     EXPORT_PC
      9     lhu      a0, 2(rPC)                 # a0 <- field ref CCCC
     10     srl      a1, rINST, 12              # a1 <- B
     11     GET_VREG_U a1, a1                   # a1 <- fp[B], the object pointer
     12     ld       a2, OFF_FP_METHOD(rFP)     # a2 <- referrer
     13     move     a3, rSELF                  # a3 <- self
     14     jal      $helper
     15     ld       a3, THREAD_EXCEPTION_OFFSET(rSELF)
     16     ext      a2, rINST, 8, 4            # a2 <- A
     17     PREFETCH_INST 2
     18     bnez     a3, MterpPossibleException # bail out
     19     .if $is_object
     20     SET_VREG_OBJECT v0, a2              # fp[A] <- v0
     21     .else
     22     SET_VREG v0, a2                     # fp[A] <- v0
     23     .endif
     24     ADVANCE 2
     25     GET_INST_OPCODE v0                  # extract opcode from rINST
     26     GOTO_OPCODE v0                      # jump to next instruction
     27