v8
10.1.124 (node 18.2.0)
V8 is Google's open source JavaScript engine
libplatform.h
Go to the documentation of this file.
1
// Copyright 2014 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_LIBPLATFORM_LIBPLATFORM_H_
6
#
define
V8_LIBPLATFORM_LIBPLATFORM_H_
7
8
#
include
<
memory
>
9
10
#
include
"libplatform/libplatform-export.h"
11
#
include
"libplatform/v8-tracing.h"
12
#
include
"v8-platform.h"
// NOLINT(build/include_directory)
13
#
include
"v8config.h"
// NOLINT(build/include_directory)
14
15
namespace
v8
{
16
namespace
platform
{
17
18
enum
class
IdleTaskSupport
{
kDisabled
,
kEnabled
};
19
enum
class
InProcessStackDumping
{
kDisabled
,
kEnabled
};
20
21
enum
class
MessageLoopBehavior
:
bool
{
22
kDoNotWait
=
false
,
23
kWaitForWork
=
true
24
};
25
26
/**
27
* Returns a new instance of the default v8::Platform implementation.
28
*
29
* The caller will take ownership of the returned pointer. |thread_pool_size|
30
* is the number of worker threads to allocate for background jobs. If a value
31
* of zero is passed, a suitable default based on the current number of
32
* processors online will be chosen.
33
* If |idle_task_support| is enabled then the platform will accept idle
34
* tasks (IdleTasksEnabled will return true) and will rely on the embedder
35
* calling v8::platform::RunIdleTasks to process the idle tasks.
36
* If |tracing_controller| is nullptr, the default platform will create a
37
* v8::platform::TracingController instance and use it.
38
*/
39
V8_PLATFORM_EXPORT
std::unique_ptr<
v8
::
Platform
>
NewDefaultPlatform
(
40
int
thread_pool_size = 0,
41
IdleTaskSupport
idle_task_support =
IdleTaskSupport
::
kDisabled
,
42
InProcessStackDumping
in_process_stack_dumping =
43
InProcessStackDumping
::
kDisabled
,
44
std::unique_ptr<
v8
::
TracingController
> tracing_controller = {});
45
46
/**
47
* The same as NewDefaultPlatform but disables the worker thread pool.
48
* It must be used with the --single-threaded V8 flag.
49
*/
50
V8_PLATFORM_EXPORT
std::unique_ptr<
v8
::
Platform
>
51
NewSingleThreadedDefaultPlatform
(
52
IdleTaskSupport
idle_task_support =
IdleTaskSupport
::
kDisabled
,
53
InProcessStackDumping
in_process_stack_dumping =
54
InProcessStackDumping
::
kDisabled
,
55
std::unique_ptr<
v8
::
TracingController
> tracing_controller = {});
56
57
/**
58
* Returns a new instance of the default v8::JobHandle implementation.
59
*
60
* The job will be executed by spawning up to |num_worker_threads| many worker
61
* threads on the provided |platform| with the given |priority|.
62
*/
63
V8_PLATFORM_EXPORT
std::unique_ptr<
v8
::
JobHandle
>
NewDefaultJobHandle
(
64
v8
::
Platform
* platform,
v8
::
TaskPriority
priority,
65
std::unique_ptr<
v8
::
JobTask
> job_task, size_t num_worker_threads);
66
67
/**
68
* Pumps the message loop for the given isolate.
69
*
70
* The caller has to make sure that this is called from the right thread.
71
* Returns true if a task was executed, and false otherwise. If the call to
72
* PumpMessageLoop is nested within another call to PumpMessageLoop, only
73
* nestable tasks may run. Otherwise, any task may run. Unless requested through
74
* the |behavior| parameter, this call does not block if no task is pending. The
75
* |platform| has to be created using |NewDefaultPlatform|.
76
*/
77
V8_PLATFORM_EXPORT
bool
PumpMessageLoop
(
78
v8
::
Platform
* platform,
v8
::
Isolate
* isolate,
79
MessageLoopBehavior
behavior =
MessageLoopBehavior
::
kDoNotWait
);
80
81
/**
82
* Runs pending idle tasks for at most |idle_time_in_seconds| seconds.
83
*
84
* The caller has to make sure that this is called from the right thread.
85
* This call does not block if no task is pending. The |platform| has to be
86
* created using |NewDefaultPlatform|.
87
*/
88
V8_PLATFORM_EXPORT
void
RunIdleTasks
(
v8
::
Platform
* platform,
89
v8
::
Isolate
* isolate,
90
double
idle_time_in_seconds);
91
92
/**
93
* Notifies the given platform about the Isolate getting deleted soon. Has to be
94
* called for all Isolates which are deleted - unless we're shutting down the
95
* platform.
96
*
97
* The |platform| has to be created using |NewDefaultPlatform|.
98
*
99
*/
100
V8_PLATFORM_EXPORT
void
NotifyIsolateShutdown
(
v8
::
Platform
* platform,
101
Isolate
* isolate);
102
103
}
// namespace platform
104
}
// namespace v8
105
106
#
endif
// V8_LIBPLATFORM_LIBPLATFORM_H_
include
libplatform
libplatform.h
Generated on Tue May 24 2022 19:28:56 for v8 by
1.9.1