| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/heap/mark-compact.h" | 5 #include "src/heap/mark-compact.h" |
| 6 | 6 |
| 7 #include "src/base/atomicops.h" | 7 #include "src/base/atomicops.h" |
| 8 #include "src/base/bits.h" | 8 #include "src/base/bits.h" |
| 9 #include "src/base/sys-info.h" | 9 #include "src/base/sys-info.h" |
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
| (...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 769 void MarkCompactCollector::Prepare() { | 769 void MarkCompactCollector::Prepare() { |
| 770 was_marked_incrementally_ = heap()->incremental_marking()->IsMarking(); | 770 was_marked_incrementally_ = heap()->incremental_marking()->IsMarking(); |
| 771 | 771 |
| 772 #ifdef DEBUG | 772 #ifdef DEBUG |
| 773 DCHECK(state_ == IDLE); | 773 DCHECK(state_ == IDLE); |
| 774 state_ = PREPARE_GC; | 774 state_ = PREPARE_GC; |
| 775 #endif | 775 #endif |
| 776 | 776 |
| 777 DCHECK(!FLAG_never_compact || !FLAG_always_compact); | 777 DCHECK(!FLAG_never_compact || !FLAG_always_compact); |
| 778 | 778 |
| 779 if (sweeping_in_progress()) { | 779 // Instead of waiting we could also abort the sweeper threads here. |
| 780 // Instead of waiting we could also abort the sweeper threads here. | 780 EnsureSweepingCompleted(); |
| 781 EnsureSweepingCompleted(); | |
| 782 } | |
| 783 | 781 |
| 784 if (heap()->incremental_marking()->IsSweeping()) { | 782 if (heap()->incremental_marking()->IsSweeping()) { |
| 785 heap()->incremental_marking()->Stop(); | 783 heap()->incremental_marking()->Stop(); |
| 786 } | 784 } |
| 787 | 785 |
| 788 // If concurrent unmapping tasks are still running, we should wait for | 786 // If concurrent unmapping tasks are still running, we should wait for |
| 789 // them here. | 787 // them here. |
| 790 heap()->memory_allocator()->unmapper()->WaitUntilCompleted(); | 788 heap()->memory_allocator()->unmapper()->WaitUntilCompleted(); |
| 791 | 789 |
| 792 // Clear marking bits if incremental marking is aborted. | 790 // Clear marking bits if incremental marking is aborted. |
| (...skipping 3288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4081 // The target is always in old space, we don't have to record the slot in | 4079 // The target is always in old space, we don't have to record the slot in |
| 4082 // the old-to-new remembered set. | 4080 // the old-to-new remembered set. |
| 4083 DCHECK(!heap()->InNewSpace(target)); | 4081 DCHECK(!heap()->InNewSpace(target)); |
| 4084 RecordRelocSlot(host, &rinfo, target); | 4082 RecordRelocSlot(host, &rinfo, target); |
| 4085 } | 4083 } |
| 4086 } | 4084 } |
| 4087 } | 4085 } |
| 4088 | 4086 |
| 4089 } // namespace internal | 4087 } // namespace internal |
| 4090 } // namespace v8 | 4088 } // namespace v8 |
| OLD | NEW |