Index: src/heap/incremental-marking.h |
diff --git a/src/heap/incremental-marking.h b/src/heap/incremental-marking.h |
index 2c63cfcad6ade74752f06a6f51bc3cb127e29031..87eaf049ec160113e57ff39469f150d1703b124c 100644 |
--- a/src/heap/incremental-marking.h |
+++ b/src/heap/incremental-marking.h |
@@ -6,6 +6,7 @@ |
#define V8_HEAP_INCREMENTAL_MARKING_H_ |
+#include "src/cancelable-task.h" |
#include "src/execution.h" |
#include "src/heap/mark-compact.h" |
#include "src/objects.h" |
@@ -204,6 +205,12 @@ class IncrementalMarking { |
GCCallbackFlags CallbackFlags() const { return gc_callback_flags_; } |
+ void ScheduleIncrementalMarkingTask(); |
+ void NotifyIncrementalMarkingTaskRunning(); |
+ bool IsIncrementalMarkingTaskPending() { |
+ return pending_incremental_marking_task_; |
+ } |
+ |
private: |
int64_t SpaceLeftInOldSpace(); |
@@ -264,8 +271,21 @@ class IncrementalMarking { |
GCCallbackFlags gc_callback_flags_; |
+ bool pending_incremental_marking_task_; |
+ |
DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalMarking); |
}; |
+ |
+ |
+class IncrementalMarkingTask : public CancelableIdleTask { |
+ public: |
+ explicit IncrementalMarkingTask(Isolate* isolate) |
+ : CancelableIdleTask(isolate) {} |
+ // CancelableIdleTask overrides. |
+ void RunInternal(double deadline_in_seconds) override; |
+ enum Progress { kDone, kMoreWork }; |
+ static Progress Step(Heap* heap, double deadline_in_ms); |
+}; |
} |
} // namespace v8::internal |