• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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