1    /*
2     * Array put, 64 bits.  vBB[vCC] <- vAA.
3     *
4     */
5    /* aput-wide vAA, vBB, vCC */
6    FETCH w0, 1                         // w0<- CCBB
7    lsr     w4, wINST, #8               // w4<- AA
8    and     w2, w0, #255                // w2<- BB
9    lsr     w3, w0, #8                  // w3<- CC
10    GET_VREG w0, w2                     // w0<- vBB (array object)
11    GET_VREG w1, w3                     // w1<- vCC (requested index)
12    cbz     w0, common_errNullObject    // bail if null
13    ldr     w3, [x0, #MIRROR_ARRAY_LENGTH_OFFSET]    // w3<- arrayObj->length
14    add     x0, x0, w1, lsl #3          // w0<- arrayObj + index*width
15    cmp     w1, w3                      // compare unsigned index, length
16    bcs     common_errArrayIndex        // index >= length, bail
17    GET_VREG_WIDE x1, w4
18    FETCH_ADVANCE_INST 2                // advance rPC, load wINST
19    GET_INST_OPCODE ip                  // extract opcode from wINST
20    str     x1, [x0, #MIRROR_WIDE_ARRAY_DATA_OFFSET]
21    GOTO_OPCODE ip                      // jump to next instruction
22