Home | History | Annotate | Download | only in arm
      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    r0, 1                         @ r0<- field ref CCCC
      9     mov      r1, rINST, lsr #12            @ r1<- B
     10     GET_VREG r1, r1                        @ r1<- fp[B], the object pointer
     11     ldr      r2, [rFP, #OFF_FP_METHOD]     @ r2<- referrer
     12     mov      r3, rSELF                     @ r3<- self
     13     bl       $helper
     14     ldr      r3, [rSELF, #THREAD_EXCEPTION_OFFSET]
     15     ubfx     r2, rINST, #8, #4             @ r2<- A
     16     PREFETCH_INST 2
     17     cmp      r3, #0
     18     bne      MterpPossibleException        @ bail out
     19     .if $is_object
     20     SET_VREG_OBJECT r0, r2                 @ fp[A]<- r0
     21     .else
     22     SET_VREG r0, r2                        @ fp[A]<- r0
     23     .endif
     24     ADVANCE 2
     25     GET_INST_OPCODE ip                     @ extract opcode from rINST
     26     GOTO_OPCODE ip                         @ jump to next instruction
     27