Chromium Code Reviews| Index: src/heap.h |
| diff --git a/src/heap.h b/src/heap.h |
| index 5b8610f945423b0c282e70c1a76d8bd820624ea2..f3a5b776e9f1d98122455e8c621ccf72a743ba83 100644 |
| --- a/src/heap.h |
| +++ b/src/heap.h |
| @@ -1856,6 +1856,31 @@ class Heap { |
| void CheckpointObjectStats(); |
| + // We don't use a ScopedLock here since we want to lock the heap |
| + // only when FLAG_parallel_recompilation is true. |
| + class RelocationLock { |
| + public: |
| + explicit RelocationLock(Heap* heap); |
| + |
| + ~RelocationLock() { |
| + if (FLAG_parallel_recompilation) { |
| +#ifdef DEBUG |
| + heap_->relocation_mutex_locked_by_optimizer_thread_ = false; |
|
Hannes Payer (out of office)
2013/04/26 07:27:47
Just set it to false if the destructor is called b
|
| +#endif // DEBUG |
| + heap_->relocation_mutex_->Unlock(); |
| + } |
| + } |
| + |
| +#ifdef DEBUG |
| + static bool IsLockedByOptimizerThread(Heap* heap) { |
|
Hannes Payer (out of office)
2013/04/26 07:27:47
I think you may want to avoid static methods since
|
| + return heap->relocation_mutex_locked_by_optimizer_thread_; |
| + } |
| +#endif // DEBUG |
| + |
| + private: |
| + Heap* heap_; |
| + }; |
| + |
| private: |
| Heap(); |
| @@ -2330,6 +2355,11 @@ class Heap { |
| MemoryChunk* chunks_queued_for_free_; |
| + Mutex* relocation_mutex_; |
| +#ifdef DEBUG |
| + bool relocation_mutex_locked_by_optimizer_thread_; |
| +#endif // DEBUG; |
| + |
| friend class Factory; |
| friend class GCTracer; |
| friend class DisallowAllocationFailure; |