v8  6.7.288(node10.6.0)
V8 is Google's open source JavaScript engine
Platform Class Referenceabstract

#include <v8-platform.h>

Public Types

enum  ExpectedRuntime { kShortRunningTask, kLongRunningTask }
 
typedef void(* StackTracePrinter) ()
 

Public Member Functions

virtual ~Platform ()=default
 
virtual PageAllocatorGetPageAllocator ()
 
virtual void OnCriticalMemoryPressure ()
 
virtual bool OnCriticalMemoryPressure (size_t length)
 
virtual int NumberOfWorkerThreads ()
 
 V8_DEPRECATE_SOON ("NumberOfAvailableBackgroundThreads() is deprecated, use ""NumberOfAvailableBackgroundThreads() instead.", virtual size_t NumberOfAvailableBackgroundThreads())
 
virtual std::shared_ptr< v8::TaskRunnerGetForegroundTaskRunner (Isolate *isolate)
 
 V8_DEPRECATE_SOON ("GetBackgroundTaskRunner() is deprecated, use ""GetWorkerThreadsTaskRunner() ""instead.", virtual std::shared_ptr< v8::TaskRunner > GetBackgroundTaskRunner(Isolate *isolate))
 
virtual std::shared_ptr< v8::TaskRunnerGetWorkerThreadsTaskRunner (Isolate *isolate)
 
 V8_DEPRECATE_SOON ("ExpectedRuntime is deprecated, use CallOnWorkerThread() instead.", virtual void CallOnBackgroundThread(Task *task, ExpectedRuntime expected_runtime))
 
virtual void CallOnWorkerThread (std::unique_ptr< Task > task)
 
virtual void CallBlockingTaskOnWorkerThread (std::unique_ptr< Task > task)
 
virtual void CallOnForegroundThread (Isolate *isolate, Task *task)=0
 
virtual void CallDelayedOnForegroundThread (Isolate *isolate, Task *task, double delay_in_seconds)=0
 
virtual void CallIdleOnForegroundThread (Isolate *isolate, IdleTask *task)
 
virtual bool IdleTasksEnabled (Isolate *isolate)
 
virtual double MonotonicallyIncreasingTime ()=0
 
virtual double CurrentClockTimeMillis ()=0
 
virtual StackTracePrinter GetStackTracePrinter ()
 
virtual TracingControllerGetTracingController ()=0
 

Static Protected Member Functions

static double SystemClockTimeMillis ()
 

Detailed Description

V8 Platform abstraction layer.

The embedder has to provide an implementation of this interface before initializing the rest of V8.

Definition at line 245 of file v8-platform.h.

Member Typedef Documentation

typedef void(* StackTracePrinter) ()

Definition at line 448 of file v8-platform.h.

Member Enumeration Documentation

This enum is used to indicate whether a task is potentially long running, or causes a long wait. The embedder might want to use this hint to decide whether to execute the task on a dedicated thread.

Enumerator
kShortRunningTask 
kLongRunningTask 

Definition at line 252 of file v8-platform.h.

Constructor & Destructor Documentation

virtual ~Platform ( )
virtualdefault

Member Function Documentation

virtual void CallBlockingTaskOnWorkerThread ( std::unique_ptr< Task task)
inlinevirtual

Schedules a task that blocks the main thread to be invoked with high-priority on a worker thread.

Definition at line 391 of file v8-platform.h.

References Platform::CallOnForegroundThread().

virtual void CallDelayedOnForegroundThread ( Isolate isolate,
Task task,
double  delay_in_seconds 
)
pure virtual

Schedules a task to be invoked on a foreground thread wrt a specific |isolate| after the given number of seconds |delay_in_seconds|. Tasks posted for the same isolate should be execute in order of scheduling. The definition of "foreground" is opaque to V8.

virtual void CallIdleOnForegroundThread ( Isolate isolate,
IdleTask task 
)
inlinevirtual

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.

Definition at line 421 of file v8-platform.h.

virtual void CallOnForegroundThread ( Isolate isolate,
Task task 
)
pure virtual

Schedules a task to be invoked on a foreground thread wrt a specific |isolate|. Tasks posted for the same isolate should be execute in order of scheduling. The definition of "foreground" is opaque to V8.

Referenced by Platform::CallBlockingTaskOnWorkerThread(), Platform::CallOnWorkerThread(), Platform::GetWorkerThreadsTaskRunner(), and Platform::V8_DEPRECATE_SOON().

virtual void CallOnWorkerThread ( std::unique_ptr< Task task)
inlinevirtual

Schedules a task to be invoked on a worker thread. TODO(gab): Make pure virtual when all embedders override this instead of CallOnBackgroundThread().

Definition at line 383 of file v8-platform.h.

