| Index: src/heap/scavenger.cc | 
| diff --git a/src/heap/scavenger.cc b/src/heap/scavenger.cc | 
| index aea41dd552ae06151a6c21ddc3e23cbed346f72c..f2722e81de5e27a1d415991b955ce3f91cc1e38f 100644 | 
| --- a/src/heap/scavenger.cc | 
| +++ b/src/heap/scavenger.cc | 
| @@ -185,8 +185,12 @@ class ScavengingVisitor : public StaticVisitorBase { | 
| if (allocation.To(&target)) { | 
| MigrateObject(heap, object, target, object_size); | 
|  | 
| -      // Update slot to new target. | 
| -      *slot = target; | 
| +      // Update slot to new target using CAS. A concurrent sweeper thread my | 
| +      // filter the slot concurrently. | 
| +      HeapObject* old = *slot; | 
| +      base::Release_CompareAndSwap(reinterpret_cast<base::AtomicWord*>(slot), | 
| +                                   reinterpret_cast<base::AtomicWord>(old), | 
| +                                   reinterpret_cast<base::AtomicWord>(target)); | 
|  | 
| if (object_contents == POINTER_OBJECT) { | 
| heap->promotion_queue()->insert( | 
|  |