5#ifndef V8_OBJECTS_STRING_FORWARDING_TABLE_H_
6#define V8_OBJECTS_STRING_FORWARDING_TABLE_H_
41 inline int size()
const;
42 inline bool empty()
const;
62 int index,
bool* is_one_byte) const;
64 template <typename Func>
80 static inline uint32_t
BlockForIndex(
int index, uint32_t* index_in_block_out);
81 static inline uint32_t
IndexInBlock(
int index, uint32_t block);
106#include "src/objects/object-macros-undef.h"
static constexpr Tagged< Smi > FromInt(int value)
std::atomic< BlockVector * > blocks_
static uint32_t IndexInBlock(int index, uint32_t block)
bool TryUpdateExternalResource(int index, T *resource)
static constexpr int kInitialBlockSizeHighestBit
static constexpr Tagged< Smi > unused_element()
int AddExternalResourceAndHash(Tagged< String > string, T *resource, uint32_t raw_hash)
StringForwardingTable(Isolate *isolate)
static Address GetForwardStringAddress(Isolate *isolate, int index)
void UpdateAfterYoungEvacuation()
static constexpr int kInitialBlockVectorCapacity
void UpdateForwardString(int index, Tagged< String > forward_to)
V8_EXPORT_PRIVATE uint32_t GetRawHash(PtrComprCageBase cage_base, int index) const
std::atomic< int > next_free_index_
v8::String::ExternalStringResourceBase * GetExternalResource(int index, bool *is_one_byte) const
static uint32_t GetRawHashStatic(Isolate *isolate, int index)
static uint32_t CapacityForBlock(uint32_t block)
static constexpr int kInitialBlockSize
static uint32_t BlockForIndex(int index, uint32_t *index_in_block_out)
V8_INLINE void IterateElements(Func &&callback)
void UpdateAfterFullEvacuation()
static constexpr Tagged< Smi > deleted_element()
BlockVector * EnsureCapacity(uint32_t block)
Tagged< String > GetForwardString(PtrComprCageBase cage_base, int index) const
std::vector< std::unique_ptr< BlockVector > > block_vector_storage_
void InitializeBlockVector()
int AddForwardString(Tagged< String > string, Tagged< String > forward_to)
#define EXPORT_TEMPLATE_DECLARE(export)
constexpr bool IsPowerOfTwo(T value)
constexpr unsigned CountLeadingZeros32(uint32_t value)
constexpr int kBitsPerInt
#define V8_EXPORT_PRIVATE