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