Make the support code for read barriers a bit more general.
Add an option for Baker in addition to Brooks.
Bug: 12687968
Change-Id: I8a31db817ff6686c72951b6534f588228e270b11
diff --git a/runtime/gc/collector/semi_space.cc b/runtime/gc/collector/semi_space.cc
index 222bd63..1366858 100644
--- a/runtime/gc/collector/semi_space.cc
+++ b/runtime/gc/collector/semi_space.cc
@@ -561,11 +561,13 @@
// references.
saved_bytes_ +=
CopyAvoidingDirtyingPages(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();
+ if (kUseBakerOrBrooksReadBarrier) {
+ obj->AssertReadBarrierPointer();
+ if (kUseBrooksReadBarrier) {
+ DCHECK_EQ(forward_address->GetReadBarrierPointer(), obj);
+ forward_address->SetReadBarrierPointer(forward_address);
+ }
+ forward_address->AssertReadBarrierPointer();
}
if (to_space_live_bitmap_ != nullptr) {
to_space_live_bitmap_->Set(forward_address);