summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarl Shapiro <cshapiro@google.com>2011-06-08 13:07:44 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-06-08 13:07:44 -0700
commitd492aa1846ba97c5f64d608e427be80cd0a3cf73 (patch)
tree4c914ffe6b0cae67a9ce71998a44ac062116fa9c
parenteebf7c690a6aabd50d70779d72685090a1eb84ff (diff)
parent0d92a4072c00434e95a03642a4944acf81a81cc3 (diff)
downloadandroid_dalvik-d492aa1846ba97c5f64d608e427be80cd0a3cf73.tar.gz
android_dalvik-d492aa1846ba97c5f64d608e427be80cd0a3cf73.tar.bz2
android_dalvik-d492aa1846ba97c5f64d608e427be80cd0a3cf73.zip
Merge "Favor Object* over void* for the heap bitmap interfaces." into dalvik-dev
-rw-r--r--vm/alloc/Alloc.cpp8
-rw-r--r--vm/alloc/CardTable.cpp16
-rw-r--r--vm/alloc/HeapBitmap.cpp8
-rw-r--r--vm/alloc/HeapBitmap.h4
-rw-r--r--vm/alloc/MarkSweep.cpp9
-rw-r--r--vm/alloc/Verify.cpp21
-rw-r--r--vm/hprof/Hprof.cpp10
7 files changed, 32 insertions, 44 deletions
diff --git a/vm/alloc/Alloc.cpp b/vm/alloc/Alloc.cpp
index 1dbac532e..46b21c0b7 100644
--- a/vm/alloc/Alloc.cpp
+++ b/vm/alloc/Alloc.cpp
@@ -320,11 +320,9 @@ struct CountContext {
size_t count;
};
-static void countInstancesOfClassCallback(void *ptr, void *arg)
+static void countInstancesOfClassCallback(Object *obj, void *arg)
{
CountContext *ctx = (CountContext *)arg;
- const Object *obj = (const Object *)ptr;
-
assert(ctx != NULL);
if (obj->clazz == ctx->clazz) {
ctx->count += 1;
@@ -341,11 +339,9 @@ size_t dvmCountInstancesOfClass(const ClassObject *clazz)
return ctx.count;
}
-static void countAssignableInstancesOfClassCallback(void *ptr, void *arg)
+static void countAssignableInstancesOfClassCallback(Object *obj, void *arg)
{
CountContext *ctx = (CountContext *)arg;
- const Object *obj = (const Object *)ptr;
-
assert(ctx != NULL);
if (obj->clazz != NULL && dvmInstanceof(obj->clazz, ctx->clazz)) {
ctx->count += 1;
diff --git a/vm/alloc/CardTable.cpp b/vm/alloc/CardTable.cpp
index f17a061b6..2f6156ad3 100644
--- a/vm/alloc/CardTable.cpp
+++ b/vm/alloc/CardTable.cpp
@@ -303,16 +303,15 @@ static void dumpReferencesVisitor(void *pObj, void *arg)
}
}
-static void dumpReferencesCallback(void *ptr, void *arg)
+static void dumpReferencesCallback(Object *obj, void *arg)
{
- Object *obj = (Object *)arg;
- if (ptr == obj) {
+ if (obj == (Object *)arg) {
return;
}
- dvmVisitObject(dumpReferencesVisitor, (Object *)ptr, &obj);
- if (obj == NULL) {
- LOGD("Found %p in the heap @ %p", arg, ptr);
- dvmDumpObject((Object *)ptr);
+ dvmVisitObject(dumpReferencesVisitor, obj, &arg);
+ if (arg == NULL) {
+ LOGD("Found %p in the heap @ %p", arg, obj);
+ dvmDumpObject(obj);
}
}
@@ -398,9 +397,8 @@ static bool isPushedOnMarkStack(const Object *obj)
* references specially as it is permissible for these objects to be
* gray and on an unmarked card.
*/
-static void verifyCardTableCallback(void *ptr, void *arg)
+static void verifyCardTableCallback(Object *obj, void *arg)
{
- Object *obj = (Object *)ptr;
WhiteReferenceCounter ctx = { (HeapBitmap *)arg, 0 };
dvmVisitObject(countWhiteReferenceVisitor, obj, &ctx);
diff --git a/vm/alloc/HeapBitmap.cpp b/vm/alloc/HeapBitmap.cpp
index 02b715f1c..cf02708c7 100644
--- a/vm/alloc/HeapBitmap.cpp
+++ b/vm/alloc/HeapBitmap.cpp
@@ -108,8 +108,8 @@ void dvmHeapBitmapWalk(const HeapBitmap *bitmap, BitmapCallback *callback,
uintptr_t ptrBase = HB_INDEX_TO_OFFSET(i) + bitmap->base;
while (word != 0) {
const int shift = CLZ(word);
- void *addr = (void *)(ptrBase + shift * HB_OBJECT_ALIGNMENT);
- (*callback)(addr, arg);
+ Object* obj = (Object *)(ptrBase + shift * HB_OBJECT_ALIGNMENT);
+ (*callback)(obj, arg);
word &= ~(highBit >> shift);
}
}
@@ -147,8 +147,8 @@ void dvmHeapBitmapScanWalk(HeapBitmap *bitmap,
void *finger = (void *)(HB_INDEX_TO_OFFSET(i + 1) + bitmap->base);
while (word != 0) {
const int shift = CLZ(word);
- void *addr = (void *)(ptrBase + shift * HB_OBJECT_ALIGNMENT);
- (*callback)(addr, finger, arg);
+ Object *obj = (Object *)(ptrBase + shift * HB_OBJECT_ALIGNMENT);
+ (*callback)(obj, finger, arg);
word &= ~(highBit >> shift);
}
end = HB_OFFSET_TO_INDEX(bitmap->max - bitmap->base);
diff --git a/vm/alloc/HeapBitmap.h b/vm/alloc/HeapBitmap.h
index 90cfea931..eba59988e 100644
--- a/vm/alloc/HeapBitmap.h
+++ b/vm/alloc/HeapBitmap.h
@@ -73,8 +73,8 @@ struct HeapBitmap {
/*
* Callback types used by the walking routines.
*/
-typedef void BitmapCallback(void *addr, void *arg);
-typedef void BitmapScanCallback(void *addr, void *finger, void *arg);
+typedef void BitmapCallback(Object *obj, void *arg);
+typedef void BitmapScanCallback(Object *obj, void *finger, void *arg);
typedef void BitmapSweepCallback(size_t numPtrs, void **ptrs, void *arg);
/*
diff --git a/vm/alloc/MarkSweep.cpp b/vm/alloc/MarkSweep.cpp
index 710f2e661..309bd03c7 100644
--- a/vm/alloc/MarkSweep.cpp
+++ b/vm/alloc/MarkSweep.cpp
@@ -293,11 +293,10 @@ static void verifyImmuneObjectsVisitor(void *addr, void *arg)
* Visitor that searches for immune objects and verifies that all
* threatened referents are marked.
*/
-static void verifyImmuneObjectsCallback(void *addr, void *arg)
+static void verifyImmuneObjectsCallback(Object *obj, void *arg)
{
- assert(addr != NULL);
+ assert(obj != NULL);
assert(arg != NULL);
- Object *obj = (Object *)addr;
GcMarkContext *ctx = (GcMarkContext *)arg;
if (obj->clazz == NULL) {
LOGI("uninitialized object @ %p (has null clazz pointer)", obj);
@@ -686,11 +685,11 @@ void dvmHeapScanImmuneObjects(const GcMarkContext *ctx)
* to the address corresponding to the lowest address in the next word
* of bits in the bitmap.
*/
-static void scanBitmapCallback(void *addr, void *finger, void *arg)
+static void scanBitmapCallback(Object *obj, void *finger, void *arg)
{
GcMarkContext *ctx = (GcMarkContext *)arg;
ctx->finger = (void *)finger;
- scanObject((Object *)addr, ctx);
+ scanObject(obj, ctx);
}
/* Given bitmaps with the root set marked, find and mark all
diff --git a/vm/alloc/Verify.cpp b/vm/alloc/Verify.cpp
index 1a8307aff..6d830c7d7 100644
--- a/vm/alloc/Verify.cpp
+++ b/vm/alloc/Verify.cpp
@@ -38,16 +38,15 @@ static void dumpReferencesVisitor(void *pObj, void *arg)
* Visitor applied to each bitmap element to search for things that
* point to an object. Logs a message when a match is found.
*/
-static void dumpReferencesCallback(void *ptr, void *arg)
+static void dumpReferencesCallback(Object *obj, void *arg)
{
- Object *obj = (Object *)arg;
- if (ptr == obj) {
+ if (obj == (Object *)arg) {
return;
}
- dvmVisitObject(dumpReferencesVisitor, (Object *)ptr, &obj);
- if (obj == NULL) {
- LOGD("Found %p in the heap @ %p", arg, ptr);
- dvmDumpObject((Object *)ptr);
+ dvmVisitObject(dumpReferencesVisitor, obj, &arg);
+ if (arg == NULL) {
+ LOGD("Found %p in the heap @ %p", arg, obj);
+ dvmDumpObject(obj);
}
}
@@ -108,8 +107,8 @@ static void verifyReference(void *addr, void *arg)
*/
void dvmVerifyObject(const Object *obj)
{
- Object *arg = (Object *)obj;
- dvmVisitObject(verifyReference, (Object *)obj, &arg);
+ Object *arg = const_cast<Object*>(obj);
+ dvmVisitObject(verifyReference, arg, &arg);
if (arg == NULL) {
dumpReferences(obj);
dvmAbort();
@@ -119,9 +118,9 @@ void dvmVerifyObject(const Object *obj)
/*
* Helper function to call dvmVerifyObject from a bitmap walker.
*/
-static void verifyBitmapCallback(void *ptr, void *arg)
+static void verifyBitmapCallback(Object *obj, void *arg)
{
- dvmVerifyObject((Object *)ptr);
+ dvmVerifyObject(obj);
}
/*
diff --git a/vm/hprof/Hprof.cpp b/vm/hprof/Hprof.cpp
index ff8e87287..4a6b1a69a 100644
--- a/vm/hprof/Hprof.cpp
+++ b/vm/hprof/Hprof.cpp
@@ -214,15 +214,11 @@ static void hprofRootVisitor(void *addr, u4 threadId, RootType type, void *arg)
/*
* Visitor invoked on every heap object.
*/
-static void hprofBitmapCallback(void *ptr, void *arg)
+static void hprofBitmapCallback(Object *obj, void *arg)
{
- Object *obj;
- hprof_context_t *ctx;
-
- assert(ptr != NULL);
+ assert(obj != NULL);
assert(arg != NULL);
- obj = (Object *)ptr;
- ctx = (hprof_context_t *)arg;
+ hprof_context_t *ctx = (hprof_context_t *)arg;
hprofDumpHeapObject(ctx, obj);
}