• 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             dvmThrowException("Ljava/lang/InternalError;",
18                               "bad fill array data");
19             GOTO_exceptionThrown();
20         }
21 #endif
22         arrayObj = (ArrayObject*) GET_REGISTER(vsrc1);
23         if (!dvmInterpHandleFillArrayData(arrayObj, arrayData)) {
24             GOTO_exceptionThrown();
25         }
26         FINISH(3);
27     }
28 OP_END
29