Index: include/v8-platform.h |
diff --git a/include/v8-platform.h b/include/v8-platform.h |
index be9e5c0c6b46ed122de88253e96f0cbaf8a0d98a..c6cba0f982929aa8795e214c89f9fc1adc4ffb11 100644 |
--- a/include/v8-platform.h |
+++ b/include/v8-platform.h |
@@ -19,6 +19,20 @@ class Task { |
virtual void Run() = 0; |
}; |
+ |
+/** |
+* An IdleTask represents a unit of work to be performed in idle time. |
+* The Run method is invoked with an argument that specifies the deadline in |
+* seconds returned by MonotonicallyIncreasingTime(). |
+* The idle task is expected to complete by this deadline. |
+*/ |
+class IdleTask { |
+ public: |
+ virtual ~IdleTask() {} |
+ virtual void Run(double deadline_in_seconds) = 0; |
+}; |
+ |
+ |
/** |
* V8 Platform abstraction layer. |
* |
@@ -63,8 +77,26 @@ class Platform { |
* scheduling. The definition of "foreground" is opaque to V8. |
*/ |
virtual void CallDelayedOnForegroundThread(Isolate* isolate, Task* task, |
- double delay_in_seconds) { |
+ double delay_in_seconds) = 0; |
+ |
+ /** |
+ * Schedules a task to be invoked on a foreground thread wrt a specific |
+ * |isolate| when the embedder is idle. |
+ * Requires that SupportsIdleTasks(isolate) is true. |
+ * Idle tasks may be reordered relative to other task types and may be |
+ * starved for an arbitrarily long time if no idle time is available. |
+ * The definition of "foreground" is opaque to V8. |
+ */ |
+ virtual void CallIdleOnForegroundThread(Isolate* isolate, IdleTask* task) { |
+ // TODO(ulan): Make this function abstract after V8 roll in Chromium. |
+ } |
+ |
+ /** |
+ * Returns true if idle tasks are enabled for the given |isolate|. |
+ */ |
+ virtual bool IdleTasksEnabled(Isolate* isolate) { |
// TODO(ulan): Make this function abstract after V8 roll in Chromium. |
+ return false; |
} |
/** |