1200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    /*
2200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung     * Array object get.  vAA <- vBB[vCC].
3200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung     *
4200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung     * for: aget-object
5200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung     */
6200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    /* op vAA, vBB, vCC */
7200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    FETCH_B(a2, 1, 0)                      #  a2 <- BB
8200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    GET_OPA(rOBJ)                          #  rOBJ <- AA
9200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    FETCH_B(a3, 1, 1)                      #  a3 <- CC
10200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    EXPORT_PC()
11200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    GET_VREG(a0, a2)                       #  a0 <- vBB (array object)
12200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    GET_VREG(a1, a3)                       #  a1 <- vCC (requested index)
13200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    JAL(artAGetObjectFromMterp)            #  v0 <- GetObj(array, index)
14200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    lw   a1, THREAD_EXCEPTION_OFFSET(rSELF)
15200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    PREFETCH_INST(2)                       #  load rINST
16200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    bnez a1, MterpException
17200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    ADVANCE(2)                             #  advance rPC
18200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung    GET_INST_OPCODE(t0)                    #  extract opcode from rINST
1984603bf8535ba8390e0461b9d9c7917939e26312Alexey Frunze    SET_VREG_OBJECT_GOTO(v0, rOBJ, t0)     #  vAA <- v0
20