File Explorer

/proc/self/root/proc/1/task/1/cwd/node24/include/node/cppgc/internal

This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.

caged-heap.h2.0 KB · 65 lines
// Copyright 2022 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_INTERNAL_CAGED_HEAP_H_#define INCLUDE_CPPGC_INTERNAL_CAGED_HEAP_H_ #include <climits>#include <cstddef> #include "cppgc/internal/api-constants.h"#include "cppgc/internal/base-page-handle.h"#include "v8config.h"  // NOLINT(build/include_directory) #if defined(CPPGC_CAGED_HEAP) namespace cppgc {namespace internal { class V8_EXPORT CagedHeapBase { public:  V8_INLINE static uintptr_t OffsetFromAddress(const void* address) {    return reinterpret_cast<uintptr_t>(address) &           (api_constants::kCagedHeapReservationAlignment - 1);  }   V8_INLINE static bool IsWithinCage(const void* address) {    CPPGC_DCHECK(g_heap_base_);    return (reinterpret_cast<uintptr_t>(address) &            ~(api_constants::kCagedHeapReservationAlignment - 1)) ==           g_heap_base_;  }   V8_INLINE static bool AreWithinCage(const void* addr1, const void* addr2) {#if defined(CPPGC_POINTER_COMPRESSION)    static constexpr size_t kHeapBaseShift =        31 + api_constants::kPointerCompressionShift;#else   // !defined(CPPGC_POINTER_COMPRESSION)    static constexpr size_t kHeapBaseShift = sizeof(uint32_t) * CHAR_BIT;#endif  // !defined(CPPGC_POINTER_COMPRESSION)    static_assert((static_cast<size_t>(1) << kHeapBaseShift) ==                  api_constants::kCagedHeapMaxReservationSize);    CPPGC_DCHECK(g_heap_base_);    return !(((reinterpret_cast<uintptr_t>(addr1) ^ g_heap_base_) |              (reinterpret_cast<uintptr_t>(addr2) ^ g_heap_base_)) >>             kHeapBaseShift);  }   V8_INLINE static uintptr_t GetBase() { return g_heap_base_; }  V8_INLINE static size_t GetAgeTableSize() { return g_age_table_size_; }  private:  friend class CagedHeap;   static uintptr_t g_heap_base_;  static size_t g_age_table_size_;}; }  // namespace internal}  // namespace cppgc #endif  // defined(CPPGC_CAGED_HEAP) #endif  // INCLUDE_CPPGC_INTERNAL_CAGED_HEAP_H_