xref: /third_party/node/deps/v8/src/heap/cppgc/gc-info.cc (revision 1cb0ef41)
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#include "include/cppgc/internal/gc-info.h"
6
7#include "include/cppgc/internal/name-trait.h"
8#include "include/v8config.h"
9#include "src/heap/cppgc/gc-info-table.h"
10
11namespace cppgc {
12namespace internal {
13
14namespace {
15
16HeapObjectName GetHiddenName(const void*) {
17  return {NameProvider::kHiddenName, true};
18}
19
20}  // namespace
21
22// static
23GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndexPolymorphic(
24    std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback,
25    FinalizationCallback finalization_callback, NameCallback name_callback) {
26  return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
27      registered_index,
28      {finalization_callback, trace_callback, name_callback, true});
29}
30
31// static
32GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndexPolymorphic(
33    std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback,
34    FinalizationCallback finalization_callback) {
35  return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
36      registered_index,
37      {finalization_callback, trace_callback, GetHiddenName, true});
38}
39
40// static
41GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndexPolymorphic(
42    std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback,
43    NameCallback name_callback) {
44  return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
45      registered_index, {nullptr, trace_callback, name_callback, true});
46}
47
48// static
49GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndexPolymorphic(
50    std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback) {
51  return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
52      registered_index, {nullptr, trace_callback, GetHiddenName, true});
53}
54
55// static
56GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndexNonPolymorphic(
57    std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback,
58    FinalizationCallback finalization_callback, NameCallback name_callback) {
59  return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
60      registered_index,
61      {finalization_callback, trace_callback, name_callback, false});
62}
63
64// static
65GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndexNonPolymorphic(
66    std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback,
67    FinalizationCallback finalization_callback) {
68  return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
69      registered_index,
70      {finalization_callback, trace_callback, GetHiddenName, false});
71}
72
73// static
74GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndexNonPolymorphic(
75    std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback,
76    NameCallback name_callback) {
77  return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
78      registered_index, {nullptr, trace_callback, name_callback, false});
79}
80
81// static
82GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndexNonPolymorphic(
83    std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback) {
84  return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
85      registered_index, {nullptr, trace_callback, GetHiddenName, false});
86}
87
88}  // namespace internal
89}  // namespace cppgc
90