Lines Matching refs:obj
145 static void scavengeReference(Object **obj);
149 static size_t objectSize(const Object *obj);
150 static void scavengeDataObject(Object *obj);
865 static void pinObject(const Object *obj) in pinObject() argument
867 promoteBlockByAddr(gDvm.gcHeap->heapSource, obj); in pinObject()
901 static int isPermanentString(const StringObject *obj) { in isPermanentString() argument
902 return (uintptr_t)obj & 0x1; in isPermanentString()
905 static void* getPermanentString(const StringObject *obj) in getPermanentString() argument
907 return (void *)((uintptr_t)obj & ~0x1); in getPermanentString()
921 static void scavengeClassObject(ClassObject *obj) in scavengeClassObject() argument
925 LOG_SCAV("scavengeClassObject(obj=%p)", obj); in scavengeClassObject()
926 assert(obj != NULL); in scavengeClassObject()
927 assert(obj->obj.clazz != NULL); in scavengeClassObject()
928 assert(obj->obj.clazz->descriptor != NULL); in scavengeClassObject()
929 assert(!strcmp(obj->obj.clazz->descriptor, "Ljava/lang/Class;")); in scavengeClassObject()
930 assert(obj->descriptor != NULL); in scavengeClassObject()
932 obj->descriptor, obj->vtableCount); in scavengeClassObject()
934 scavengeDataObject((Object *)obj); in scavengeClassObject()
936 if (IS_CLASS_FLAG_SET(obj, CLASS_ISARRAY)) { in scavengeClassObject()
937 scavengeReference((Object **)(void *)&obj->elementClass); in scavengeClassObject()
940 scavengeReference((Object **)(void *)&obj->super); in scavengeClassObject()
942 scavengeReference(&obj->classLoader); in scavengeClassObject()
944 for (i = 0; i < obj->sfieldCount; ++i) { in scavengeClassObject()
945 char ch = obj->sfields[i].field.signature[0]; in scavengeClassObject()
947 scavengeReference((Object **)(void *)&obj->sfields[i].value.l); in scavengeClassObject()
951 for (i = 0; i < obj->interfaceCount; ++i) { in scavengeClassObject()
952 scavengeReference((Object **) &obj->interfaces[i]); in scavengeClassObject()
967 assert(array->obj.clazz != NULL); in scavengeArrayObject()
971 if (IS_CLASS_FLAG_SET(array->obj.clazz, CLASS_ISOBJECTARRAY)) { in scavengeArrayObject()
984 static int getReferenceFlags(const Object *obj) in getReferenceFlags() argument
991 return GET_CLASS_FLAG_GROUP(obj->clazz, flags); in getReferenceFlags()
994 static int isSoftReference(const Object *obj) in isSoftReference() argument
996 return getReferenceFlags(obj) == CLASS_ISREFERENCE; in isSoftReference()
999 static int isWeakReference(const Object *obj) in isWeakReference() argument
1001 return getReferenceFlags(obj) & CLASS_ISWEAKREFERENCE; in isWeakReference()
1005 static bool isPhantomReference(const Object *obj) in isPhantomReference() argument
1007 return getReferenceFlags(obj) & CLASS_ISPHANTOMREFERENCE; in isPhantomReference()
1054 static void clearReference(Object *obj) in clearReference() argument
1056 dvmSetFieldObject(obj, gDvm.offJavaLangRefReference_referent, NULL); in clearReference()
1262 static void scavengeReferenceObject(Object *obj) in scavengeReferenceObject() argument
1268 assert(obj != NULL); in scavengeReferenceObject()
1269 LOG_SCAV("scavengeReferenceObject(obj=%p),'%s'", obj, obj->clazz->descriptor); in scavengeReferenceObject()
1270 scavengeDataObject(obj); in scavengeReferenceObject()
1272 referent = dvmGetFieldObject(obj, referentOffset); in scavengeReferenceObject()
1276 if (isSoftReference(obj)) { in scavengeReferenceObject()
1278 } else if (isWeakReference(obj)) { in scavengeReferenceObject()
1281 assert(isPhantomReference(obj)); in scavengeReferenceObject()
1285 dvmSetFieldObject(obj, queueNextOffset, *queue); in scavengeReferenceObject()
1286 *queue = obj; in scavengeReferenceObject()
1287 LOG_SCAV("scavengeReferenceObject: enqueueing %p", obj); in scavengeReferenceObject()
1293 static void scavengeDataObject(Object *obj) in scavengeDataObject() argument
1299 assert(obj != NULL); in scavengeDataObject()
1300 assert(obj->clazz != NULL); in scavengeDataObject()
1301 assert(obj->clazz->objectSize != 0); in scavengeDataObject()
1302 assert(toSpaceContains(obj)); in scavengeDataObject()
1304 clazz = obj->clazz; in scavengeDataObject()
1305 scavengeReference((Object **) obj); in scavengeDataObject()
1312 Object **ref = (Object **)((u1 *)obj + offset); in scavengeDataObject()
1321 Object **ref = (Object **)((u1 *)obj + offset); in scavengeDataObject()
1391 static void scavengeReference(Object **obj) in scavengeReference() argument
1396 assert(obj); in scavengeReference()
1398 if (*obj == NULL) return; in scavengeReference()
1400 assert(dvmIsValidObject(*obj)); in scavengeReference()
1403 if (toSpaceContains(*obj)) { in scavengeReference()
1404 LOG_SCAV("scavengeReference skipping pinned object @ %p", *obj); in scavengeReference()
1407 LOG_SCAV("scavengeReference(*obj=%p)", *obj); in scavengeReference()
1409 assert(fromSpaceContains(*obj)); in scavengeReference()
1411 clazz = (*obj)->clazz; in scavengeReference()
1415 *obj = (Object *)getForward(clazz); in scavengeReference()
1418 fromObj = *obj; in scavengeReference()
1427 *obj = (Object *)toObj; in scavengeReference()
1433 static void scavengeObject(Object *obj) in scavengeObject() argument
1437 assert(obj != NULL); in scavengeObject()
1438 assert(obj->clazz != NULL); in scavengeObject()
1439 assert(!((uintptr_t)obj->clazz & 0x1)); in scavengeObject()
1440 clazz = obj->clazz; in scavengeObject()
1442 scavengeClassObject((ClassObject *)obj); in scavengeObject()
1444 scavengeArrayObject((ArrayObject *)obj); in scavengeObject()
1446 scavengeReferenceObject(obj); in scavengeObject()
1448 scavengeDataObject(obj); in scavengeObject()
1459 void *obj; in pinHashTableEntries() local
1469 obj = entry->data; in pinHashTableEntries()
1470 if (obj == NULL || obj == HASH_TOMBSTONE) { in pinHashTableEntries()
1501 Object *obj; in scavengeInternedStrings() local
1511 obj = (Object *)entry->data; in scavengeInternedStrings()
1512 if (obj == NULL || obj == HASH_TOMBSTONE) { in scavengeInternedStrings()
1514 } else if (!isPermanentString((StringObject *)obj)) { in scavengeInternedStrings()
1529 Object *obj; in pinInternedStrings() local
1539 obj = (Object *)entry->data; in pinInternedStrings()
1540 if (obj == NULL || obj == HASH_TOMBSTONE) { in pinInternedStrings()
1542 } else if (isPermanentString((StringObject *)obj)) { in pinInternedStrings()
1543 obj = (Object *)getPermanentString((StringObject*)obj); in pinInternedStrings()
1544 LOG_PROM(">>> pin string obj=%p", obj); in pinInternedStrings()
1545 pinObject(obj); in pinInternedStrings()
1546 LOG_PROM("<<< pin string obj=%p", obj); in pinInternedStrings()
1813 Object *obj; in pinThreadStack() local
1841 obj = (Object *)*framePtr++; in pinThreadStack()
1842 if (obj == NULL) { in pinThreadStack()
1851 assert(dvmIsValidObject(obj)); in pinThreadStack()
1852 pinObject(obj); in pinThreadStack()
1859 obj = (Object *)*framePtr; in pinThreadStack()
1860 if (obj != NULL) { in pinThreadStack()
1861 assert(dvmIsValidObject(obj)); in pinThreadStack()
1862 pinObject(obj); in pinThreadStack()
1871 obj = (Object *)*framePtr; // debug, remove in pinThreadStack()
1872 if (dvmIsValidObject(obj)) { // debug, remove in pinThreadStack()
1874 LOG_PIN("+++ did NOT pin obj %p\n", obj); in pinThreadStack()
1989 static size_t objectSize(const Object *obj) in objectSize() argument
1993 assert(obj != NULL); in objectSize()
1994 assert(obj->clazz != NULL); in objectSize()
1995 if (obj->clazz == gDvm.classJavaLangClass) { in objectSize()
1996 size = dvmClassObjectSize((ClassObject *)obj); in objectSize()
1997 } else if (IS_CLASS_FLAG_SET(obj->clazz, CLASS_ISARRAY)) { in objectSize()
1998 size = dvmArrayObjectSize((ArrayObject *)obj); in objectSize()
2000 assert(obj->clazz->objectSize != 0); in objectSize()
2001 size = obj->clazz->objectSize; in objectSize()
2003 if (LW_HASH_STATE(obj->lock) == LW_HASH_STATE_HASHED_AND_MOVED) { in objectSize()
2347 void dvmMarkObjectNonNull(const Object *obj) in dvmMarkObjectNonNull() argument