v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
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
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_
T
#define T
cppgc
Definition
cross-heap-remembered-set.h:14
cppgc::IsGarbageCollectedTypeV
constexpr bool IsGarbageCollectedTypeV
Definition
type-traits.h:207
v8::internal::internal
internal
Definition
wasm-objects-inl.h:458
cppgc::internal::BaseObjectSizeTrait
Definition
object-size-trait.h:17
cppgc::subtle::ObjectSizeTrait< T, false >::GetSize
static size_t GetSize(const T &object)
Definition
object-size-trait.h:41
cppgc::subtle::ObjectSizeTrait< T, true >::GetSize
static size_t GetSize(const T &object)
Definition
object-size-trait.h:50
cppgc::subtle::ObjectSizeTrait
Definition
object-size-trait.h:33
type-traits.h
v8config.h
V8_EXPORT
#define V8_EXPORT
Definition
v8config.h:800
include
cppgc
object-size-trait.h
Generated on Sun Apr 6 2025 21:08:50 for v8 by
1.12.0