Fix a bug in hprof that corrupted the root set output.

The root visitor takes an Object ** but the hprof output assumed an
Object *.  As such, bad root set object ids were written to the hprof
dump and, by extension, objects reachable only from the roots either
looked like floating garbage or were wholly omitted from the output.

Change-Id: I58b31b6ad145fa9843ecbda630ed8b6ab951d931
diff --git a/vm/hprof/Hprof.c b/vm/hprof/Hprof.c
index e42bd10..62542f6 100644
--- a/vm/hprof/Hprof.c
+++ b/vm/hprof/Hprof.c
@@ -209,13 +209,16 @@
         HPROF_ROOT_JNI_MONITOR,
     };
     hprof_context_t *ctx;
+    Object *obj;
 
+    assert(addr != NULL);
     assert(arg != NULL);
     assert(type < NELEM(xlate));
+    obj = *(Object **)addr;
     ctx = arg;
     ctx->gcScanState = xlate[type];
     ctx->gcThreadSerialNumber = threadId;
-    hprofMarkRootObject(ctx, addr, 0);
+    hprofMarkRootObject(ctx, obj, 0);
     ctx->gcScanState = 0;
     ctx->gcThreadSerialNumber = 0;
 }