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. |