Lines Matching refs:clazz
176 static void loadMethodFromDex(ClassObject* clazz, const DexMethod* pDexMethod,\
179 static void loadSFieldFromDex(ClassObject* clazz,
181 static void loadIFieldFromDex(ClassObject* clazz,
184 static bool createVtable(ClassObject* clazz);
185 static bool createIftable(ClassObject* clazz);
186 static bool insertMethodStubs(ClassObject* clazz);
187 static bool computeFieldOffsets(ClassObject* clazz);
188 static void throwEarlierClassFailure(ClassObject* clazz);
198 static void logClassLoadWithTime(char type, ClassObject* clazz, u8 time) { in logClassLoadWithTime() argument
204 get_process_name(), (int) clazz->classLoader, clazz->descriptor, in logClassLoadWithTime()
211 static void logClassLoad(char type, ClassObject* clazz) { in logClassLoad() argument
212 logClassLoadWithTime(type, clazz, dvmGetThreadCpuTimeNsec()); in logClassLoad()
822 static InitiatingLoaderList *dvmGetInitiatingLoaderList(ClassObject* clazz) in dvmGetInitiatingLoaderList() argument
824 assert(clazz->serialNumber > INITIAL_CLASS_SERIAL_NUMBER); in dvmGetInitiatingLoaderList()
825 int classIndex = clazz->serialNumber-INITIAL_CLASS_SERIAL_NUMBER; in dvmGetInitiatingLoaderList()
830 return &(clazz->initiatingLoaderList); in dvmGetInitiatingLoaderList()
844 bool dvmLoaderInInitiatingList(const ClassObject* clazz, const Object* loader) in dvmLoaderInInitiatingList() argument
858 ClassObject* nonConstClazz = (ClassObject*) clazz; in dvmLoaderInInitiatingList()
882 void dvmAddInitiatingLoader(ClassObject* clazz, Object* loader) in dvmAddInitiatingLoader() argument
884 if (loader != clazz->classLoader) { in dvmAddInitiatingLoader()
887 LOGVV("Adding %p to '%s' init list\n", loader, clazz->descriptor); in dvmAddInitiatingLoader()
908 InitiatingLoaderList *loaderList = dvmGetInitiatingLoaderList(clazz); in dvmAddInitiatingLoader()
950 const ClassObject* clazz = (const ClassObject*) vclazz; in hashcmpClassByCrit() local
954 match = (strcmp(clazz->descriptor, pCrit->descriptor) == 0 && in hashcmpClassByCrit()
955 (clazz->classLoader == pCrit->loader || in hashcmpClassByCrit()
957 dvmLoaderInInitiatingList(clazz, pCrit->loader)) )); in hashcmpClassByCrit()
971 const ClassObject* clazz = (const ClassObject*) vclazz; in hashcmpClassByClass() local
975 match = (strcmp(clazz->descriptor, addClazz->descriptor) == 0 && in hashcmpClassByClass()
976 (clazz->classLoader == addClazz->classLoader || in hashcmpClassByClass()
978 dvmLoaderInInitiatingList(clazz, addClazz->classLoader)) )); in hashcmpClassByClass()
1049 bool dvmAddClassToHash(ClassObject* clazz) in dvmAddClassToHash() argument
1054 hash = dvmComputeUtf8Hash(clazz->descriptor); in dvmAddClassToHash()
1057 found = dvmHashTableLookup(gDvm.loadedClasses, hash, clazz, in dvmAddClassToHash()
1062 clazz->descriptor, clazz->classLoader, in dvmAddClassToHash()
1063 (found == (void*) clazz), clazz); in dvmAddClassToHash()
1068 return (found == (void*) clazz); in dvmAddClassToHash()
1095 static void removeClassFromHash(ClassObject* clazz) in removeClassFromHash() argument
1097 LOGV("+++ removeClassFromHash '%s'\n", clazz->descriptor); in removeClassFromHash()
1099 u4 hash = dvmComputeUtf8Hash(clazz->descriptor); in removeClassFromHash()
1102 if (!dvmHashTableRemove(gDvm.loadedClasses, hash, clazz)) in removeClassFromHash()
1103 LOGW("Hash table remove failed on class '%s'\n", clazz->descriptor); in removeClassFromHash()
1120 void dvmSetClassSerialNumber(ClassObject* clazz) in dvmSetClassSerialNumber() argument
1124 assert(clazz->serialNumber == 0); in dvmSetClassSerialNumber()
1131 clazz->serialNumber = (u4) oldValue; in dvmSetClassSerialNumber()
1147 ClassObject* clazz; in dvmFindClass() local
1149 clazz = dvmFindClassNoInit(descriptor, loader); in dvmFindClass()
1150 if (clazz != NULL && clazz->status < CLASS_INITIALIZED) { in dvmFindClass()
1152 if (!dvmInitClass(clazz)) { in dvmFindClass()
1155 assert(clazz->status == CLASS_ERROR); in dvmFindClass()
1160 return clazz; in dvmFindClass()
1211 ClassObject* clazz; in findClassFromLoaderNoInit() local
1225 clazz = dvmLookupClass(descriptor, loader, false); in findClassFromLoaderNoInit()
1226 if (clazz != NULL) { in findClassFromLoaderNoInit()
1228 return clazz; in findClassFromLoaderNoInit()
1251 loadClass = dvmFindVirtualMethodHierByDescriptor(loader->clazz, "loadClass", in findClassFromLoaderNoInit()
1271 clazz = (ClassObject*) result.l; in findClassFromLoaderNoInit()
1281 dotName, loader, excep->clazz->descriptor); in findClassFromLoaderNoInit()
1288 clazz = NULL; in findClassFromLoaderNoInit()
1291 assert(clazz != NULL); in findClassFromLoaderNoInit()
1294 dvmAddInitiatingLoader(clazz, loader); in findClassFromLoaderNoInit()
1297 descriptor, clazz->classLoader, loader, clazz); in findClassFromLoaderNoInit()
1302 return clazz; in findClassFromLoaderNoInit()
1329 ClassObject* clazz; in dvmFindSystemClass() local
1331 clazz = dvmFindSystemClassNoInit(descriptor); in dvmFindSystemClass()
1332 if (clazz != NULL && clazz->status < CLASS_INITIALIZED) { in dvmFindSystemClass()
1334 if (!dvmInitClass(clazz)) { in dvmFindSystemClass()
1337 assert(clazz->status == CLASS_ERROR); in dvmFindSystemClass()
1342 return clazz; in dvmFindSystemClass()
1374 ClassObject* clazz; in findClassNoInit() local
1398 descriptor, dvmGetException(self)->clazz->descriptor); in findClassNoInit()
1403 clazz = dvmLookupClass(descriptor, loader, true); in findClassNoInit()
1404 if (clazz == NULL) { in findClassNoInit()
1430 clazz = loadClassFromDex(pDvmDex, pClassDef, loader); in findClassNoInit()
1433 dvmReleaseTrackedAlloc((Object*) clazz, NULL); in findClassNoInit()
1442 dvmLockObject(self, (Object*) clazz); in findClassNoInit()
1443 clazz->initThreadId = self->threadId; in findClassNoInit()
1450 assert(clazz->classLoader == loader); in findClassNoInit()
1451 if (!dvmAddClassToHash(clazz)) { in findClassNoInit()
1460 clazz->initThreadId = 0; in findClassNoInit()
1461 dvmUnlockObject(self, (Object*) clazz); in findClassNoInit()
1465 assert(clazz->obj.clazz == gDvm.unlinkedJavaLangClass); in findClassNoInit()
1466 dvmReleaseTrackedAlloc((Object*) clazz, NULL); in findClassNoInit()
1470 clazz = dvmLookupClass(descriptor, loader, true); in findClassNoInit()
1471 assert(clazz != NULL); in findClassNoInit()
1474 dvmReleaseTrackedAlloc((Object*) clazz, NULL); in findClassNoInit()
1477 logClassLoadWithTime('>', clazz, startTime); in findClassNoInit()
1482 if (!dvmLinkClass(clazz, false)) { in findClassNoInit()
1487 removeClassFromHash(clazz); in findClassNoInit()
1488 clazz->status = CLASS_ERROR; in findClassNoInit()
1489 dvmFreeClassInnards(clazz); in findClassNoInit()
1493 clazz->initThreadId = 0; in findClassNoInit()
1494 dvmObjectNotifyAll(self, (Object*) clazz); in findClassNoInit()
1495 dvmUnlockObject(self, (Object*) clazz); in findClassNoInit()
1499 clazz->descriptor, get_process_name()); in findClassNoInit()
1506 logClassLoad('<', clazz); in findClassNoInit()
1508 clazz = NULL; in findClassNoInit()
1517 dvmObjectNotifyAll(self, (Object*) clazz); in findClassNoInit()
1518 dvmUnlockObject(self, (Object*) clazz); in findClassNoInit()
1527 clazz->virtualMethodCount + clazz->directMethodCount; in findClassNoInit()
1528 gDvm.numDeclaredInstFields += clazz->ifieldCount; in findClassNoInit()
1529 gDvm.numDeclaredStaticFields += clazz->sfieldCount; in findClassNoInit()
1544 gDvm.classJavaLangObject = clazz; in findClassNoInit()
1548 logClassLoad('<', clazz); in findClassNoInit()
1553 if (!dvmIsClassLinked(clazz) && clazz->status != CLASS_ERROR) { in findClassNoInit()
1566 dvmLockObject(self, (Object*) clazz); in findClassNoInit()
1567 if (!dvmIsClassLinked(clazz) && in findClassNoInit()
1568 clazz->initThreadId == self->threadId) in findClassNoInit()
1570 LOGW("Recursive link on class %s\n", clazz->descriptor); in findClassNoInit()
1571 dvmUnlockObject(self, (Object*) clazz); in findClassNoInit()
1573 "Ljava/lang/ClassCircularityError;", clazz->descriptor); in findClassNoInit()
1574 clazz = NULL; in findClassNoInit()
1579 while (!dvmIsClassLinked(clazz) && clazz->status != CLASS_ERROR) { in findClassNoInit()
1580 dvmObjectWait(self, (Object*) clazz, 0, 0, false); in findClassNoInit()
1582 dvmUnlockObject(self, (Object*) clazz); in findClassNoInit()
1584 if (clazz->status == CLASS_ERROR) { in findClassNoInit()
1589 throwEarlierClassFailure(clazz); in findClassNoInit()
1590 clazz = NULL; in findClassNoInit()
1596 assert(dvmIsClassLinked(clazz)); in findClassNoInit()
1598 assert(clazz->obj.clazz == gDvm.classJavaLangClass); in findClassNoInit()
1599 if (clazz != gDvm.classJavaLangObject) { in findClassNoInit()
1600 if (clazz->super == NULL) { in findClassNoInit()
1606 if (!dvmIsInterfaceClass(clazz)) { in findClassNoInit()
1610 assert(clazz->vtableCount >= clazz->virtualMethodCount); in findClassNoInit()
1621 if (clazz == gDvm.classJavaLangClass && !dvmIsClassInitialized(clazz) && in findClassNoInit()
1622 !(clazz->status == CLASS_VERIFYING)) in findClassNoInit()
1624 LOGV("+++ explicitly initializing %s\n", clazz->descriptor); in findClassNoInit()
1625 dvmInitClass(clazz); in findClassNoInit()
1633 assert(clazz != NULL || dvmCheckException(self)); in findClassNoInit()
1634 return clazz; in findClassNoInit()
1857 void dvmFreeClassInnards(ClassObject* clazz) in dvmFreeClassInnards() argument
1862 if (clazz == NULL) in dvmFreeClassInnards()
1865 assert(clazz->obj.clazz == gDvm.classJavaLangClass || in dvmFreeClassInnards()
1866 clazz->obj.clazz == gDvm.unlinkedJavaLangClass); in dvmFreeClassInnards()
1892 dvmLinearFree(clazz->classLoader, tp); \ in dvmFreeClassInnards()
1900 clazz->vtableCount = -1; in dvmFreeClassInnards()
1901 if (dvmIsArrayClass(clazz)) { in dvmFreeClassInnards()
1902 clazz->vtable = NULL; in dvmFreeClassInnards()
1904 NULL_AND_LINEAR_FREE(clazz->vtable); in dvmFreeClassInnards()
1907 clazz->descriptor = NULL; in dvmFreeClassInnards()
1908 NULL_AND_FREE(clazz->descriptorAlloc); in dvmFreeClassInnards()
1910 if (clazz->directMethods != NULL) { in dvmFreeClassInnards()
1911 Method *directMethods = clazz->directMethods; in dvmFreeClassInnards()
1912 int directMethodCount = clazz->directMethodCount; in dvmFreeClassInnards()
1913 clazz->directMethods = NULL; in dvmFreeClassInnards()
1914 clazz->directMethodCount = -1; in dvmFreeClassInnards()
1918 dvmLinearFree(clazz->classLoader, directMethods); in dvmFreeClassInnards()
1920 if (clazz->virtualMethods != NULL) { in dvmFreeClassInnards()
1921 Method *virtualMethods = clazz->virtualMethods; in dvmFreeClassInnards()
1922 int virtualMethodCount = clazz->virtualMethodCount; in dvmFreeClassInnards()
1923 clazz->virtualMethodCount = -1; in dvmFreeClassInnards()
1924 clazz->virtualMethods = NULL; in dvmFreeClassInnards()
1928 dvmLinearFree(clazz->classLoader, virtualMethods); in dvmFreeClassInnards()
1931 InitiatingLoaderList *loaderList = dvmGetInitiatingLoaderList(clazz); in dvmFreeClassInnards()
1935 clazz->interfaceCount = -1; in dvmFreeClassInnards()
1936 NULL_AND_LINEAR_FREE(clazz->interfaces); in dvmFreeClassInnards()
1938 clazz->iftableCount = -1; in dvmFreeClassInnards()
1939 NULL_AND_LINEAR_FREE(clazz->iftable); in dvmFreeClassInnards()
1941 clazz->ifviPoolCount = -1; in dvmFreeClassInnards()
1942 NULL_AND_LINEAR_FREE(clazz->ifviPool); in dvmFreeClassInnards()
1944 clazz->sfieldCount = -1; in dvmFreeClassInnards()
1945 NULL_AND_FREE(clazz->sfields); in dvmFreeClassInnards()
1947 clazz->ifieldCount = -1; in dvmFreeClassInnards()
1948 NULL_AND_LINEAR_FREE(clazz->ifields); in dvmFreeClassInnards()
1991 static void loadMethodFromDex(ClassObject* clazz, const DexMethod* pDexMethod, in loadMethodFromDex() argument
1994 DexFile* pDexFile = clazz->pDvmDex->pDexFile; in loadMethodFromDex()
2004 meth->clazz = clazz; in loadMethodFromDex()
2008 SET_CLASS_FLAG(clazz, CLASS_ISFINALIZABLE); in loadMethodFromDex()
2106 static void loadSFieldFromDex(ClassObject* clazz, in loadSFieldFromDex() argument
2109 DexFile* pDexFile = clazz->pDvmDex->pDexFile; in loadSFieldFromDex()
2114 sfield->field.clazz = clazz; in loadSFieldFromDex()
2134 static void loadIFieldFromDex(ClassObject* clazz, in loadIFieldFromDex() argument
2137 DexFile* pDexFile = clazz->pDvmDex->pDexFile; in loadIFieldFromDex()
2142 ifield->field.clazz = clazz; in loadIFieldFromDex()
2159 static bool precacheReferenceOffsets(ClassObject *clazz) in precacheReferenceOffsets() argument
2172 dvmLinearReadWrite(clazz->classLoader, clazz->ifields); in precacheReferenceOffsets()
2173 for (i = 0; i < clazz->ifieldRefCount; i++) { in precacheReferenceOffsets()
2174 InstField *pField = &clazz->ifields[i]; in precacheReferenceOffsets()
2180 targetIndex = clazz->ifieldRefCount - 1; in precacheReferenceOffsets()
2182 InstField *swapField = &clazz->ifields[targetIndex]; in precacheReferenceOffsets()
2201 clazz->ifieldRefCount--; in precacheReferenceOffsets()
2206 dvmLinearReadOnly(clazz->classLoader, clazz->ifields); in precacheReferenceOffsets()
2207 if (i == clazz->ifieldRefCount) { in precacheReferenceOffsets()
2208 LOGE("Unable to reorder 'referent' in %s\n", clazz->descriptor); in precacheReferenceOffsets()
2216 gDvm.classJavaLangRefReference = clazz; in precacheReferenceOffsets()
2239 meth = dvmFindVirtualMethodByDescriptor(clazz, "clear", "()V"); in precacheReferenceOffsets()
2243 meth = dvmFindVirtualMethodByDescriptor(clazz, "enqueue", "()Z"); in precacheReferenceOffsets()
2248 meth = dvmFindDirectMethodByDescriptor(clazz, "enqueueInternal", "()Z"); in precacheReferenceOffsets()
2271 bool dvmLinkClass(ClassObject* clazz, bool classesResolved) in dvmLinkClass() argument
2280 LOGV("CLASS: linking '%s'...\n", clazz->descriptor); in dvmLinkClass()
2296 assert(clazz->obj.clazz == gDvm.unlinkedJavaLangClass); in dvmLinkClass()
2306 if (clazz->classLoader == NULL && in dvmLinkClass()
2307 strcmp(clazz->descriptor, "Ljava/lang/Class;") == 0) in dvmLinkClass()
2309 gDvm.classJavaLangClass = clazz; in dvmLinkClass()
2332 superclassIdx = (u4) clazz->super; /* unpack temp store */ in dvmLinkClass()
2333 clazz->super = NULL; in dvmLinkClass()
2335 if (strcmp(clazz->descriptor, "Ljava/lang/Object;") == 0) { in dvmLinkClass()
2349 CLEAR_CLASS_FLAG(clazz, CLASS_ISFINALIZABLE); in dvmLinkClass()
2357 clazz->super = dvmResolveClass(clazz, superclassIdx, false); in dvmLinkClass()
2358 if (clazz->super == NULL) { in dvmLinkClass()
2363 clazz->descriptor, superclassIdx); in dvmLinkClass()
2366 clazz->descriptor, superclassIdx); in dvmLinkClass()
2372 if (dvmIsFinalClass(clazz->super)) { in dvmLinkClass()
2374 clazz->descriptor, clazz->super->descriptor); in dvmLinkClass()
2378 } else if (dvmIsInterfaceClass(clazz->super)) { in dvmLinkClass()
2380 clazz->descriptor, clazz->super->descriptor); in dvmLinkClass()
2384 } else if (!dvmCheckClassAccess(clazz, clazz->super)) { in dvmLinkClass()
2386 clazz->descriptor, clazz->super->descriptor); in dvmLinkClass()
2395 dvmAddTrackedAlloc((Object *)clazz->super, NULL); in dvmLinkClass()
2401 if (IS_CLASS_FLAG_SET(clazz->super, CLASS_ISFINALIZABLE)) { in dvmLinkClass()
2402 SET_CLASS_FLAG(clazz, CLASS_ISFINALIZABLE); in dvmLinkClass()
2408 if (IS_CLASS_FLAG_SET(clazz->super, CLASS_ISREFERENCE)) { in dvmLinkClass()
2414 superRefFlags = GET_CLASS_FLAG_GROUP(clazz->super, in dvmLinkClass()
2418 SET_CLASS_FLAG(clazz, superRefFlags); in dvmLinkClass()
2419 } else if (clazz->classLoader == NULL && in dvmLinkClass()
2420 clazz->super->classLoader == NULL && in dvmLinkClass()
2421 strcmp(clazz->super->descriptor, in dvmLinkClass()
2430 if (strcmp(clazz->descriptor, in dvmLinkClass()
2435 } else if (strcmp(clazz->descriptor, in dvmLinkClass()
2439 } else if (strcmp(clazz->descriptor, in dvmLinkClass()
2455 assert(GET_CLASS_FLAG_GROUP(clazz, in dvmLinkClass()
2460 SET_CLASS_FLAG(clazz, refFlags); in dvmLinkClass()
2464 if (!classesResolved && clazz->interfaceCount > 0) { in dvmLinkClass()
2469 dvmLinearReadWrite(clazz->classLoader, clazz->interfaces); in dvmLinkClass()
2470 for (i = 0; i < clazz->interfaceCount; i++) { in dvmLinkClass()
2473 interfaceIdx = (u4) clazz->interfaces[i]; /* unpack temp store */ in dvmLinkClass()
2476 clazz->interfaces[i] = dvmResolveClass(clazz, interfaceIdx, false); in dvmLinkClass()
2477 if (clazz->interfaces[i] == NULL) { in dvmLinkClass()
2478 const DexFile* pDexFile = clazz->pDvmDex->pDexFile; in dvmLinkClass()
2481 dvmLinearReadOnly(clazz->classLoader, clazz->interfaces); in dvmLinkClass()
2488 clazz->descriptor, interfaceIdx, classDescriptor); in dvmLinkClass()
2491 clazz->descriptor, interfaceIdx, classDescriptor); in dvmLinkClass()
2497 if (!dvmCheckClassAccess(clazz, clazz->interfaces[i])) { in dvmLinkClass()
2498 dvmLinearReadOnly(clazz->classLoader, clazz->interfaces); in dvmLinkClass()
2500 clazz->interfaces[i]->descriptor, clazz->descriptor); in dvmLinkClass()
2509 dvmAddTrackedAlloc((Object *)clazz->interfaces[i], NULL); in dvmLinkClass()
2513 clazz->interfaces[i]->descriptor); in dvmLinkClass()
2515 dvmLinearReadOnly(clazz->classLoader, clazz->interfaces); in dvmLinkClass()
2530 clazz->obj.clazz = gDvm.classJavaLangClass; in dvmLinkClass()
2546 if (clazz->super != NULL) { in dvmLinkClass()
2547 dvmReleaseTrackedAlloc((Object *)clazz->super, NULL); in dvmLinkClass()
2550 dvmReleaseTrackedAlloc((Object *)clazz->interfaces[i], NULL); in dvmLinkClass()
2561 if (dvmIsInterfaceClass(clazz)) { in dvmLinkClass()
2563 int count = clazz->virtualMethodCount; in dvmLinkClass()
2567 clazz->descriptor); in dvmLinkClass()
2571 dvmLinearReadWrite(clazz->classLoader, clazz->virtualMethods); in dvmLinkClass()
2574 clazz->virtualMethods[i].methodIndex = (u2) i; in dvmLinkClass()
2576 dvmLinearReadOnly(clazz->classLoader, clazz->virtualMethods); in dvmLinkClass()
2578 if (!createVtable(clazz)) { in dvmLinkClass()
2587 if (!createIftable(clazz)) in dvmLinkClass()
2593 if (!insertMethodStubs(clazz)) in dvmLinkClass()
2599 if (!computeFieldOffsets(clazz)) in dvmLinkClass()
2606 if (clazz->classLoader == NULL) { in dvmLinkClass()
2607 if (strcmp(clazz->descriptor, "Ljava/lang/ref/Reference;") == 0) { in dvmLinkClass()
2608 if (!precacheReferenceOffsets(clazz)) { in dvmLinkClass()
2613 } else if (clazz == gDvm.classJavaLangClass) { in dvmLinkClass()
2614 gDvm.offJavaLangClass_pd = dvmFindFieldOffset(clazz, "pd", in dvmLinkClass()
2627 if (IS_CLASS_FLAG_SET(clazz, CLASS_ISPREVERIFIED)) in dvmLinkClass()
2628 clazz->status = CLASS_VERIFIED; in dvmLinkClass()
2630 clazz->status = CLASS_RESOLVED; in dvmLinkClass()
2633 LOGV("CLASS: linked '%s'\n", clazz->descriptor); in dvmLinkClass()
2647 dvmDbgPostClassPrepare(clazz); in dvmLinkClass()
2652 clazz->status = CLASS_ERROR; in dvmLinkClass()
2667 static bool createVtable(ClassObject* clazz) in createVtable() argument
2673 if (clazz->super != NULL) { in createVtable()
2679 maxCount = clazz->virtualMethodCount; in createVtable()
2680 if (clazz->super != NULL) { in createVtable()
2681 maxCount += clazz->super->vtableCount; in createVtable()
2686 assert(strcmp(clazz->descriptor, "Ljava/lang/Object;") == 0); in createVtable()
2696 dvmLinearReadWrite(clazz->classLoader, clazz->virtualMethods); in createVtable()
2697 clazz->vtable = (Method**) dvmLinearAlloc(clazz->classLoader, in createVtable()
2699 if (clazz->vtable == NULL) in createVtable()
2702 if (clazz->super != NULL) { in createVtable()
2705 memcpy(clazz->vtable, clazz->super->vtable, in createVtable()
2706 sizeof(*(clazz->vtable)) * clazz->super->vtableCount); in createVtable()
2707 actualCount = clazz->super->vtableCount; in createVtable()
2712 for (i = 0; i < clazz->virtualMethodCount; i++) { in createVtable()
2713 Method* localMeth = &clazz->virtualMethods[i]; in createVtable()
2716 for (si = 0; si < clazz->super->vtableCount; si++) { in createVtable()
2717 Method* superMeth = clazz->vtable[si]; in createVtable()
2724 localMeth->clazz->descriptor, localMeth->name, in createVtable()
2725 superMeth->clazz->descriptor, superMeth->name); in createVtable()
2728 clazz->vtable[si] = localMeth; in createVtable()
2736 if (si == clazz->super->vtableCount) { in createVtable()
2738 clazz->vtable[actualCount] = localMeth; in createVtable()
2749 clazz->descriptor); in createVtable()
2756 assert(clazz->vtable != NULL); in createVtable()
2757 dvmLinearReadOnly(clazz->classLoader, clazz->vtable); in createVtable()
2758 clazz->vtable = dvmLinearRealloc(clazz->classLoader, clazz->vtable, in createVtable()
2759 sizeof(*(clazz->vtable)) * actualCount); in createVtable()
2760 if (clazz->vtable == NULL) { in createVtable()
2769 clazz->vtableCount = actualCount; in createVtable()
2772 int count = clazz->virtualMethodCount; in createVtable()
2775 clazz->descriptor); in createVtable()
2780 clazz->vtable[i] = &clazz->virtualMethods[i]; in createVtable()
2781 clazz->virtualMethods[i].methodIndex = (u2) i; in createVtable()
2783 clazz->vtableCount = clazz->virtualMethodCount; in createVtable()
2789 dvmLinearReadOnly(clazz->classLoader, clazz->vtable); in createVtable()
2790 dvmLinearReadOnly(clazz->classLoader, clazz->virtualMethods); in createVtable()
2811 static bool createIftable(ClassObject* clazz) in createIftable() argument
2820 if (clazz->super != NULL) in createIftable()
2821 superIfCount = clazz->super->iftableCount; in createIftable()
2826 ifCount += clazz->interfaceCount; in createIftable()
2827 for (i = 0; i < clazz->interfaceCount; i++) in createIftable()
2828 ifCount += clazz->interfaces[i]->iftableCount; in createIftable()
2831 clazz->descriptor, ifCount - superIfCount, superIfCount, ifCount); in createIftable()
2834 assert(clazz->iftableCount == 0); in createIftable()
2835 assert(clazz->iftable == NULL); in createIftable()
2844 clazz->iftable = (InterfaceEntry*) dvmLinearAlloc(clazz->classLoader, in createIftable()
2847 memset(clazz->iftable, 0x00, sizeof(InterfaceEntry) * ifCount); in createIftable()
2849 memcpy(clazz->iftable, clazz->super->iftable, in createIftable()
2858 for (i = 0; i < clazz->interfaceCount; i++) { in createIftable()
2862 interf = clazz->interfaces[i]; in createIftable()
2868 clazz->descriptor, interf->descriptor); in createIftable()
2871 clazz->descriptor); in createIftable()
2876 clazz->iftable[idx++].clazz = interf; in createIftable()
2880 clazz->iftable[idx++].clazz = interf->iftable[j].clazz; in createIftable()
2912 if (clazz->iftable[i].clazz == clazz->iftable[j].clazz) { in createIftable()
2914 clazz->iftable[i].clazz->descriptor, in createIftable()
2915 clazz->descriptor); in createIftable()
2918 memmove(&clazz->iftable[i], &clazz->iftable[i+1], in createIftable()
2926 LOGVV("INTF: class '%s' nodupes=%d\n", clazz->descriptor, ifCount); in createIftable()
2929 clazz->iftableCount = ifCount; in createIftable()
2936 if (dvmIsInterfaceClass(clazz) || superIfCount == ifCount) { in createIftable()
2966 clazz->iftable[i].clazz->virtualMethodCount, in createIftable()
2967 clazz->iftable[i].clazz->descriptor); in createIftable()
2968 poolSize += clazz->iftable[i].clazz->virtualMethodCount; in createIftable()
2977 clazz->ifviPoolCount = poolSize; in createIftable()
2978 clazz->ifviPool = (int*) dvmLinearAlloc(clazz->classLoader, in createIftable()
2994 clazz->iftable[i].methodIndexArray = clazz->ifviPool + poolOffset; in createIftable()
2995 interface = clazz->iftable[i].clazz; in createIftable()
3038 for (j = clazz->vtableCount-1; j >= 0; j--) { in createIftable()
3039 if (dvmCompareMethodNamesAndProtos(imeth, clazz->vtable[j]) in createIftable()
3043 if (!dvmIsPublicMethod(clazz->vtable[j])) { in createIftable()
3045 clazz->descriptor, clazz->vtable[j]->name); in createIftable()
3050 clazz->iftable[i].methodIndexArray[methIdx] = j; in createIftable()
3059 imeth->name, desc, clazz->descriptor); in createIftable()
3068 mirandaList = dvmLinearAlloc(clazz->classLoader, in createIftable()
3071 dvmLinearReadOnly(clazz->classLoader, mirandaList); in createIftable()
3072 mirandaList = dvmLinearRealloc(clazz->classLoader, in createIftable()
3093 mirandaList[mir]->clazz->descriptor, in createIftable()
3094 imeth->clazz->descriptor, in createIftable()
3103 clazz->iftable[i].methodIndexArray[methIdx] = in createIftable()
3104 clazz->vtableCount + mir; in createIftable()
3106 imeth->name, clazz->vtableCount + mir); in createIftable()
3125 mirandaList[i]->clazz->descriptor, mirandaList[i]->name); in createIftable()
3133 if (clazz->virtualMethods == NULL) { in createIftable()
3134 newVirtualMethods = (Method*) dvmLinearAlloc(clazz->classLoader, in createIftable()
3135 sizeof(Method) * (clazz->virtualMethodCount + mirandaCount)); in createIftable()
3138 newVirtualMethods = (Method*) dvmLinearRealloc(clazz->classLoader, in createIftable()
3139 clazz->virtualMethods, in createIftable()
3140 sizeof(Method) * (clazz->virtualMethodCount + mirandaCount)); in createIftable()
3142 if (newVirtualMethods != clazz->virtualMethods) { in createIftable()
3160 dvmLinearReadWrite(clazz->classLoader, clazz->vtable); in createIftable()
3162 for (i = 0; i < clazz->virtualMethodCount; i++, meth++) in createIftable()
3163 clazz->vtable[meth->methodIndex] = meth; in createIftable()
3164 dvmLinearReadOnly(clazz->classLoader, clazz->vtable); in createIftable()
3167 oldMethodCount = clazz->virtualMethodCount; in createIftable()
3168 clazz->virtualMethods = newVirtualMethods; in createIftable()
3169 clazz->virtualMethodCount += mirandaCount; in createIftable()
3171 dvmLinearReadOnly(clazz->classLoader, clazz->virtualMethods); in createIftable()
3176 assert(clazz->vtable != NULL); in createIftable()
3177 clazz->vtable = (Method**) dvmLinearRealloc(clazz->classLoader, in createIftable()
3178 clazz->vtable, in createIftable()
3179 sizeof(Method*) * (clazz->vtableCount + mirandaCount)); in createIftable()
3180 if (clazz->vtable == NULL) { in createIftable()
3186 oldVtableCount = clazz->vtableCount; in createIftable()
3187 clazz->vtableCount += mirandaCount; in createIftable()
3194 meth = clazz->virtualMethods + oldMethodCount; in createIftable()
3196 dvmLinearReadWrite(clazz->classLoader, clazz->virtualMethods); in createIftable()
3198 meth->clazz = clazz; in createIftable()
3201 dvmLinearReadOnly(clazz->classLoader, clazz->virtualMethods); in createIftable()
3204 clazz->vtable[oldVtableCount + i] = meth; in createIftable()
3207 dvmLinearReadOnly(clazz->classLoader, mirandaList); in createIftable()
3208 dvmLinearFree(clazz->classLoader, mirandaList); in createIftable()
3245 dvmLinearReadOnly(clazz->classLoader, clazz->iftable); in createIftable()
3247 dvmLinearReadOnly(clazz->classLoader, clazz->vtable); in createIftable()
3249 dvmLinearReadOnly(clazz->classLoader, clazz->ifviPool); in createIftable()
3270 static bool insertMethodStubs(ClassObject* clazz) in insertMethodStubs() argument
3272 dvmLinearReadWrite(clazz->classLoader, clazz->virtualMethods); in insertMethodStubs()
3277 meth = clazz->virtualMethods; in insertMethodStubs()
3278 for (i = 0; i < clazz->virtualMethodCount; i++, meth++) { in insertMethodStubs()
3289 dvmLinearReadOnly(clazz->classLoader, clazz->virtualMethods); in insertMethodStubs()
3338 static bool computeFieldOffsets(ClassObject* clazz) in computeFieldOffsets() argument
3343 dvmLinearReadWrite(clazz->classLoader, clazz->ifields); in computeFieldOffsets()
3345 if (clazz->super != NULL) in computeFieldOffsets()
3346 fieldOffset = clazz->super->objectSize; in computeFieldOffsets()
3350 LOGVV("--- computeFieldOffsets '%s'\n", clazz->descriptor); in computeFieldOffsets()
3360 clazz->ifieldRefCount = 0; in computeFieldOffsets()
3361 j = clazz->ifieldCount - 1; in computeFieldOffsets()
3362 for (i = 0; i < clazz->ifieldCount; i++) { in computeFieldOffsets()
3363 InstField* pField = &clazz->ifields[i]; in computeFieldOffsets()
3372 InstField* refField = &clazz->ifields[j--]; in computeFieldOffsets()
3387 clazz->ifieldRefCount++; in computeFieldOffsets()
3396 clazz->ifieldRefCount++; in computeFieldOffsets()
3415 if (i != clazz->ifieldCount && (fieldOffset & 0x04) != 0) { in computeFieldOffsets()
3418 InstField* pField = &clazz->ifields[i]; in computeFieldOffsets()
3437 j = clazz->ifieldCount - 1; in computeFieldOffsets()
3439 InstField* singleField = &clazz->ifields[j--]; in computeFieldOffsets()
3457 LOGV(" +++ inserting pad field in '%s'\n", clazz->descriptor); in computeFieldOffsets()
3467 assert(i == clazz->ifieldCount || (fieldOffset & 0x04) == 0); in computeFieldOffsets()
3468 j = clazz->ifieldCount - 1; in computeFieldOffsets()
3469 for ( ; i < clazz->ifieldCount; i++) { in computeFieldOffsets()
3470 InstField* pField = &clazz->ifields[i]; in computeFieldOffsets()
3479 InstField* doubleField = &clazz->ifields[j--]; in computeFieldOffsets()
3513 for (i = 0; i < clazz->ifieldCount; i++) { in computeFieldOffsets()
3514 InstField *pField = &clazz->ifields[i]; in computeFieldOffsets()
3523 assert(i == clazz->ifieldRefCount); in computeFieldOffsets()
3531 assert(clazz->ifieldRefCount == clazz->ifieldCount); in computeFieldOffsets()
3539 assert(clazz != gDvm.classJavaLangClass || (size_t)fieldOffset < in computeFieldOffsets()
3540 offsetof(ClassObject, instanceData) + sizeof(clazz->instanceData)); in computeFieldOffsets()
3542 clazz->objectSize = fieldOffset; in computeFieldOffsets()
3544 dvmLinearReadOnly(clazz->classLoader, clazz->ifields); in computeFieldOffsets()
3617 static void throwEarlierClassFailure(ClassObject* clazz) in throwEarlierClassFailure() argument
3620 clazz->descriptor, clazz->verifyErrorClass); in throwEarlierClassFailure()
3622 if (clazz->verifyErrorClass == NULL) { in throwEarlierClassFailure()
3624 clazz->descriptor); in throwEarlierClassFailure()
3626 dvmThrowExceptionByClassWithClassMessage(clazz->verifyErrorClass, in throwEarlierClassFailure()
3627 clazz->descriptor); in throwEarlierClassFailure()
3635 static void initSFields(ClassObject* clazz) in initSFields() argument
3644 if (clazz->sfieldCount == 0) { in initSFields()
3647 if (clazz->pDvmDex == NULL) { in initSFields()
3649 LOGV("Not initializing static fields in %s\n", clazz->descriptor); in initSFields()
3652 pDexFile = clazz->pDvmDex->pDexFile; in initSFields()
3654 pClassDef = dexFindClass(pDexFile, clazz->descriptor); in initSFields()
3662 dvmEncodedArrayIteratorInitialize(&iterator, pValueList, clazz); in initSFields()
3672 StaticField* sfield = &clazz->sfields[i]; in initSFields()
3683 clazz->descriptor, i); in initSFields()
3747 value.type, descriptor, clazz->descriptor, i); in initSFields()
3892 static bool validateSuperDescriptors(const ClassObject* clazz) in validateSuperDescriptors() argument
3896 if (dvmIsInterfaceClass(clazz)) in validateSuperDescriptors()
3902 if (clazz->super != NULL && in validateSuperDescriptors()
3903 clazz->classLoader != clazz->super->classLoader) in validateSuperDescriptors()
3921 for (i = clazz->super->vtableCount - 1; i >= 0; i--) { in validateSuperDescriptors()
3922 meth = clazz->vtable[i]; in validateSuperDescriptors()
3923 if (!checkMethodDescriptorClasses(meth, clazz->super, clazz)) { in validateSuperDescriptors()
3925 meth->name, clazz->descriptor, clazz->classLoader, in validateSuperDescriptors()
3926 clazz->super->descriptor, clazz->super->classLoader); in validateSuperDescriptors()
3937 for (i = 0; i < clazz->iftableCount; i++) { in validateSuperDescriptors()
3938 const InterfaceEntry* iftable = &clazz->iftable[i]; in validateSuperDescriptors()
3940 if (clazz->classLoader != iftable->clazz->classLoader) { in validateSuperDescriptors()
3941 const ClassObject* iface = iftable->clazz; in validateSuperDescriptors()
3949 meth = clazz->vtable[vtableIndex]; in validateSuperDescriptors()
3951 if (!checkMethodDescriptorClasses(meth, iface, clazz)) { in validateSuperDescriptors()
3954 meth->name, clazz->descriptor, clazz->classLoader, in validateSuperDescriptors()
3974 bool dvmIsClassInitializing(const ClassObject* clazz) in dvmIsClassInitializing() argument
3976 return (clazz->status == CLASS_INITIALIZING && in dvmIsClassInitializing()
3977 clazz->initThreadId == dvmThreadSelf()->threadId); in dvmIsClassInitializing()
4039 bool dvmInitClass(ClassObject* clazz) in dvmInitClass() argument
4048 dvmLockObject(self, (Object*) clazz); in dvmInitClass()
4049 assert(dvmIsClassLinked(clazz) || clazz->status == CLASS_ERROR); in dvmInitClass()
4054 if (clazz->status < CLASS_VERIFIED) { in dvmInitClass()
4058 if (clazz->status == CLASS_ERROR) { in dvmInitClass()
4059 throwEarlierClassFailure(clazz); in dvmInitClass()
4063 assert(clazz->status == CLASS_RESOLVED); in dvmInitClass()
4064 assert(!IS_CLASS_FLAG_SET(clazz, CLASS_ISPREVERIFIED)); in dvmInitClass()
4068 clazz->classLoader == NULL)) in dvmInitClass()
4071 clazz->descriptor, clazz->classLoader); in dvmInitClass()
4076 LOGV("+++ late verify on %s\n", clazz->descriptor); in dvmInitClass()
4083 if (IS_CLASS_FLAG_SET(clazz, CLASS_ISOPTIMIZED)) { in dvmInitClass()
4086 clazz->descriptor); in dvmInitClass()
4091 clazz->status = CLASS_VERIFYING; in dvmInitClass()
4092 if (!dvmVerifyClass(clazz, VERIFY_DEFAULT)) { in dvmInitClass()
4095 clazz->descriptor); in dvmInitClass()
4096 clazz->verifyErrorClass = dvmGetException(self)->clazz; in dvmInitClass()
4097 clazz->status = CLASS_ERROR; in dvmInitClass()
4101 clazz->status = CLASS_VERIFIED; in dvmInitClass()
4105 if (clazz->status == CLASS_INITIALIZED) in dvmInitClass()
4108 while (clazz->status == CLASS_INITIALIZING) { in dvmInitClass()
4110 if (clazz->initThreadId == self->threadId) { in dvmInitClass()
4125 dvmObjectWait(self, (Object*) clazz, 0, 0, false); in dvmInitClass()
4134 clazz->descriptor); in dvmInitClass()
4149 clazz->status = CLASS_ERROR; in dvmInitClass()
4152 if (clazz->status == CLASS_INITIALIZING) { in dvmInitClass()
4156 assert(clazz->status == CLASS_INITIALIZED || in dvmInitClass()
4157 clazz->status == CLASS_ERROR); in dvmInitClass()
4158 if (clazz->status == CLASS_ERROR) { in dvmInitClass()
4170 if (clazz->status == CLASS_ERROR) { in dvmInitClass()
4173 dvmUnlockObject(self, (Object*) clazz); in dvmInitClass()
4174 throwEarlierClassFailure(clazz); in dvmInitClass()
4193 if (!validateSuperDescriptors(clazz)) { in dvmInitClass()
4195 clazz->status = CLASS_ERROR; in dvmInitClass()
4206 assert(clazz->status < CLASS_INITIALIZING); in dvmInitClass()
4210 logClassLoad('+', clazz); in dvmInitClass()
4214 clazz->status = CLASS_INITIALIZING; in dvmInitClass()
4215 clazz->initThreadId = self->threadId; in dvmInitClass()
4216 dvmUnlockObject(self, (Object*) clazz); in dvmInitClass()
4219 if (clazz->super != NULL && clazz->super->status != CLASS_INITIALIZED) { in dvmInitClass()
4220 assert(!dvmIsInterfaceClass(clazz)); in dvmInitClass()
4221 if (!dvmInitClass(clazz->super)) { in dvmInitClass()
4223 clazz->status = CLASS_ERROR; in dvmInitClass()
4225 dvmLockObject(self, (Object*) clazz); in dvmInitClass()
4238 initSFields(clazz); in dvmInitClass()
4242 method = dvmFindDirectMethodByDescriptor(clazz, "<clinit>", "()V"); in dvmInitClass()
4244 LOGVV("No <clinit> found for %s\n", clazz->descriptor); in dvmInitClass()
4246 LOGVV("Invoking %s.<clinit>\n", clazz->descriptor); in dvmInitClass()
4258 (dvmGetException(self)->clazz)->descriptor, clazz->descriptor); in dvmInitClass()
4262 dvmLockObject(self, (Object*) clazz); in dvmInitClass()
4263 clazz->status = CLASS_ERROR; in dvmInitClass()
4266 dvmLockObject(self, (Object*) clazz); in dvmInitClass()
4267 clazz->status = CLASS_INITIALIZED; in dvmInitClass()
4268 LOGVV("Initialized class: %s\n", clazz->descriptor); in dvmInitClass()
4275 dvmObjectNotifyAll(self, (Object*) clazz); in dvmInitClass()
4282 logClassLoad('-', clazz); in dvmInitClass()
4286 dvmUnlockObject(self, (Object*) clazz); in dvmInitClass()
4288 return (clazz->status != CLASS_ERROR); in dvmInitClass()
4298 ClassObject* clazz = method->clazz; in dvmSetNativeFunc() local
4301 dvmLinearReadWrite(clazz->classLoader, clazz->virtualMethods); in dvmSetNativeFunc()
4302 dvmLinearReadWrite(clazz->classLoader, clazz->directMethods); in dvmSetNativeFunc()
4307 dvmLinearReadOnly(clazz->classLoader, clazz->virtualMethods); in dvmSetNativeFunc()
4308 dvmLinearReadOnly(clazz->classLoader, clazz->directMethods); in dvmSetNativeFunc()
4319 ClassObject* clazz = method->clazz; in dvmSetRegisterMap() local
4323 method->clazz->descriptor, method->name); in dvmSetRegisterMap()
4328 dvmLinearReadWrite(clazz->classLoader, clazz->virtualMethods); in dvmSetRegisterMap()
4329 dvmLinearReadWrite(clazz->classLoader, clazz->directMethods); in dvmSetRegisterMap()
4333 dvmLinearReadOnly(clazz->classLoader, clazz->virtualMethods); in dvmSetRegisterMap()
4334 dvmLinearReadOnly(clazz->classLoader, clazz->directMethods); in dvmSetRegisterMap()
4343 ClassObject* clazz = vclazz; in findClassCallback() local
4346 if (strcmp(clazz->descriptor, descriptor) == 0) in findClassCallback()
4347 return (int) clazz; in findClassCallback()
4378 ClassObject* clazz; in dvmGetSystemClassLoader() local
4382 clazz = dvmFindSystemClass("Ljava/lang/ClassLoader;"); in dvmGetSystemClassLoader()
4383 if (clazz == NULL) in dvmGetSystemClassLoader()
4386 getSysMeth = dvmFindDirectMethodByDescriptor(clazz, "getSystemClassLoader", in dvmGetSystemClassLoader()
4403 const ClassObject* clazz = (const ClassObject*) vclazz; in dumpClass() local
4409 if (clazz == NULL) { in dumpClass()
4419 initStr = dvmIsClassInitialized(clazz) ? "true" : "false"; in dumpClass()
4422 LOGI("%s %p %s\n", clazz->descriptor, clazz->classLoader, initStr); in dumpClass()
4424 LOGI("%s %s\n", clazz->descriptor, initStr); in dumpClass()
4426 LOGI("%s %p\n", clazz->descriptor, clazz->classLoader); in dumpClass()
4428 LOGI("%s\n", clazz->descriptor); in dumpClass()
4434 if ((u4)clazz->super > 0x10000 && (u4) clazz->super != (u4)-1) in dumpClass()
4435 super = clazz->super; in dumpClass()
4440 dvmIsInterfaceClass(clazz) ? "interface" : "class", in dumpClass()
4441 clazz->descriptor, clazz->classLoader, clazz->serialNumber); in dumpClass()
4442 LOGI(" objectSize=%d (%d from super)\n", (int) clazz->objectSize, in dumpClass()
4444 LOGI(" access=0x%04x.%04x\n", clazz->accessFlags >> 16, in dumpClass()
4445 clazz->accessFlags & JAVA_FLAGS_MASK); in dumpClass()
4448 if (dvmIsArrayClass(clazz)) { in dumpClass()
4450 clazz->arrayDim, clazz->elementClass->descriptor); in dumpClass()
4452 if (clazz->iftableCount > 0) { in dumpClass()
4453 LOGI(" interfaces (%d):\n", clazz->iftableCount); in dumpClass()
4454 for (i = 0; i < clazz->iftableCount; i++) { in dumpClass()
4455 InterfaceEntry* ent = &clazz->iftable[i]; in dumpClass()
4459 i, ent->clazz->descriptor, ent->clazz->classLoader); in dumpClass()
4463 for (j = 0; j < ent->clazz->virtualMethodCount; j++) in dumpClass()
4466 ent->clazz->virtualMethods[j].name, in dumpClass()
4467 clazz->vtable[ent->methodIndexArray[j]]->name); in dumpClass()
4471 if (!dvmIsInterfaceClass(clazz)) { in dumpClass()
4472 LOGI(" vtable (%d entries, %d in super):\n", clazz->vtableCount, in dumpClass()
4474 for (i = 0; i < clazz->vtableCount; i++) { in dumpClass()
4475 desc = dexProtoCopyMethodDescriptor(&clazz->vtable[i]->prototype); in dumpClass()
4477 (i != clazz->vtable[i]->methodIndex) ? "*** " : "", in dumpClass()
4478 (u4) clazz->vtable[i]->methodIndex, clazz->vtable[i], in dumpClass()
4479 clazz->vtable[i]->name, desc); in dumpClass()
4482 LOGI(" direct methods (%d entries):\n", clazz->directMethodCount); in dumpClass()
4483 for (i = 0; i < clazz->directMethodCount; i++) { in dumpClass()
4485 &clazz->directMethods[i].prototype); in dumpClass()
4486 LOGI(" %2d: %20s %s\n", i, clazz->directMethods[i].name, in dumpClass()
4491 LOGI(" interface methods (%d):\n", clazz->virtualMethodCount); in dumpClass()
4492 for (i = 0; i < clazz->virtualMethodCount; i++) { in dumpClass()
4494 &clazz->virtualMethods[i].prototype); in dumpClass()
4496 (u4) clazz->virtualMethods[i].methodIndex, in dumpClass()
4497 clazz->virtualMethods[i].name, in dumpClass()
4502 if (clazz->sfieldCount > 0) { in dumpClass()
4503 LOGI(" static fields (%d entries):\n", clazz->sfieldCount); in dumpClass()
4504 for (i = 0; i < clazz->sfieldCount; i++) { in dumpClass()
4505 LOGI(" %2d: %20s %s\n", i, clazz->sfields[i].field.name, in dumpClass()
4506 clazz->sfields[i].field.signature); in dumpClass()
4509 if (clazz->ifieldCount > 0) { in dumpClass()
4510 LOGI(" instance fields (%d entries):\n", clazz->ifieldCount); in dumpClass()
4511 for (i = 0; i < clazz->ifieldCount; i++) { in dumpClass()
4512 LOGI(" %2d: %20s %s\n", i, clazz->ifields[i].field.name, in dumpClass()
4513 clazz->ifields[i].field.signature); in dumpClass()
4524 void dvmDumpClass(const ClassObject* clazz, int flags) in dvmDumpClass() argument
4526 dumpClass((void*) clazz, (void*) flags); in dvmDumpClass()
4572 const ClassObject* clazz = (const ClassObject*) vclazz; in dumpAccessCounts() local
4575 for (i = 0; i < clazz->ifieldCount; i++) { in dumpAccessCounts()
4576 Field* field = &clazz->ifields[i].field; in dumpAccessCounts()
4580 field->clazz->descriptor, field->name); in dumpAccessCounts()
4583 field->clazz->descriptor, field->name); in dumpAccessCounts()
4585 for (i = 0; i < clazz->sfieldCount; i++) { in dumpAccessCounts()
4586 Field* field = &clazz->sfields[i].field; in dumpAccessCounts()
4590 field->clazz->descriptor, field->name); in dumpAccessCounts()
4593 field->clazz->descriptor, field->name); in dumpAccessCounts()
4614 static int markClassObject(void *clazz, void *arg) in markClassObject() argument
4618 dvmMarkObjectNonNull((Object *)clazz); in markClassObject()