Home | History | Annotate | Download | only in arm64
      1 %default { "extend":"", "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    w0, 1                         // w0<- field ref CCCC
      9     lsr      w1, wINST, #12                // w1<- B
     10     GET_VREG w1, w1                        // w1<- fp[B], the object pointer
     11     ldr      x2, [xFP, #OFF_FP_METHOD]     // w2<- referrer
     12     mov      x3, xSELF                     // w3<- self
     13     bl       $helper
     14     ldr      x3, [xSELF, #THREAD_EXCEPTION_OFFSET]
     15     $extend
     16     ubfx     w2, wINST, #8, #4             // w2<- A
     17     PREFETCH_INST 2
     18     cbnz     x3, MterpPossibleException    // bail out
     19     .if $is_object
     20     SET_VREG_OBJECT w0, w2                 // fp[A]<- w0
     21     .else
     22     SET_VREG w0, w2                        // fp[A]<- w0
     23     .endif
     24     ADVANCE 2
     25     GET_INST_OPCODE ip                     // extract opcode from rINST
     26     GOTO_OPCODE ip                         // jump to next instruction
     27