// Copyright 2023 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 V8_HEAP_MEMORY_CHUNK_H_ #define V8_HEAP_MEMORY_CHUNK_H_ #include "src/base/build_config.h" #include "src/base/functional.h" #include "src/flags/flags.h" #if V8_ENABLE_STICKY_MARK_BITS_BOOL #define UNREACHABLE_WITH_STICKY_MARK_BITS … #else #define UNREACHABLE_WITH_STICKY_MARK_BITS … #endif namespace v8 { internal // namespace internal namespace base { // Define special hash function for chunk pointers, to be used with std data // structures, e.g. // std::unordered_set<MemoryChunk*, base::hash<MemoryChunk*> // This hash function discards the trailing zero bits (chunk alignment). // Notice that, when pointer compression is enabled, it also discards the // cage base. template <> struct hash<const i::MemoryChunk*> { … }; template <> struct hash<i::MemoryChunk*> { … }; } // namespace base } // namespace v8 #undef UNREACHABLE_WITH_STICKY_MARK_BITS #endif // V8_HEAP_MEMORY_CHUNK_H_