OP_AGET_WIDE.S revision f6c387128427e121477c1b32ad35cdcaa5101ba3
1%verify "executed"
2    /*
3     * Array get, 64 bits.  vAA <- vBB[vCC].
4     *
5     */
6    /* op vAA, vBB, vCC */
7    movzbl    2(rPC),%eax               # eax<- BB
8    movzbl    3(rPC),%ecx               # ecx<- CC
9    movzbl    rINST_HI,rINST_FULL       # rINST_FULL<- AA
10    GET_VREG(%eax,%eax)                 # eax<- vBB (array object)
11    GET_VREG(%ecx,%ecx)                 # ecs<- vCC (requested index)
12    testl     %eax,%eax                 # null array object?
13    je        common_errNullObject      # bail if so
14    cmpl      offArrayObject_length(%eax),%ecx
15    jb        .L${opcode}_finish        # index < length, OK
16    jmp       common_errArrayIndex      # index >= length, bail
17%break
18
19.L${opcode}_finish:
20    leal      offArrayObject_contents(%eax,%ecx,8),%eax
21    movl      (%eax),%ecx
22    movl      4(%eax),%eax
23    SET_VREG_WORD(%ecx,rINST_FULL,0)
24    SET_VREG_WORD(%eax,rINST_FULL,1)
25    FETCH_INST_WORD(2)
26    ADVANCE_PC(2)
27    GOTO_NEXT
28
29