blob: 68183f586007ac8855a658ba1c484390c136dc69 [file] [log] [blame] [edit]
// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "include/cppgc/internal/gc-info.h"
#include "include/cppgc/internal/name-trait.h"
#include "include/v8config.h"
#include "src/heap/cppgc/gc-info-table.h"
namespace cppgc::internal {
namespace {
HeapObjectName GetHiddenName(
const void*, HeapObjectNameForUnnamedObject name_retrieval_mode) {
return {
NameProvider::kHiddenName,
name_retrieval_mode == HeapObjectNameForUnnamedObject::kUseHiddenName};
}
} // namespace
// static
GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndex(
std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback,
FinalizationCallback finalization_callback, NameCallback name_callback) {
return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
registered_index,
GCInfo(finalization_callback, trace_callback, name_callback));
}
// static
GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndex(
std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback,
FinalizationCallback finalization_callback) {
return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
registered_index,
GCInfo(finalization_callback, trace_callback, GetHiddenName));
}
// static
GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndex(
std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback,
NameCallback name_callback) {
return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
registered_index, GCInfo(nullptr, trace_callback, name_callback));
}
// static
GCInfoIndex EnsureGCInfoIndexTrait::EnsureGCInfoIndex(
std::atomic<GCInfoIndex>& registered_index, TraceCallback trace_callback) {
return GlobalGCInfoTable::GetMutable().RegisterNewGCInfo(
registered_index, GCInfo(nullptr, trace_callback, GetHiddenName));
}
} // namespace cppgc::internal