Loading...
Searching...
No Matches
v8-platform.h
Go to the documentation of this file.
1// Copyright 2013 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_V8_PLATFORM_H_
6#define V8_V8_PLATFORM_H_
7
8#include <stddef.h>
9#include <stdint.h>
10#include <memory>
11#include <string>
12
13namespace v8 {
14
15class Isolate;
16
20class Task {
21 public:
22 virtual ~Task() = default;
23
24 virtual void Run() = 0;
25};
26
33class IdleTask {
34 public:
35 virtual ~IdleTask() = default;
36 virtual void Run(double deadline_in_seconds) = 0;
37};
38
43 public:
44 virtual ~ConvertableToTraceFormat() = default;
45
52 virtual void AppendAsTraceFormat(std::string* out) const = 0;
53};
54
61 public:
62 virtual ~TracingController() = default;
63
71 virtual const uint8_t* GetCategoryGroupEnabled(const char* name) {
72 static uint8_t no = 0;
73 return &no;
74 }
75
84 virtual uint64_t AddTraceEvent(
85 char phase, const uint8_t* category_enabled_flag, const char* name,
86 const char* scope, uint64_t id, uint64_t bind_id, int32_t num_args,
87 const char** arg_names, const uint8_t* arg_types,
88 const uint64_t* arg_values,
89 std::unique_ptr<ConvertableToTraceFormat>* arg_convertables,
90 unsigned int flags) {
91 return 0;
92 }
93
98 virtual void UpdateTraceEventDuration(const uint8_t* category_enabled_flag,
99 const char* name, uint64_t handle) {}
100
102 public:
103 virtual ~TraceStateObserver() = default;
104 virtual void OnTraceEnabled() = 0;
105 virtual void OnTraceDisabled() = 0;
106 };
107
110
113};
114
121class Platform {
122 public:
131 };
132
133 virtual ~Platform() = default;
134
142 virtual void OnCriticalMemoryPressure() {}
143
151 virtual size_t NumberOfAvailableBackgroundThreads() { return 0; }
152
160 virtual void CallOnBackgroundThread(Task* task,
161 ExpectedRuntime expected_runtime) = 0;
162
168 virtual void CallOnForegroundThread(Isolate* isolate, Task* task) = 0;
169
176 virtual void CallDelayedOnForegroundThread(Isolate* isolate, Task* task,
177 double delay_in_seconds) = 0;
178
187 virtual void CallIdleOnForegroundThread(Isolate* isolate, IdleTask* task) {
188 // TODO(ulan): Make this function abstract after V8 roll in Chromium.
189 }
190
194 virtual bool IdleTasksEnabled(Isolate* isolate) {
195 // TODO(ulan): Make this function abstract after V8 roll in Chromium.
196 return false;
197 }
198
206 virtual double MonotonicallyIncreasingTime() = 0;
207
212 virtual double CurrentClockTimeMillis() {
213 // TODO(dats): Make pure virtual after V8 roll in Chromium.
214 return 0.0;
215 }
216
217 typedef void (*StackTracePrinter)();
218
223 virtual StackTracePrinter GetStackTracePrinter() { return nullptr; }
224
229
230 protected:
236 static double SystemClockTimeMillis();
237};
238
239} // namespace v8
240
241#endif // V8_V8_PLATFORM_H_
Definition: v8-platform.h:42
virtual ~ConvertableToTraceFormat()=default
virtual void AppendAsTraceFormat(std::string *out) const =0
Definition: v8-platform.h:33
virtual void Run(double deadline_in_seconds)=0
virtual ~IdleTask()=default
Definition: v8.h:6768
Definition: v8-platform.h:121
virtual size_t NumberOfAvailableBackgroundThreads()
Definition: v8-platform.h:151
static double SystemClockTimeMillis()
virtual TracingController * GetTracingController()=0
virtual double MonotonicallyIncreasingTime()=0
virtual void CallDelayedOnForegroundThread(Isolate *isolate, Task *task, double delay_in_seconds)=0
virtual void OnCriticalMemoryPressure()
Definition: v8-platform.h:142
virtual void CallOnForegroundThread(Isolate *isolate, Task *task)=0
virtual void CallOnBackgroundThread(Task *task, ExpectedRuntime expected_runtime)=0
virtual StackTracePrinter GetStackTracePrinter()
Definition: v8-platform.h:223
void(* StackTracePrinter)()
Definition: v8-platform.h:217
virtual ~Platform()=default
virtual double CurrentClockTimeMillis()
Definition: v8-platform.h:212
ExpectedRuntime
Definition: v8-platform.h:128
@ kLongRunningTask
Definition: v8-platform.h:130
@ kShortRunningTask
Definition: v8-platform.h:129
virtual bool IdleTasksEnabled(Isolate *isolate)
Definition: v8-platform.h:194
virtual void CallIdleOnForegroundThread(Isolate *isolate, IdleTask *task)
Definition: v8-platform.h:187
Definition: v8-platform.h:20
virtual void Run()=0
virtual ~Task()=default
Definition: v8-platform.h:101
Definition: v8-platform.h:60
virtual const uint8_t * GetCategoryGroupEnabled(const char *name)
Definition: v8-platform.h:71
virtual ~TracingController()=default
virtual void AddTraceStateObserver(TraceStateObserver *)
Definition: v8-platform.h:109
virtual void RemoveTraceStateObserver(TraceStateObserver *)
Definition: v8-platform.h:112
virtual void UpdateTraceEventDuration(const uint8_t *category_enabled_flag, const char *name, uint64_t handle)
Definition: v8-platform.h:98
virtual uint64_t AddTraceEvent(char phase, const uint8_t *category_enabled_flag, const char *name, const char *scope, uint64_t id, uint64_t bind_id, int32_t num_args, const char **arg_names, const uint8_t *arg_types, const uint64_t *arg_values, std::unique_ptr< ConvertableToTraceFormat > *arg_convertables, unsigned int flags)
Definition: v8-platform.h:84
Definition: libplatform.h:12