References Platform::CallOnForegroundThread().

virtual double CurrentClockTimeMillis ( )
pure virtual

Current wall-clock time in milliseconds since epoch. This function is expected to return at least millisecond-precision values.

virtual std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner ( Isolate isolate)
inlinevirtual

Returns a TaskRunner which can be used to post a task on the foreground. This function should only be called from a foreground thread.

Definition at line 317 of file v8-platform.h.

virtual PageAllocator* GetPageAllocator ( )
inlinevirtual

Allows the embedder to manage memory page allocations.

Definition at line 262 of file v8-platform.h.

virtual StackTracePrinter GetStackTracePrinter ( )
inlinevirtual

Returns a function pointer that print a stack trace of the current stack on invocation. Disables printing of the stack trace if nullptr.

Definition at line 454 of file v8-platform.h.

virtual TracingController* GetTracingController ( )
pure virtual

Returns an instance of a v8::TracingController. This must be non-nullptr.

virtual std::shared_ptr<v8::TaskRunner> GetWorkerThreadsTaskRunner ( Isolate isolate)
inlinevirtual

Returns a TaskRunner which can be used to post async tasks on a worker. This function should only be called from a foreground thread.

Definition at line 351 of file v8-platform.h.

References Platform::CallOnForegroundThread().

virtual bool IdleTasksEnabled ( Isolate isolate)
inlinevirtual

Returns true if idle tasks are enabled for the given |isolate|.

Definition at line 428 of file v8-platform.h.

virtual double MonotonicallyIncreasingTime ( )
pure virtual

Monotonically increasing time in seconds from an arbitrary fixed point in the past. This function is expected to return at least millisecond-precision values. For this reason, it is recommended that the fixed point be no further in the past than the epoch.

virtual int NumberOfWorkerThreads ( )
inlinevirtual

Gets the number of worker threads used by GetWorkerThreadsTaskRunner() and CallOnWorkerThread(). This can be used to estimate the number of tasks a work package should be split into. A return value of 0 means that there are no worker threads available. Note that a value of 0 won't prohibit V8 from posting tasks using |CallOnWorkerThread|.

Definition at line 297 of file v8-platform.h.

virtual void OnCriticalMemoryPressure ( )
inlinevirtual

Enables the embedder to respond in cases where V8 can't allocate large blocks of memory. V8 retries the failed allocation once after calling this method. On success, execution continues; otherwise V8 exits with a fatal error. Embedder overrides of this function must NOT call back into V8.

Definition at line 274 of file v8-platform.h.

virtual bool OnCriticalMemoryPressure ( size_t  length)
inlinevirtual

Enables the embedder to respond in cases where V8 can't allocate large memory regions. The |length| parameter is the amount of memory needed. Returns true if memory is now available. Returns false if no memory could be made available. V8 will retry allocations until this method returns false.

Embedder overrides of this function must NOT call back into V8.

Definition at line 288 of file v8-platform.h.

static double SystemClockTimeMillis ( )
staticprotected

Default implementation of current wall-clock time in milliseconds since epoch. Useful for implementing |CurrentClockTimeMillis| if nothing special needed.

V8_DEPRECATE_SOON ( "NumberOfAvailableBackgroundThreads() is  deprecated,
use" "NumberOfAvailableBackgroundThreads() instead."  ,
virtual size_t   NumberOfAvailableBackgroundThreads() 
)
inline

Deprecated. Use NumberOfWorkerThreads() instead. TODO(gab): Remove this when all embedders override NumberOfWorkerThreads() instead.

Definition at line 306 of file v8-platform.h.

V8_DEPRECATE_SOON ( "GetBackgroundTaskRunner() is  deprecated,
use" "GetWorkerThreadsTaskRunner()" "instead."  ,
virtual std::shared_ptr< v8::TaskRunner >   GetBackgroundTaskRunnerIsolate *isolate 
)
inline

Returns a TaskRunner which can be used to post a task on a background. This function should only be called from a foreground thread.

Definition at line 328 of file v8-platform.h.

References Platform::CallOnForegroundThread().

V8_DEPRECATE_SOON ( "ExpectedRuntime is  deprecated,
use CallOnWorkerThread() instead."  ,
virtual void   CallOnBackgroundThreadTask *task,ExpectedRuntime expected_runtime 
)
inline

Schedules a task to be invoked on a background thread. |expected_runtime| indicates that the task will run a long time. The Platform implementation takes ownership of |task|. There is no guarantee about order of execution of tasks wrt order of scheduling, nor is there a guarantee about the thread the task will be run on.

Definition at line 365 of file v8-platform.h.

References Platform::CallOnForegroundThread().


The documentation for this class was generated from the following file: