• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download

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