$23 GRAYBYTE WORDPRESS FILE MANAGER $77

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/cpanel/ea-nodejs22/include/node/cppgc/

HOME
Current File : /opt/cpanel/ea-nodejs22/include/node/cppgc//custom-space.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_CUSTOM_SPACE_H_
#define INCLUDE_CPPGC_CUSTOM_SPACE_H_

#include <stddef.h>

namespace cppgc {

/**
 * Index identifying a custom space.
 */
struct CustomSpaceIndex {
  constexpr CustomSpaceIndex(size_t value) : value(value) {}  // NOLINT
  size_t value;
};

/**
 * Top-level base class for custom spaces. Users must inherit from CustomSpace
 * below.
 */
class CustomSpaceBase {
 public:
  virtual ~CustomSpaceBase() = default;
  virtual CustomSpaceIndex GetCustomSpaceIndex() const = 0;
  virtual bool IsCompactable() const = 0;
};

/**
 * Base class custom spaces should directly inherit from. The class inheriting
 * from `CustomSpace` must define `kSpaceIndex` as unique space index. These
 * indices need for form a sequence starting at 0.
 *
 * Example:
 * \code
 * class CustomSpace1 : public CustomSpace<CustomSpace1> {
 *  public:
 *   static constexpr CustomSpaceIndex kSpaceIndex = 0;
 * };
 * class CustomSpace2 : public CustomSpace<CustomSpace2> {
 *  public:
 *   static constexpr CustomSpaceIndex kSpaceIndex = 1;
 * };
 * \endcode
 */
template <typename ConcreteCustomSpace>
class CustomSpace : public CustomSpaceBase {
 public:
  /**
   * Compaction is only supported on spaces that manually manage slots
   * recording.
   */
  static constexpr bool kSupportsCompaction = false;

  CustomSpaceIndex GetCustomSpaceIndex() const final {
    return ConcreteCustomSpace::kSpaceIndex;
  }
  bool IsCompactable() const final {
    return ConcreteCustomSpace::kSupportsCompaction;
  }
};

/**
 * User-overridable trait that allows pinning types to custom spaces.
 */
template <typename T, typename = void>
struct SpaceTrait {
  using Space = void;
};

namespace internal {

template <typename CustomSpace>
struct IsAllocatedOnCompactableSpaceImpl {
  static constexpr bool value = CustomSpace::kSupportsCompaction;
};

template <>
struct IsAllocatedOnCompactableSpaceImpl<void> {
  // Non-custom spaces are by default not compactable.
  static constexpr bool value = false;
};

template <typename T>
struct IsAllocatedOnCompactableSpace {
 public:
  static constexpr bool value =
      IsAllocatedOnCompactableSpaceImpl<typename SpaceTrait<T>::Space>::value;
};

}  // namespace internal

}  // namespace cppgc

#endif  // INCLUDE_CPPGC_CUSTOM_SPACE_H_

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
16 Mar 2026 5.04 PM
root / root
0755
internal
--
16 Mar 2026 5.04 PM
root / root
0755
allocation.h
11.61 KB
17 Jan 2026 1.16 AM
root / root
0644
common.h
0.628 KB
17 Jan 2026 1.16 AM
root / root
0644
cross-thread-persistent.h
14.814 KB
17 Jan 2026 1.16 AM
root / root
0644
custom-space.h
2.396 KB
17 Jan 2026 1.16 AM
root / root
0644
default-platform.h
2.178 KB
17 Jan 2026 1.16 AM
root / root
0644
ephemeron-pair.h
0.785 KB
17 Jan 2026 1.16 AM
root / root
0644
explicit-management.h
3.291 KB
17 Jan 2026 1.16 AM
root / root
0644
garbage-collected.h
3.108 KB
17 Jan 2026 1.16 AM
root / root
0644
heap-consistency.h
11.739 KB
17 Jan 2026 1.16 AM
root / root
0644
heap-handle.h
1.259 KB
17 Jan 2026 1.16 AM
root / root
0644
heap-state.h
2.57 KB
17 Jan 2026 1.16 AM
root / root
0644
heap-statistics.h
3.889 KB
17 Jan 2026 1.16 AM
root / root
0644
heap.h
5.697 KB
17 Jan 2026 1.16 AM
root / root
0644
liveness-broker.h
2.34 KB
17 Jan 2026 1.16 AM
root / root
0644
macros.h
1.313 KB
17 Jan 2026 1.16 AM
root / root
0644
member.h
23.549 KB
17 Jan 2026 1.16 AM
root / root
0644
name-provider.h
1.986 KB
17 Jan 2026 1.16 AM
root / root
0644
object-size-trait.h
1.604 KB
17 Jan 2026 1.16 AM
root / root
0644
persistent.h
13.61 KB
17 Jan 2026 1.16 AM
root / root
0644
platform.h
5.9 KB
17 Jan 2026 1.16 AM
root / root
0644
prefinalizer.h
2.875 KB
17 Jan 2026 1.16 AM
root / root
0644
process-heap-statistics.h
0.985 KB
17 Jan 2026 1.16 AM
root / root
0644
sentinel-pointer.h
1.18 KB
17 Jan 2026 1.16 AM
root / root
0644
source-location.h
0.404 KB
17 Jan 2026 1.16 AM
root / root
0644
testing.h
2.962 KB
17 Jan 2026 1.16 AM
root / root
0644
trace-trait.h
3.397 KB
17 Jan 2026 1.16 AM
root / root
0644
type-traits.h
8.453 KB
17 Jan 2026 1.16 AM
root / root
0644
visitor.h
18.082 KB
17 Jan 2026 1.16 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF