5#ifndef INCLUDE_CPPGC_INTERNAL_CAGED_HEAP_H_
6#define INCLUDE_CPPGC_INTERNAL_CAGED_HEAP_H_
15#if defined(CPPGC_CAGED_HEAP)
22 V8_INLINE static uintptr_t OffsetFromAddress(
const void* address) {
23 return reinterpret_cast<uintptr_t
>(address) &
24 (api_constants::kCagedHeapReservationAlignment - 1);
27 V8_INLINE static bool IsWithinCage(
const void* address) {
29 return (
reinterpret_cast<uintptr_t
>(address) &
30 ~(api_constants::kCagedHeapReservationAlignment - 1)) ==
34 V8_INLINE static bool AreWithinCage(
const void* addr1,
const void* addr2) {
35#if defined(CPPGC_POINTER_COMPRESSION)
36 static constexpr size_t kHeapBaseShift =
37 31 + api_constants::kPointerCompressionShift;
39 static constexpr size_t kHeapBaseShift =
sizeof(uint32_t) * CHAR_BIT;
41 static_assert((
static_cast<size_t>(1) << kHeapBaseShift) ==
42 api_constants::kCagedHeapMaxReservationSize);
44 return !(((
reinterpret_cast<uintptr_t
>(addr1) ^ g_heap_base_) |
45 (
reinterpret_cast<uintptr_t
>(addr2) ^ g_heap_base_)) >>
49 V8_INLINE static uintptr_t GetBase() {
return g_heap_base_; }
50 V8_INLINE static size_t GetAgeTableSize() {
return g_age_table_size_; }
53 friend class CagedHeap;
55 static uintptr_t g_heap_base_;
56 static size_t g_age_table_size_;
#define CPPGC_DCHECK(condition)
Definition: logging.h:36
Definition: allocation.h:38
#define V8_EXPORT
Definition: v8config.h:793
#define V8_INLINE
Definition: v8config.h:499