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 #ifndef V8_HEAP_MARK_COMPACT_H_ | 5 #ifndef V8_HEAP_MARK_COMPACT_H_ |
6 #define V8_HEAP_MARK_COMPACT_H_ | 6 #define V8_HEAP_MARK_COMPACT_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 | 9 |
10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
11 #include "src/base/platform/condition-variable.h" | 11 #include "src/base/platform/condition-variable.h" |
12 #include "src/cancelable-task.h" | 12 #include "src/cancelable-task.h" |
| 13 #include "src/heap/concurrent-marking-deque.h" |
13 #include "src/heap/marking.h" | 14 #include "src/heap/marking.h" |
14 #include "src/heap/sequential-marking-deque.h" | 15 #include "src/heap/sequential-marking-deque.h" |
15 #include "src/heap/spaces.h" | 16 #include "src/heap/spaces.h" |
16 #include "src/heap/store-buffer.h" | 17 #include "src/heap/store-buffer.h" |
17 | 18 |
18 namespace v8 { | 19 namespace v8 { |
19 namespace internal { | 20 namespace internal { |
20 | 21 |
21 // Forward declarations. | 22 // Forward declarations. |
22 class CodeFlusher; | 23 class CodeFlusher; |
23 class EvacuationJobTraits; | 24 class EvacuationJobTraits; |
24 class HeapObjectVisitor; | 25 class HeapObjectVisitor; |
25 class MarkCompactCollector; | 26 class MarkCompactCollector; |
26 class MinorMarkCompactCollector; | 27 class MinorMarkCompactCollector; |
27 class MarkingVisitor; | 28 class MarkingVisitor; |
28 class MigrationObserver; | 29 class MigrationObserver; |
29 template <typename JobTraits> | 30 template <typename JobTraits> |
30 class PageParallelJob; | 31 class PageParallelJob; |
31 class RecordMigratedSlotVisitor; | 32 class RecordMigratedSlotVisitor; |
32 class ThreadLocalTop; | 33 class ThreadLocalTop; |
33 | 34 |
| 35 #ifdef V8_CONCURRENT_MARKING |
| 36 using MarkingDeque = ConcurrentMarkingDeque; |
| 37 #else |
34 using MarkingDeque = SequentialMarkingDeque; | 38 using MarkingDeque = SequentialMarkingDeque; |
| 39 #endif |
35 | 40 |
36 class ObjectMarking : public AllStatic { | 41 class ObjectMarking : public AllStatic { |
37 public: | 42 public: |
38 V8_INLINE static MarkBit MarkBitFrom(HeapObject* obj, | 43 V8_INLINE static MarkBit MarkBitFrom(HeapObject* obj, |
39 const MarkingState& state) { | 44 const MarkingState& state) { |
40 const Address address = obj->address(); | 45 const Address address = obj->address(); |
41 const MemoryChunk* p = MemoryChunk::FromAddress(address); | 46 const MemoryChunk* p = MemoryChunk::FromAddress(address); |
42 return state.bitmap()->MarkBitFromIndex(p->AddressToMarkbitIndex(address)); | 47 return state.bitmap()->MarkBitFromIndex(p->AddressToMarkbitIndex(address)); |
43 } | 48 } |
44 | 49 |
(...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 ~EvacuationScope() { collector_->set_evacuation(false); } | 735 ~EvacuationScope() { collector_->set_evacuation(false); } |
731 | 736 |
732 private: | 737 private: |
733 MarkCompactCollector* collector_; | 738 MarkCompactCollector* collector_; |
734 }; | 739 }; |
735 | 740 |
736 } // namespace internal | 741 } // namespace internal |
737 } // namespace v8 | 742 } // namespace v8 |
738 | 743 |
739 #endif // V8_HEAP_MARK_COMPACT_H_ | 744 #endif // V8_HEAP_MARK_COMPACT_H_ |
OLD | NEW |