1HANDLE_OPCODE(OP_FILL_ARRAY_DATA)   /*vAA, +BBBBBBBB*/
2    {
3        const u2* arrayData;
4        s4 offset;
5        ArrayObject* arrayObj;
6
7        EXPORT_PC();
8        vsrc1 = INST_AA(inst);
9        offset = FETCH(1) | (((s4) FETCH(2)) << 16);
10        ILOGV("|fill-array-data v%d +0x%04x", vsrc1, offset);
11        arrayData = pc + offset;       // offset in 16-bit units
12#ifndef NDEBUG
13        if (arrayData < curMethod->insns ||
14            arrayData >= curMethod->insns + dvmGetMethodInsnsSize(curMethod))
15        {
16            /* should have been caught in verifier */
17            dvmThrowInternalError("bad fill array data");
18            GOTO_exceptionThrown();
19        }
20#endif
21        arrayObj = (ArrayObject*) GET_REGISTER(vsrc1);
22        if (!dvmInterpHandleFillArrayData(arrayObj, arrayData)) {
23            GOTO_exceptionThrown();
24        }
25        FINISH(3);
26    }
27OP_END
28