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