1 HANDLE_OPCODE(OP_INSTANCE_OF_JUMBO /*vBBBB, vCCCC, class@AAAAAAAA*/) 2 { 3 ClassObject* clazz; 4 Object* obj; 5 6 ref = FETCH(1) | (u4)FETCH(2) << 16; /* class to check against */ 7 vdst = FETCH(3); 8 vsrc1 = FETCH(4); /* object to check */ 9 ILOGV("|instance-of/jumbo v%d,v%d,class@0x%08x", vdst, vsrc1, ref); 10 11 obj = (Object*)GET_REGISTER(vsrc1); 12 if (obj == NULL) { 13 SET_REGISTER(vdst, 0); 14 } else { 15 #if defined(WITH_EXTRA_OBJECT_VALIDATION) 16 if (!checkForNullExportPC(obj, fp, pc)) 17 GOTO_exceptionThrown(); 18 #endif 19 clazz = dvmDexGetResolvedClass(methodClassDex, ref); 20 if (clazz == NULL) { 21 EXPORT_PC(); 22 clazz = dvmResolveClass(curMethod->clazz, ref, true); 23 if (clazz == NULL) 24 GOTO_exceptionThrown(); 25 } 26 SET_REGISTER(vdst, dvmInstanceof(obj->clazz, clazz)); 27 } 28 } 29 FINISH(5); 30 OP_END 31