Remove all support for Brooks read barrier.

Test: m
Bug: 177048505
Change-Id: Ifb16927455b98996c61f0b6370bae9a114bf8018
diff --git a/build/art.go b/build/art.go
index dd7895a..a6cd944 100644
--- a/build/art.go
+++ b/build/art.go
@@ -61,8 +61,8 @@
 	}
 
 	if !ctx.Config().IsEnvFalse("ART_USE_READ_BARRIER") && ctx.Config().ArtUseReadBarrier() {
-		// Used to change the read barrier type. Valid values are BAKER, BROOKS,
-		// TABLELOOKUP. The default is BAKER.
+		// Used to change the read barrier type. Valid values are BAKER, TABLELOOKUP.
+		// The default is BAKER.
 		barrierType := ctx.Config().GetenvWithDefault("ART_READ_BARRIER_TYPE", "BAKER")
 		cflags = append(cflags,
 			"-DART_USE_READ_BARRIER=1",
diff --git a/runtime/class_linker_test.cc b/runtime/class_linker_test.cc
index e183146..2400f9f 100644
--- a/runtime/class_linker_test.cc
+++ b/runtime/class_linker_test.cc
@@ -148,21 +148,11 @@
     EXPECT_FALSE(JavaLangObject->IsSynthetic());
     EXPECT_EQ(4U, JavaLangObject->NumDirectMethods());
     EXPECT_EQ(11U, JavaLangObject->NumVirtualMethods());
-    if (!kUseBrooksReadBarrier) {
-      EXPECT_EQ(2U, JavaLangObject->NumInstanceFields());
-    } else {
-      EXPECT_EQ(4U, JavaLangObject->NumInstanceFields());
-    }
+    EXPECT_EQ(2U, JavaLangObject->NumInstanceFields());
     EXPECT_STREQ(JavaLangObject->GetInstanceField(0)->GetName(),
                  "shadow$_klass_");
     EXPECT_STREQ(JavaLangObject->GetInstanceField(1)->GetName(),
                  "shadow$_monitor_");
-    if (kUseBrooksReadBarrier) {
-      EXPECT_STREQ(JavaLangObject->GetInstanceField(2)->GetName(),
-                   "shadow$_x_rb_ptr_");
-      EXPECT_STREQ(JavaLangObject->GetInstanceField(3)->GetName(),
-                   "shadow$_x_xpadding_");
-    }
 
     EXPECT_EQ(0U, JavaLangObject->NumStaticFields());
     EXPECT_EQ(0U, JavaLangObject->NumDirectInterfaces());
@@ -568,10 +558,6 @@
   ObjectOffsets() : CheckOffsets<mirror::Object>(false, "Ljava/lang/Object;") {
     addOffset(OFFSETOF_MEMBER(mirror::Object, klass_), "shadow$_klass_");
     addOffset(OFFSETOF_MEMBER(mirror::Object, monitor_), "shadow$_monitor_");
-#ifdef USE_BROOKS_READ_BARRIER
-    addOffset(OFFSETOF_MEMBER(mirror::Object, x_rb_ptr_), "shadow$_x_rb_ptr_");
-    addOffset(OFFSETOF_MEMBER(mirror::Object, x_xpadding_), "shadow$_x_xpadding_");
-#endif
   }
 };
 
diff --git a/runtime/gc/collector/concurrent_copying.cc b/runtime/gc/collector/concurrent_copying.cc
index e4f8b59..af02da8 100644
--- a/runtime/gc/collector/concurrent_copying.cc
+++ b/runtime/gc/collector/concurrent_copying.cc
@@ -2331,7 +2331,7 @@
         // TODO: Temporary; remove this when this is no longer needed (b/116087961).
         << " runtime->sentinel=" << Runtime::Current()->GetSentinel().Read<kWithoutReadBarrier>();
   }
