• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download

HANDLE_OPCODE(OP_FILL_ARRAY_DATA)1 HANDLE_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     }
27 OP_END
28