diff options
author | 2015-04-23 16:12:40 -0700 | |
---|---|---|
committer | 2015-04-23 21:11:40 -0700 | |
commit | 60f63f53c01cb38ca18a815603282e802a6cf918 (patch) | |
tree | 4f18427401ead0c790e926672957189a0c0a39eb /runtime/gc/reference_queue.cc | |
parent | 633a37ece49c5afcf3fa9a89692f07d19c56229b (diff) |
Use the lock word bits for Baker-style read barrier.
This enables the standard object header to be used with the
Baker-style read barrier.
Bug: 19355854
Bug: 12687968
Change-Id: Ie552b6e1dfe30e96cb1d0895bd0dff25f9d7d015
Diffstat (limited to 'runtime/gc/reference_queue.cc')
-rw-r--r-- | runtime/gc/reference_queue.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/runtime/gc/reference_queue.cc b/runtime/gc/reference_queue.cc index 4c93a4c5a8..4ba3983d58 100644 --- a/runtime/gc/reference_queue.cc +++ b/runtime/gc/reference_queue.cc @@ -96,11 +96,11 @@ mirror::Reference* ReferenceQueue::DequeuePendingReference() { << "ref=" << ref << " rb_ptr=" << ref->GetReadBarrierPointer(); if (heap->ConcurrentCopyingCollector()->RegionSpace()->IsInToSpace(ref)) { // Moving objects. - ref->SetReadBarrierPointer(ReadBarrier::WhitePtr()); + ref->AtomicSetReadBarrierPointer(ReadBarrier::GrayPtr(), ReadBarrier::WhitePtr()); CHECK_EQ(ref->GetReadBarrierPointer(), ReadBarrier::WhitePtr()); } else { // Non-moving objects. - ref->SetReadBarrierPointer(ReadBarrier::BlackPtr()); + ref->AtomicSetReadBarrierPointer(ReadBarrier::GrayPtr(), ReadBarrier::BlackPtr()); CHECK_EQ(ref->GetReadBarrierPointer(), ReadBarrier::BlackPtr()); } } |