Home | History | Annotate | Download | only in x86_64
      1 %default { "is_object":"0", "helper":"MterpGet32Static", "wide":"0" }
      2 /*
      3  * General SGET handler wrapper.
      4  *
      5  * for: sget, sget-object, sget-boolean, sget-byte, sget-char, sget-short, sget-wide
      6  */
      7     /* op vAA, field@BBBB */
      8     .extern $helper
      9     EXPORT_PC
     10     movzwq  2(rPC), OUT_ARG0                # field ref CCCC
     11     movq    OFF_FP_METHOD(rFP), OUT_ARG1    # referrer
     12     movq    rSELF, OUT_ARG2                 # self
     13     call    SYMBOL($helper)
     14     movq    rSELF, %rcx
     15     cmpl    $$0, THREAD_EXCEPTION_OFFSET(%rcx)
     16     jnz     MterpException
     17     .if $is_object
     18     SET_VREG_OBJECT %eax, rINSTq            # fp[A] <- value
     19     .else
     20     .if $wide
     21     SET_WIDE_VREG %rax, rINSTq              # fp[A] <- value
     22     .else
     23     SET_VREG %eax, rINSTq                   # fp[A] <- value
     24     .endif
     25     .endif
     26     ADVANCE_PC_FETCH_AND_GOTO_NEXT 2
     27