Home | History | Annotate | Download | only in c
      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