• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
9    .extern $helper
10    EXPORT_PC
11    FETCH r0, 1                         @ r0<- field ref BBBB
12    ldr   r1, [rFP, #OFF_FP_METHOD]
13    mov   r2, rSELF
14    bl    $helper
15    ldr   r3, [rSELF, #THREAD_EXCEPTION_OFFSET]
16    mov   r2, rINST, lsr #8             @ r2<- AA
17    PREFETCH_INST 2
18    cmp   r3, #0                        @ Fail to resolve?
19    bne   MterpException                @ bail out
20.if $is_object
21    SET_VREG_OBJECT r0, r2              @ fp[AA]<- r0
22.else
23    SET_VREG r0, r2                     @ fp[AA]<- r0
24.endif
25    ADVANCE 2
26    GET_INST_OPCODE ip                  @ extract opcode from rINST
27    GOTO_OPCODE ip
28