Home | History | Annotate | Download | only in x86_64
      1 %default { "is_object":"0", "helper":"artGet32InstanceFromCode", "wide":"0"}
      2 /*
      3  * General instance field get.
      4  *
      5  * for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short, iget-wide
      6  */
      7     EXPORT_PC
      8     movzbq  rINSTbl, %rcx                   # rcx <- BA
      9     movzwl  2(rPC), OUT_32_ARG0             # eax <- field ref CCCC
     10     sarl    $$4, %ecx                       # ecx <- B
     11     GET_VREG OUT_32_ARG1, %rcx              # the object pointer
     12     movq    OFF_FP_METHOD(rFP), OUT_ARG2    # referrer
     13     movq    rSELF, OUT_ARG3
     14     call    SYMBOL($helper)
     15     movq    rSELF, %rcx
     16     cmpq    $$0, THREAD_EXCEPTION_OFFSET(%rcx)
     17     jnz     MterpException                  # bail out
     18     andb    $$0xf, rINSTbl                  # rINST <- A
     19     .if $is_object
     20     SET_VREG_OBJECT %eax, rINSTq            # fp[A] <-value
     21     .else
     22     .if $wide
     23     SET_WIDE_VREG %rax, rINSTq              # fp[A] <-value
     24     .else
     25     SET_VREG %eax, rINSTq                   # fp[A] <-value
     26     .endif
     27     .endif
     28     ADVANCE_PC_FETCH_AND_GOTO_NEXT 2
     29