HANDLE_OPCODE(OP_CHECK_CAST /*vAA, class@BBBB*/) { ClassObject* clazz; Object* obj; EXPORT_PC(); vsrc1 = INST_AA(inst); ref = FETCH(1); /* class to check against */ ILOGV("|check-cast v%d,class@0x%04x", vsrc1, ref); obj = (Object*)GET_REGISTER(vsrc1); if (obj != NULL) { #if defined(WITH_EXTRA_OBJECT_VALIDATION) if (!checkForNull(obj)) GOTO_exceptionThrown(); #endif clazz = dvmDexGetResolvedClass(methodClassDex, ref); if (clazz == NULL) { clazz = dvmResolveClass(curMethod->clazz, ref, false); if (clazz == NULL) GOTO_exceptionThrown(); } if (!dvmInstanceof(obj->clazz, clazz)) { dvmThrowClassCastException(obj->clazz, clazz); GOTO_exceptionThrown(); } } } FINISH(2); OP_END