v8
8.6.395 (node 15.0.1)
V8 is Google's open source JavaScript engine
Main Page
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Functions
a
c
d
f
h
i
j
m
n
o
p
r
s
t
u
Variables
Typedefs
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
Enumerations
a
c
e
g
i
j
k
m
n
p
r
s
t
w
Enumerator
a
b
c
d
e
g
i
j
k
n
o
p
r
s
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
:
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
~
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
~
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
Typedefs
a
b
c
d
e
g
i
m
n
p
r
s
t
u
w
Enumerations
a
b
c
e
f
g
m
n
o
p
s
t
u
w
Enumerator
b
c
d
e
h
j
k
n
o
p
r
s
t
u
Related Functions
:
a
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
Files
File List
Globals
All
a
c
s
v
Macros
a
c
s
v
Examples
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
caged-heap-local-data.h
Go to the documentation of this file.
1
// Copyright 2020 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
INCLUDE_CPPGC_INTERNAL_CAGED_HEAP_LOCAL_DATA_H_
6
#
define
INCLUDE_CPPGC_INTERNAL_CAGED_HEAP_LOCAL_DATA_H_
7
8
#
include
<
array
>
9
10
#
include
"cppgc/internal/api-constants.h"
11
#
include
"cppgc/internal/logging.h"
12
#
include
"cppgc/platform.h"
13
14
namespace
cppgc
{
15
namespace
internal
{
16
17
class
HeapBase;
18
19
#
if
defined
(
CPPGC_YOUNG_GENERATION
)
20
21
// AgeTable contains entries that correspond to 4KB memory regions. Each entry
22
// can be in one of three states: kOld, kYoung or kUnknown.
23
class
AgeTable
final
{
24
static
constexpr
size_t
kGranularityBits
= 12;
// 4KiB per byte.
25
26
public
:
27
enum
class
Age
:
uint8_t
{
kOld
,
kYoung
,
kUnknown
};
28
29
static
constexpr
size_t
kEntrySizeInBytes
= 1 <<
kGranularityBits
;
30
31
Age
&
operator
[](
uintptr_t
offset
) {
return
table_
[
entry
(
offset
)]; }
32
Age
operator
[](
uintptr_t
offset
)
const
{
return
table_
[
entry
(
offset
)]; }
33
34
void
Reset
(
PageAllocator
*
allocator
);
35
36
private
:
37
static
constexpr
size_t
kAgeTableSize
=
38
api_constants
::
kCagedHeapReservationSize
>>
kGranularityBits
;
39
40
size_t
entry
(
uintptr_t
offset
)
const
{
41
const
size_t
entry
=
offset
>>
kGranularityBits
;
42
CPPGC_DCHECK
(
table_
.
size
() >
entry
);
43
return
entry
;
44
}
45
46
std
::
array
<
Age
,
kAgeTableSize
>
table_
;
47
};
48
49
static_assert
(
sizeof
(
AgeTable
) == 1 *
api_constants
::
kMB
,
50
"Size of AgeTable is 1MB"
);
51
52
#
endif
// CPPGC_YOUNG_GENERATION
53
54
struct
CagedHeapLocalData
final
{
55
explicit
CagedHeapLocalData
(HeapBase* heap_base) :
heap_base
(heap_base) {}
56
57
bool
is_marking_in_progress
=
false
;
58
HeapBase*
heap_base
=
nullptr
;
59
#
if
defined
(
CPPGC_YOUNG_GENERATION
)
60
AgeTable age_table;
61
#
endif
62
};
63
64
}
// namespace internal
65
}
// namespace cppgc
66
67
#
endif
// INCLUDE_CPPGC_INTERNAL_CAGED_HEAP_LOCAL_DATA_H_
include
cppgc
internal
caged-heap-local-data.h
Generated on Fri Oct 29 2021 20:08:05 for v8 by
1.9.1