⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.177
Server IP:
50.6.168.112
Server:
Linux server-617809.webnetzimbabwe.com 5.14.0-570.25.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 9 04:57:09 EDT 2025 x86_64
Server Software:
Apache
PHP Version:
8.4.10
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
opt
/
cpanel
/
ea-nodejs20
/
include
/
node
/
cppgc
/
View File Name :
trace-trait.h
// 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. #ifndef INCLUDE_CPPGC_TRACE_TRAIT_H_ #define INCLUDE_CPPGC_TRACE_TRAIT_H_ #include
#include "cppgc/type-traits.h" #include "v8config.h" // NOLINT(build/include_directory) namespace cppgc { class Visitor; namespace internal { class RootVisitor; using TraceRootCallback = void (*)(RootVisitor&, const void* object); // Implementation of the default TraceTrait handling GarbageCollected and // GarbageCollectedMixin. template
::type>> struct TraceTraitImpl; } // namespace internal /** * Callback for invoking tracing on a given object. * * \param visitor The visitor to dispatch to. * \param object The object to invoke tracing on. */ using TraceCallback = void (*)(Visitor* visitor, const void* object); /** * Describes how to trace an object, i.e., how to visit all Oilpan-relevant * fields of an object. */ struct TraceDescriptor { /** * Adjusted base pointer, i.e., the pointer to the class inheriting directly * from GarbageCollected, of the object that is being traced. */ const void* base_object_payload; /** * Callback for tracing the object. */ TraceCallback callback; }; namespace internal { struct V8_EXPORT TraceTraitFromInnerAddressImpl { static TraceDescriptor GetTraceDescriptor(const void* address); }; /** * Trait specifying how the garbage collector processes an object of type T. * * Advanced users may override handling by creating a specialization for their * type. */ template
struct TraceTraitBase { static_assert(internal::IsTraceableV
, "T must have a Trace() method"); /** * Accessor for retrieving a TraceDescriptor to process an object of type T. * * \param self The object to be processed. * \returns a TraceDescriptor to process the object. */ static TraceDescriptor GetTraceDescriptor(const void* self) { return internal::TraceTraitImpl
::GetTraceDescriptor( static_cast
(self)); } /** * Function invoking the tracing for an object of type T. * * \param visitor The visitor to dispatch to. * \param self The object to invoke tracing on. */ static void Trace(Visitor* visitor, const void* self) { static_cast
(self)->Trace(visitor); } }; } // namespace internal template
struct TraceTrait : public internal::TraceTraitBase
{}; namespace internal { template
struct TraceTraitImpl
{ static_assert(IsGarbageCollectedTypeV
, "T must be of type GarbageCollected or GarbageCollectedMixin"); static TraceDescriptor GetTraceDescriptor(const void* self) { return {self, TraceTrait
::Trace}; } }; template
struct TraceTraitImpl
{ static TraceDescriptor GetTraceDescriptor(const void* self) { return internal::TraceTraitFromInnerAddressImpl::GetTraceDescriptor(self); } }; } // namespace internal } // namespace cppgc #endif // INCLUDE_CPPGC_TRACE_TRAIT_H_