diff options
Diffstat (limited to 'runtime/gc/heap.cc')
-rw-r--r-- | runtime/gc/heap.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc index 1a32a9a..bc50668 100644 --- a/runtime/gc/heap.cc +++ b/runtime/gc/heap.cc @@ -1605,11 +1605,13 @@ class ZygoteCompactingCollector FINAL : public collector::SemiSpace { } // 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(); + if (kUseBakerOrBrooksReadBarrier) { + obj->AssertReadBarrierPointer(); + if (kUseBrooksReadBarrier) { + DCHECK_EQ(forward_address->GetReadBarrierPointer(), obj); + forward_address->SetReadBarrierPointer(forward_address); + } + forward_address->AssertReadBarrierPointer(); } return forward_address; } |