Index: src/heap/incremental-marking.h |
diff --git a/src/heap/incremental-marking.h b/src/heap/incremental-marking.h |
index 56c5a24c2ceb732ab90bc1865da5bf184e5f46f8..d6dfe17c7f2472ebb9ce76bdab694e1cb5a00708 100644 |
--- a/src/heap/incremental-marking.h |
+++ b/src/heap/incremental-marking.h |
@@ -24,6 +24,8 @@ class IncrementalMarking { |
enum ForceCompletionAction { FORCE_COMPLETION, DO_NOT_FORCE_COMPLETION }; |
+ enum GCRequestType { COMPLETE_MARKING, OVERAPPROXIMATION }; |
+ |
explicit IncrementalMarking(Heap* heap); |
static void Initialize(); |
@@ -36,6 +38,13 @@ class IncrementalMarking { |
bool should_hurry() { return should_hurry_; } |
void set_should_hurry(bool val) { should_hurry_ = val; } |
+ bool weak_closure_was_overapproximated() const { |
+ return weak_closure_was_overapproximated_; |
+ } |
+ void set_weak_closure_was_overapproximated(bool val) { |
+ weak_closure_was_overapproximated_ = val; |
+ } |
+ |
inline bool IsStopped() { return state() == STOPPED; } |
INLINE(bool IsMarking()) { return state() >= MARKING; } |
@@ -44,6 +53,8 @@ class IncrementalMarking { |
inline bool IsComplete() { return state() == COMPLETE; } |
+ GCRequestType request_type() const { return request_type_; } |
+ |
bool WorthActivating(); |
bool ShouldActivate(); |
@@ -66,6 +77,8 @@ class IncrementalMarking { |
void Abort(); |
+ void OverApproximateWeakClosure(); |
+ |
void MarkingComplete(CompletionAction action); |
void Epilogue(); |
@@ -228,6 +241,10 @@ class IncrementalMarking { |
bool was_activated_; |
+ bool weak_closure_was_overapproximated_; |
+ |
+ GCRequestType request_type_; |
+ |
DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalMarking); |
}; |
} |