Home | History | Annotate | Download | only in c
      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