-#ifdef USE_BAKER_OR_BROOKS_READ_BARRIER
+#ifdef USE_BAKER_READ_BARRIER
   mirror::Object* referent = nullptr;
   if (UNLIKELY((to_ref->GetClass<kVerifyNone, kWithoutReadBarrier>()->IsTypeOfReferenceClass() &&
                 (referent = to_ref->AsReference()->GetReferent<kWithoutReadBarrier>()) != nullptr &&
diff --git a/runtime/gc/reference_queue.cc b/runtime/gc/reference_queue.cc
index 1e3cf93..568ca04 100644
--- a/runtime/gc/reference_queue.cc
+++ b/runtime/gc/reference_queue.cc
@@ -75,7 +75,7 @@
 // This must be called whenever DequeuePendingReference is called.
 void ReferenceQueue::DisableReadBarrierForReference(ObjPtr<mirror::Reference> ref) {
   Heap* heap = Runtime::Current()->GetHeap();
-  if (kUseBakerOrBrooksReadBarrier && heap->CurrentCollectorType() == kCollectorTypeCC &&
+  if (kUseBakerReadBarrier && heap->CurrentCollectorType() == kCollectorTypeCC &&
       heap->ConcurrentCopyingCollector()->IsActive()) {
     // Change the gray ptr we left in ConcurrentCopying::ProcessMarkStackRef() to non-gray.
     // We check IsActive() above because we don't want to do this when the zygote compaction
diff --git a/runtime/mirror/object.h b/runtime/mirror/object.h
index 7b110fc..ac72745 100644
--- a/runtime/mirror/object.h
+++ b/runtime/mirror/object.h
@@ -71,7 +71,7 @@
 static constexpr bool kCheckFieldAssignments = false;
 
 // Size of Object.
-static constexpr uint32_t kObjectHeaderSize = kUseBrooksReadBarrier ? 16 : 8;
+static constexpr uint32_t kObjectHeaderSize = 8;
 
 // C++ mirror of java.lang.Object
 class MANAGED LOCKABLE Object {
@@ -775,14 +775,6 @@
   // Monitor and hash code information.
   uint32_t monitor_;
 
-#ifdef USE_BROOKS_READ_BARRIER
-  // Note names use a 'x' prefix and the x_rb_ptr_ is of type int
-  // instead of Object to go with the alphabetical/by-type field order
-  // on the Java side.
-  uint32_t x_rb_ptr_;      // For the Brooks pointer.
-  uint32_t x_xpadding_;    // For 8-byte alignment. TODO: get rid of this.
-#endif
-
   friend class art::Monitor;
   friend struct art::ObjectOffsets;  // for verifying offset information
   friend class CopyObjectVisitor;  // for CopyObject().
diff --git a/runtime/read_barrier-inl.h b/runtime/read_barrier-inl.h
index 1bcbcff..0861375 100644
--- a/runtime/read_barrier-inl.h
+++ b/runtime/read_barrier-inl.h
@@ -72,9 +72,6 @@
       }
       AssertToSpaceInvariant(obj, offset, ref);
       return ref;
-    } else if (kUseBrooksReadBarrier) {
-      // To be implemented.
-      return ref_addr->template AsMirrorPtr<kIsVolatile>();
     } else if (kUseTableLookupReadBarrier) {
       MirrorType* ref = ref_addr->template AsMirrorPtr<kIsVolatile>();
       MirrorType* old_ref = ref;
@@ -123,9 +120,6 @@
       }
       AssertToSpaceInvariant(gc_root_source, ref);
       return ref;
-    } else if (kUseBrooksReadBarrier) {
-      // To be implemented.
-      return ref;
     } else if (kUseTableLookupReadBarrier) {
       Thread* self = Thread::Current();
       if (self != nullptr &&
@@ -164,9 +158,6 @@
     }
     AssertToSpaceInvariant(gc_root_source, ref);
     return ref;
-  } else if (with_read_barrier && kUseBrooksReadBarrier) {
-    // To be implemented.
-    return ref;
   } else if (with_read_barrier && kUseTableLookupReadBarrier) {
     Thread* self = Thread::Current();
     if (self != nullptr &&
diff --git a/runtime/read_barrier_config.h b/runtime/read_barrier_config.h
index 7067f9b..dc11d94 100644
--- a/runtime/read_barrier_config.h
+++ b/runtime/read_barrier_config.h
@@ -24,14 +24,12 @@
 // Global (C) part.
 
 // Uncomment one of the following two and the two fields in
-// Object.java (libcore) to enable baker, brooks (unimplemented), or
+// Object.java (libcore) to enable baker, or
 // table-lookup read barriers.
 
 #ifdef ART_USE_READ_BARRIER
 #if ART_READ_BARRIER_TYPE_IS_BAKER
 #define USE_BAKER_READ_BARRIER
-#elif ART_READ_BARRIER_TYPE_IS_BROOKS
-#define USE_BROOKS_READ_BARRIER
 #elif ART_READ_BARRIER_TYPE_IS_TABLELOOKUP
 #define USE_TABLE_LOOKUP_READ_BARRIER
 #else
@@ -39,18 +37,10 @@
 #endif
 #endif  // ART_USE_READ_BARRIER
 
-#if defined(USE_BAKER_READ_BARRIER) || defined(USE_BROOKS_READ_BARRIER)
-#define USE_BAKER_OR_BROOKS_READ_BARRIER
-#endif
-
-#if defined(USE_BAKER_READ_BARRIER) || defined(USE_BROOKS_READ_BARRIER) || defined(USE_TABLE_LOOKUP_READ_BARRIER)
+#if defined(USE_BAKER_READ_BARRIER) || defined(USE_TABLE_LOOKUP_READ_BARRIER)
 #define USE_READ_BARRIER
 #endif
 
-#if defined(USE_BAKER_READ_BARRIER) && defined(USE_BROOKS_READ_BARRIER)
-#error "Only one of Baker or Brooks can be enabled at a time."
-#endif
-
 
 // C++-specific configuration part..
 
@@ -64,21 +54,13 @@
 static constexpr bool kUseBakerReadBarrier = false;
 #endif
 
-#ifdef USE_BROOKS_READ_BARRIER
-static constexpr bool kUseBrooksReadBarrier = true;
-#else
-static constexpr bool kUseBrooksReadBarrier = false;
-#endif
-
 #ifdef USE_TABLE_LOOKUP_READ_BARRIER
 static constexpr bool kUseTableLookupReadBarrier = true;
 #else
 static constexpr bool kUseTableLookupReadBarrier = false;
 #endif
 
-static constexpr bool kUseBakerOrBrooksReadBarrier = kUseBakerReadBarrier || kUseBrooksReadBarrier;
-static constexpr bool kUseReadBarrier =
-    kUseBakerReadBarrier || kUseBrooksReadBarrier || kUseTableLookupReadBarrier;
+static constexpr bool kUseReadBarrier = kUseBakerReadBarrier || kUseTableLookupReadBarrier;
 
 // Debugging flag that forces the generation of read barriers, but
 // does not trigger the use of the concurrent copying GC.