Chromium Code Reviews| Index: src/heap/spaces.h | 
| diff --git a/src/heap/spaces.h b/src/heap/spaces.h | 
| index 3461de3ef009f18d9549a8de8f18ce831ba2f572..ca4fe9526b9c4f74292dcb7d898d15896e03aaa3 100644 | 
| --- a/src/heap/spaces.h | 
| +++ b/src/heap/spaces.h | 
| @@ -452,10 +452,14 @@ class MemoryChunk { | 
| base::Release_Store(¶llel_sweeping_, state); | 
| } | 
| - bool TryParallelSweeping() { | 
| - return base::Acquire_CompareAndSwap(¶llel_sweeping_, SWEEPING_PENDING, | 
| - SWEEPING_IN_PROGRESS) == | 
| - SWEEPING_PENDING; | 
| + bool TryLock() { return mutex_->TryLock(); } | 
| + | 
| + base::Mutex* mutex() { return mutex_; } | 
| + | 
| + void WaitUntilSweepingCompleted() { | 
| + mutex_->Lock(); | 
| + mutex_->Unlock(); | 
| + DCHECK(SweepingCompleted()); | 
| } | 
| bool SweepingCompleted() { return parallel_sweeping() <= SWEEPING_FINALIZE; } | 
| @@ -537,9 +541,10 @@ class MemoryChunk { | 
| static const size_t kWriteBarrierCounterOffset = | 
| kSlotsBufferOffset + kPointerSize + kPointerSize; | 
| - static const size_t kHeaderSize = | 
| - kWriteBarrierCounterOffset + kPointerSize + kIntSize + kIntSize + | 
| - kPointerSize + 5 * kPointerSize + kPointerSize + kPointerSize; | 
| + static const size_t kHeaderSize = kWriteBarrierCounterOffset + kPointerSize + | 
| + kIntSize + kIntSize + kPointerSize + | 
| + 5 * kPointerSize + kPointerSize + | 
| + kPointerSize + kPointerSize; | 
| 
 
Michael Lippautz
2015/07/22 13:17:01
Can we make this more verbose by adding a comment?
 
Hannes Payer (out of office)
2015/07/22 13:29:25
Done.
 
 | 
| static const int kBodyOffset = | 
| CODE_POINTER_ALIGN(kHeaderSize + Bitmap::kSize); | 
| @@ -675,6 +680,7 @@ class MemoryChunk { | 
| // count highest number of bytes ever allocated on the page. | 
| int high_water_mark_; | 
| + base::Mutex* mutex_; | 
| base::AtomicWord parallel_sweeping_; | 
| // PagedSpace free-list statistics. |