(Experimental) Add Brooks pointers.

This feature is disabled by default.

Verified that the Brooks pointers are installed correctly by using the
CMS/SS collectors.

Change-Id: Ia9be9814ab6e29169ac85edc4792ce8c81d552a9
diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc
index 58db7a8..4435d98 100644
--- a/runtime/gc/heap.cc
+++ b/runtime/gc/heap.cc
@@ -1402,6 +1402,12 @@
     }
     // Copy the object over to its new location.
     memcpy(reinterpret_cast<void*>(forward_address), obj, object_size);
+    if (kUseBrooksPointer) {
+      obj->AssertSelfBrooksPointer();
+      DCHECK_EQ(forward_address->GetBrooksPointer(), obj);
+      forward_address->SetBrooksPointer(forward_address);
+      forward_address->AssertSelfBrooksPointer();
+    }
     return forward_address;
   }
 };