diff options
author | Bo Liu <boliu@google.com> | 2014-11-04 08:53:58 -0800 |
---|---|---|
committer | Bo Liu <boliu@google.com> | 2014-11-04 16:56:24 +0000 |
commit | fc22d3606c1db6f75644725729c9425fe640a1a3 (patch) | |
tree | 351439ef5c626b2ac45e8f65e6f39e52e2ded7aa | |
parent | ef055f47ab5ab7698b9c05e5d8b19d55af9d3e2c (diff) | |
download | v8-fc22d3606c1db6f75644725729c9425fe640a1a3.tar.gz |
Cherry-pick: Revert r24737 "Read object pointer atomically while updating slots"
Cherry-pick of https://codereview.chromium.org/683113003/
BUG: 18208160
Change-Id: I77a6b5729b26f47311bfd1fa12c199e9ddf087f0
-rw-r--r-- | src/heap/mark-compact.cc | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc index f7899c960..5b19fca92 100644 --- a/src/heap/mark-compact.cc +++ b/src/heap/mark-compact.cc @@ -2927,8 +2927,7 @@ class PointersUpdatingVisitor : public ObjectVisitor { } static inline void UpdateSlot(Heap* heap, Object** slot) { - Object* obj = reinterpret_cast<Object*>( - base::NoBarrier_Load(reinterpret_cast<base::AtomicWord*>(slot))); + Object* obj = *slot; if (!obj->IsHeapObject()) return; @@ -2939,10 +2938,7 @@ class PointersUpdatingVisitor : public ObjectVisitor { DCHECK(heap->InFromSpace(heap_obj) || MarkCompactCollector::IsOnEvacuationCandidate(heap_obj)); HeapObject* target = map_word.ToForwardingAddress(); - base::NoBarrier_CompareAndSwap( - reinterpret_cast<base::AtomicWord*>(slot), - reinterpret_cast<base::AtomicWord>(obj), - reinterpret_cast<base::AtomicWord>(target)); + *slot = target; DCHECK(!heap->InFromSpace(target) && !MarkCompactCollector::IsOnEvacuationCandidate(target)); } |