blob: 0249d96bc6b9bb629f169abd50f47f8504fd64ee [file] [log] [blame]
HANDLE_OPCODE(OP_INSTANCE_OF_JUMBO /*vBBBB, vCCCC, class@AAAAAAAA*/)
{
ClassObject* clazz;
Object* obj;
ref = FETCH(1) | (u4)FETCH(2) << 16; /* class to check against */
vdst = FETCH(3);
vsrc1 = FETCH(4); /* object to check */
ILOGV("|instance-of/jumbo v%d,v%d,class@0x%08x", vdst, vsrc1, ref);
obj = (Object*)GET_REGISTER(vsrc1);
if (obj == NULL) {
SET_REGISTER(vdst, 0);
} else {
#if defined(WITH_EXTRA_OBJECT_VALIDATION)
if (!checkForNullExportPC(obj, fp, pc))
GOTO_exceptionThrown();
#endif
clazz = dvmDexGetResolvedClass(methodClassDex, ref);
if (clazz == NULL) {
EXPORT_PC();
clazz = dvmResolveClass(curMethod->clazz, ref, true);
if (clazz == NULL)
GOTO_exceptionThrown();
}
SET_REGISTER(vdst, dvmInstanceof(obj->clazz, clazz));
}
}
FINISH(5);
OP_END