5#ifndef V8_COMPILER_DISPATCHER_LAZY_COMPILE_DISPATCHER_H_
6#define V8_COMPILER_DISPATCHER_LAZY_COMPILE_DISPATCHER_H_
10#include <unordered_set>
21#include "testing/gtest/include/gtest/gtest_prod.h"
35class BackgroundCompileTask;
36class CancelableTaskManager;
37class UnoptimizedCompileJob;
38class UnoptimizedCompileState;
41class ProducedPreparseData;
42class SharedFunctionInfo;
44class Utf16CharacterStream;
45class WorkerThreadRuntimeCallStats;
80 size_t max_stack_size);
86 std::unique_ptr<Utf16CharacterStream> character_stream);
107 FRIEND_TEST(LazyCompileDispatcherTest, AsyncAbortAllPendingWorkerTask);
108 FRIEND_TEST(LazyCompileDispatcherTest, AsyncAbortAllRunningWorkerTask);
109 FRIEND_TEST(LazyCompileDispatcherTest, CompileMultipleOnBackgroundThread);
132 kPendingToRunOnForeground,
141 explicit Job(std::unique_ptr<BackgroundCompileTask> task);
145 return state == State::kRunning || state == State::kAbortRequested;
148 std::unique_ptr<BackgroundCompileTask>
task;
157 Job* PopSingleFinalizeJob();
159 bool FinalizeSingleJob();
161 void DoIdleWork(
double deadline_in_seconds);
164 void DeleteJob(
Job* job);
169 ++num_jobs_for_background_;
170 VerifyBackgroundTaskCount(lock);
173 --num_jobs_for_background_;
174 VerifyBackgroundTaskCount(lock);
218 std::unordered_set<Job*> all_jobs_;
base::AtomicValue< bool > block_for_testing_
base::Semaphore semaphore_for_testing_
TimedHistogram * background_compile_timer_
bool idle_task_scheduled_
std::vector< Job * > pending_background_jobs_
Job * main_thread_blocking_on_job_
FRIEND_TEST(LazyCompileDispatcherTest, AsyncAbortAllRunningWorkerTask)
FRIEND_TEST(LazyCompileDispatcherTest, AbortJobNotStarted)
void NotifyRemovedBackgroundJob(const base::MutexGuard &lock)
std::vector< Job * > jobs_to_dispose_
LazyCompileDispatcher(const LazyCompileDispatcher &)=delete
bool trace_compiler_dispatcher_
void NotifyAddedBackgroundJob(const base::MutexGuard &lock)
FRIEND_TEST(LazyCompileDispatcherTest, CompileMultipleOnBackgroundThread)
FRIEND_TEST(LazyCompileDispatcherTest, IdleTaskSmallIdleTime)
WorkerThreadRuntimeCallStats * worker_thread_runtime_call_stats_
FRIEND_TEST(LazyCompileDispatcherTest, AbortJobAlreadyStarted)
base::ConditionVariable main_thread_blocking_signal_
std::unique_ptr< CancelableTaskManager > idle_task_manager_
FRIEND_TEST(LazyCompileDispatcherTest, FinishNowWithWorkerTask)
std::unique_ptr< JobHandle > job_handle_
std::atomic< size_t > num_jobs_for_background_
FRIEND_TEST(LazyCompileDispatcherTest, IdleTaskNoIdleTime)
std::shared_ptr< TaskRunner > taskrunner_
std::vector< Job * > finalizable_jobs_
FRIEND_TEST(LazyCompileDispatcherTest, AsyncAbortAllPendingWorkerTask)
void VerifyBackgroundTaskCount(const base::MutexGuard &)
LazyCompileDispatcher & operator=(const LazyCompileDispatcher &)=delete
v8::JobDelegate JobDelegate
v8::TaskRunner TaskRunner
#define V8_EXPORT_PRIVATE
bool is_running_on_background() const
std::unique_ptr< BackgroundCompileTask > task