26void PrintStackTrace() {
33constexpr int kMaxThreadPoolSize = 16;
35int GetActualThreadPoolSize(
int thread_pool_size) {
37 if (thread_pool_size < 1) {
40 return std::max(std::min(thread_pool_size, kMaxThreadPoolSize), 1);
48 std::unique_ptr<v8::TracingController> tracing_controller,
53 thread_pool_size = GetActualThreadPoolSize(thread_pool_size);
54 auto platform = std::make_unique<DefaultPlatform>(
55 thread_pool_size, idle_task_support, std::move(tracing_controller),
63 std::unique_ptr<v8::TracingController> tracing_controller) {
67 auto platform = std::make_unique<DefaultPlatform>(
68 0, idle_task_support, std::move(tracing_controller));
74 std::unique_ptr<JobTask> job_task,
size_t num_worker_threads) {
75 return std::make_unique<DefaultJobHandle>(std::make_shared<DefaultJobState>(
76 platform, std::move(job_task),
priority, num_worker_threads));
86 double idle_time_in_seconds) {
88 idle_time_in_seconds);
97 std::unique_ptr<v8::TracingController> tracing_controller,
99 : thread_pool_size_(thread_pool_size),
100 idle_task_support_(idle_task_support),
101 tracing_controller_(
std::move(tracing_controller)),
103 priority_mode_(priority_mode) {
106#if !defined(V8_USE_PERFETTO)
124 it.second->Terminate();
130double DefaultTimeFunction() {
141 std::make_shared<DefaultWorkerThreadsTaskRunner>(
144 : DefaultTimeFunction,
161 std::shared_ptr<DefaultForegroundTaskRunner> task_runner;
166 task_runner = it->second;
169 std::unique_ptr<Task> task = task_runner->PopTaskFromQueue(wait_for_work);
170 if (!task)
return failed_result;
178 double idle_time_in_seconds) {
180 std::shared_ptr<DefaultForegroundTaskRunner> task_runner;
189 double deadline_in_seconds =
193 std::unique_ptr<IdleTask> task = task_runner->PopTaskFromIdleQueue();
196 task->Run(deadline_in_seconds);
206 isolate, std::make_shared<DefaultForegroundTaskRunner>(
209 : DefaultTimeFunction)));
250 num_worker_threads = 2;
258 return DefaultTimeFunction();
270 std::unique_ptr<v8::TracingController> tracing_controller) {
278 return PrintStackTrace;
293 std::shared_ptr<DefaultForegroundTaskRunner> taskrunner;
298 taskrunner = it->second;
302 taskrunner->Terminate();
static double TimeCurrentMillis()
static int NumberOfProcessors()
static constexpr int64_t kMicrosecondsPerSecond
int64_t ToInternalValue() const
cppgc::PageAllocator * page_allocator_
V8_BASE_EXPORT bool EnableInProcessStackDumping()
V8_BASE_EXPORT void DisableSignalStackDump()
#define DCHECK_NOT_NULL(val)
#define DCHECK_GE(v1, v2)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)