v8
9.0.257(node16.0.0)
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
i
k
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
d
e
f
g
m
n
o
p
s
t
u
v
w
Enumerator
b
c
d
e
h
j
k
n
o
p
r
s
t
u
Related Functions
:
a
b
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
object-size-trait.h
Go to the documentation of this file.
1
// Copyright 2021 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_OBJECT_SIZE_TRAIT_H_
6
#
define
INCLUDE_CPPGC_OBJECT_SIZE_TRAIT_H_
7
8
#
include
<
cstddef
>
9
10
#
include
"cppgc/type-traits.h"
11
#
include
"v8config.h"
// NOLINT(build/include_directory)
12
13
namespace
cppgc
{
14
15
namespace
internal
{
16
17
struct
V8_EXPORT
BaseObjectSizeTrait
{
18
protected
:
19
static
size_t
GetObjectSizeForGarbageCollected
(
const
void
*);
20
static
size_t
GetObjectSizeForGarbageCollectedMixin
(
const
void
*);
21
};
22
23
}
// namespace internal
24
25
namespace
subtle
{
26
27
/**
28
* Trait specifying how to get the size of an object that was allocated using
29
* `MakeGarbageCollected()`. Also supports querying the size with an inner
30
* pointer to a mixin.
31
*/
32
template
<
typename
T,
bool
= IsGarbageCollectedMixinTypeV<T>>
33
struct
ObjectSizeTrait;
34
35
template
<
typename
T>
36
struct
ObjectSizeTrait<T,
false
> :
cppgc
::
internal
::
BaseObjectSizeTrait
{
37
static_assert
(
sizeof
(T),
"T must be fully defined"
);
38
static_assert
(IsGarbageCollectedTypeV<T>,
39
"T must be of type GarbageCollected or GarbageCollectedMixin"
);
40
41
static
size_t
GetSize
(
const
T& object) {
42
return
GetObjectSizeForGarbageCollected
(
&object
)
;
43
}
44
};
45
46
template
<
typename
T>
47
struct
ObjectSizeTrait<T,
true
> :
cppgc
::
internal
::
BaseObjectSizeTrait
{
48
static_assert
(
sizeof
(T),
"T must be fully defined"
);
49
50
static
size_t
GetSize
(
const
T& object) {
51
return
GetObjectSizeForGarbageCollectedMixin
(
&object
)
;
52
}
53
};
54
55
}
// namespace subtle
56
}
// namespace cppgc
57
58
#
endif
// INCLUDE_CPPGC_OBJECT_SIZE_TRAIT_H_
cppgc::internal::BaseObjectSizeTrait
Definition:
object-size-trait.h:17
cppgc::subtle
Definition:
cross-thread-persistent.h:310
cppgc::internal::BaseObjectSizeTrait::GetObjectSizeForGarbageCollected
static size_t GetObjectSizeForGarbageCollected(const void *)
cppgc
Definition:
allocation.h:17
V8_EXPORT
#define V8_EXPORT
Definition:
v8config.h:512
cppgc::subtle::ObjectSizeTrait< T, false >::GetSize
static size_t GetSize(const T &object)
Definition:
object-size-trait.h:41
cppgc::internal::BaseObjectSizeTrait::GetObjectSizeForGarbageCollectedMixin
static size_t GetObjectSizeForGarbageCollectedMixin(const void *)
cppgc::subtle::ObjectSizeTrait< T, true >::GetSize
static size_t GetSize(const T &object)
Definition:
object-size-trait.h:50
cppgc::internal
Definition:
allocation.h:22
include
cppgc
object-size-trait.h
Generated on Tue Apr 20 2021 15:07:25 for v8 by
1.8.17