HANDLE_OPCODE(OP_INSTANCE_OF_JUMBO)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