Refactor space bitmap to be a value object

Remove the need for pointer indirections at many places, reduce the
amount of code.

Bug: 116052292
Test: test-art-host
Change-Id: I4b1040d29f9ba99ea23c51f70a06af2ffbe496d4
diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc
index 51b0237..063c443 100644
--- a/runtime/gc/heap.cc
+++ b/runtime/gc/heap.cc
@@ -3932,9 +3932,8 @@
 void Heap::ClearMarkedObjects() {
   // Clear all of the spaces' mark bitmaps.
   for (const auto& space : GetContinuousSpaces()) {
-    accounting::ContinuousSpaceBitmap* mark_bitmap = space->GetMarkBitmap();
-    if (space->GetLiveBitmap() != mark_bitmap) {
-      mark_bitmap->Clear();
+    if (space->GetLiveBitmap() != nullptr && !space->HasBoundBitmaps()) {
+      space->GetMarkBitmap()->Clear();
     }
   }
   // Clear the marked objects in the discontinous space object sets.