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_INCREMENTAL_MARKING_H_ | 5 #ifndef V8_HEAP_INCREMENTAL_MARKING_H_ |
6 #define V8_HEAP_INCREMENTAL_MARKING_H_ | 6 #define V8_HEAP_INCREMENTAL_MARKING_H_ |
7 | 7 |
8 | 8 |
9 #include "src/execution.h" | 9 #include "src/execution.h" |
10 #include "src/heap/mark-compact.h" | 10 #include "src/heap/mark-compact.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 } | 46 } |
47 | 47 |
48 inline bool IsStopped() { return state() == STOPPED; } | 48 inline bool IsStopped() { return state() == STOPPED; } |
49 | 49 |
50 INLINE(bool IsMarking()) { return state() >= MARKING; } | 50 INLINE(bool IsMarking()) { return state() >= MARKING; } |
51 | 51 |
52 inline bool IsMarkingIncomplete() { return state() == MARKING; } | 52 inline bool IsMarkingIncomplete() { return state() == MARKING; } |
53 | 53 |
54 inline bool IsComplete() { return state() == COMPLETE; } | 54 inline bool IsComplete() { return state() == COMPLETE; } |
55 | 55 |
| 56 inline bool IsReadyToOverApproximateWeakClosure() const { |
| 57 return request_type_ == OVERAPPROXIMATION; |
| 58 } |
| 59 |
56 GCRequestType request_type() const { return request_type_; } | 60 GCRequestType request_type() const { return request_type_; } |
57 | 61 |
58 bool WorthActivating(); | 62 bool WorthActivating(); |
59 | 63 |
60 bool ShouldActivate(); | 64 bool ShouldActivate(); |
61 | 65 |
62 bool WasActivated(); | 66 bool WasActivated(); |
63 | 67 |
64 enum CompactionFlag { ALLOW_COMPACTION, PREVENT_COMPACTION }; | 68 enum CompactionFlag { ALLOW_COMPACTION, PREVENT_COMPACTION }; |
65 | 69 |
66 void Start(CompactionFlag flag = ALLOW_COMPACTION); | 70 void Start(CompactionFlag flag = ALLOW_COMPACTION); |
67 | 71 |
68 void Stop(); | 72 void Stop(); |
69 | 73 |
70 void MarkObjectGroups(); | 74 void MarkObjectGroups(); |
71 | 75 |
72 void PrepareForScavenge(); | 76 void PrepareForScavenge(); |
73 | 77 |
74 void UpdateMarkingDequeAfterScavenge(); | 78 void UpdateMarkingDequeAfterScavenge(); |
75 | 79 |
76 void Hurry(); | 80 void Hurry(); |
77 | 81 |
78 void Finalize(); | 82 void Finalize(); |
79 | 83 |
80 void Abort(); | 84 void Abort(); |
81 | 85 |
82 void OverApproximateWeakClosure(); | 86 void OverApproximateWeakClosure(CompletionAction action); |
83 | 87 |
84 void MarkingComplete(CompletionAction action); | 88 void MarkingComplete(CompletionAction action); |
85 | 89 |
86 void Epilogue(); | 90 void Epilogue(); |
87 | 91 |
88 // It's hard to know how much work the incremental marker should do to make | 92 // It's hard to know how much work the incremental marker should do to make |
89 // progress in the face of the mutator creating new work for it. We start | 93 // progress in the face of the mutator creating new work for it. We start |
90 // of at a moderate rate of work and gradually increase the speed of the | 94 // of at a moderate rate of work and gradually increase the speed of the |
91 // incremental marker until it completes. | 95 // incremental marker until it completes. |
92 // Do some marking every time this much memory has been allocated or that many | 96 // Do some marking every time this much memory has been allocated or that many |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 bool weak_closure_was_overapproximated_; | 254 bool weak_closure_was_overapproximated_; |
251 | 255 |
252 GCRequestType request_type_; | 256 GCRequestType request_type_; |
253 | 257 |
254 DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalMarking); | 258 DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalMarking); |
255 }; | 259 }; |
256 } | 260 } |
257 } // namespace v8::internal | 261 } // namespace v8::internal |
258 | 262 |
259 #endif // V8_HEAP_INCREMENTAL_MARKING_H_ | 263 #endif // V8_HEAP_INCREMENTAL_MARKING_H_ |
OLD | NEW |