LLVM 19.0.0git
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
llvm::StringMapImpl Class Reference

StringMapImpl - This is the base class of StringMap that is shared among all of its instantiations. More...

#include "llvm/ADT/StringMap.h"

Inherited by llvm::StringMap< BlockDataT< T > >, llvm::StringMap< FuncDataT< T > >, llvm::StringMap< std::nullopt_t, MallocAllocator >, llvm::StringMap< std::weak_ptr< DWOFile > >, llvm::StringMap< DenseSet< ValueInfo > >, llvm::StringMap< std::unique_ptr< llvm::AArch64Subtarget > >, llvm::StringMap< std::unique_ptr< llvm::ARMSubtarget > >, llvm::StringMap< llvm::SmallVector< size_t, 1 > >, llvm::StringMap< std::vector< std::string > >, llvm::StringMap< llvm::SmallString< 128 > >, llvm::StringMap< llvm::FunctionPathAndClusterInfo >, llvm::StringMap< llvm::StringRef >, llvm::StringMap< std::unique_ptr< llvm::CSKYSubtarget > >, llvm::StringMap< unsigned >, llvm::StringMap< uint32_t >, llvm::StringMap< std::string >, llvm::StringMap< const llvm::DIE * >, llvm::StringMap< llvm::DwarfStringPoolEntry, llvm::BumpPtrAllocatorImpl & >, llvm::StringMap< uint64_t >, llvm::StringMap< bool >, llvm::StringMap< llvm::NumericVariable * >, llvm::StringMap< llvm::GCStrategy * >, llvm::StringMap< std::unique_ptr< llvm::GCNSubtarget > >, llvm::StringMap< std::unique_ptr< llvm::GCStrategy > >, llvm::StringMap< std::unique_ptr< llvm::HexagonSubtarget > >, llvm::StringMap< std::unique_ptr< InlineGraphNode > >, llvm::StringMap< llvm::SmallDenseMap >, llvm::StringMap< std::pair< llvm::Type *, llvm::SMLoc > >, llvm::StringMap< llvm::MDString, llvm::BumpPtrAllocatorImpl >, llvm::StringMap< std::unique_ptr< llvm::ConstantDataSequential > >, llvm::StringMap< llvm::StructType * >, llvm::StringMap< uint8_t >, llvm::StringMap< GlobalValue::LinkageTypes >, llvm::StringMap< NameAndAttributes >, llvm::StringMap< size_t >, llvm::StringMap< std::unique_ptr< llvm::LoongArchSubtarget > >, llvm::StringMap< std::unique_ptr< llvm::M68kSubtarget > >, llvm::StringMap< MCSymbol *, BumpPtrAllocator & >, llvm::StringMap< bool, llvm::BumpPtrAllocatorImpl & >, llvm::StringMap< llvm::MCSectionMachO * >, llvm::StringMap< llvm::MCSectionDXContainer * >, llvm::StringMap< llvm::MCAsmMacro >, llvm::StringMap< std::unique_ptr< llvm::MipsSubtarget > >, llvm::StringMap< Comdat >, llvm::StringMap< NamedMDNode * >, llvm::StringMap< ModuleHash >, llvm::StringMap< DwarfStringPoolEntry, BumpPtrAllocator >, llvm::StringMap< OffloadEntryInfoDeviceGlobalVar >, llvm::StringMap< llvm::Constant * >, llvm::StringMap< llvm::GlobalVariable *, llvm::BumpPtrAllocatorImpl >, llvm::StringMap< T >, llvm::StringMap< std::unique_ptr< llvm::PPCSubtarget > >, llvm::StringMap< const PassInfo * >, llvm::StringMap< NumericVariableMatch >, llvm::StringMap< llvm::VRegInfo * >, llvm::StringMap< llvm::Register >, llvm::StringMap< const uint32_t * >, llvm::StringMap< int >, llvm::StringMap< MachineMemOperand::Flags >, llvm::StringMap< const TargetRegisterClass * >, llvm::StringMap< const RegisterBank * >, llvm::StringMap< ProbeFactorMap >, llvm::StringMap< std::unique_ptr< const llvm::ExternalSymbolPseudoSourceValue > >, llvm::StringMap< std::unique_ptr< llvm::R600Subtarget > >, llvm::StringMap< std::unique_ptr< llvm::RISCVSubtarget > >, llvm::StringMap< std::vector< llvm::Record * > >, llvm::StringMap< State >, llvm::StringMap< SymbolTableEntry >, llvm::StringMap< llvm::SmallVector >, llvm::StringMap< llvm::SDNode * >, llvm::StringMap< std::unique_ptr< llvm::SetTheory::Operator > >, llvm::StringMap< std::unique_ptr< llvm::SetTheory::Expander > >, llvm::StringMap< llvm::Type * >, llvm::StringMap< std::unique_ptr< llvm::SparcSubtarget > >, llvm::StringMap< llvm::SpecialCaseList::Section >, llvm::StringMap< std::pair< llvm::GlobPattern, unsigned > >, llvm::StringMap< StringMap< Matcher > >, llvm::StringMap< std::unique_ptr< llvm::SystemZSubtarget > >, llvm::StringMap< CountAndDurationType >, llvm::StringMap< Value * >, llvm::StringMap< std::unique_ptr< llvm::WebAssemblySubtarget > >, llvm::StringMap< std::unique_ptr< llvm::X86Subtarget > >, llvm::StringMap< std::unique_ptr< llvm::XtensaSubtarget > >, llvm::StringMap< llvm::cl::Option * >, llvm::StringMap< std::vector< llvm::support::detail::packed_endian_specific_integral > >, llvm::StringMap< llvm::StringInit *, llvm::BumpPtrAllocatorImpl & >, llvm::StringMap< llvm::StringMapEntry * >, llvm::StringMap< Symbol * >, llvm::StringMap< SectionParserFunction >, llvm::StringMap< size_t, BumpPtrAllocator >, llvm::StringMap< llvm::objcopy::SectionRename >, llvm::StringMap< llvm::objcopy::SectionFlagsUpdate >, llvm::StringMap< std::unique_ptr< llvm::orc::DebugObjectSection > >, llvm::StringMap< SectionList >, llvm::StringMap< std::vector< char > >, llvm::StringMap< llvm::orc::ExecutorAddr >, llvm::StringMap< std::pair< StubKey, llvm::JITSymbolFlags > >, llvm::StringMap< RefCountType >, llvm::StringMap< llvm::codeview::FileChecksumEntry >, llvm::StringMap< unsigned, llvm::BumpPtrAllocatorImpl >, and llvm::StringMap< ValueTy, AllocatorTy >.

Public Member Functions

unsigned getNumBuckets () const
 
unsigned getNumItems () const
 
bool empty () const
 
unsigned size () const
 
void swap (StringMapImpl &Other)
 

Static Public Member Functions

static StringMapEntryBasegetTombstoneVal ()
 
static uint32_t hash (StringRef Key)
 Returns the hash value that will be used for the given string.
 

Static Public Attributes

static constexpr uintptr_t TombstoneIntVal
 

Protected Member Functions

 StringMapImpl (unsigned itemSize)
 
 StringMapImpl (StringMapImpl &&RHS)
 
 StringMapImpl (unsigned InitSize, unsigned ItemSize)
 
unsigned RehashTable (unsigned BucketNo=0)
 RehashTable - Grow the table, redistributing values into the buckets with the appropriate mod-of-hashtable-size.
 
unsigned LookupBucketFor (StringRef Key)
 LookupBucketFor - Look up the bucket that the specified string should end up in.
 
unsigned LookupBucketFor (StringRef Key, uint32_t FullHashValue)
 Overload that explicitly takes precomputed hash(Key).
 
int FindKey (StringRef Key) const
 FindKey - Look up the bucket that contains the specified key.
 
int FindKey (StringRef Key, uint32_t FullHashValue) const
 Overload that explicitly takes precomputed hash(Key).
 
void RemoveKey (StringMapEntryBase *V)
 RemoveKey - Remove the specified StringMapEntry from the table, but do not delete it.
 
StringMapEntryBaseRemoveKey (StringRef Key)
 RemoveKey - Remove the StringMapEntry for the specified key from the table, returning it.
 
void init (unsigned Size)
 Allocate the table with the specified number of buckets and otherwise setup the map as empty.
 

Protected Attributes

StringMapEntryBase ** TheTable = nullptr
 
unsigned NumBuckets = 0
 
unsigned NumItems = 0
 
unsigned NumTombstones = 0
 
unsigned ItemSize
 

Detailed Description

StringMapImpl - This is the base class of StringMap that is shared among all of its instantiations.

Definition at line 33 of file StringMap.h.

Constructor & Destructor Documentation

◆ StringMapImpl() [1/3]

llvm::StringMapImpl::StringMapImpl ( unsigned  itemSize)
inlineexplicitprotected

Definition at line 45 of file StringMap.h.

◆ StringMapImpl() [2/3]

llvm::StringMapImpl::StringMapImpl ( StringMapImpl &&  RHS)
inlineprotected

Definition at line 46 of file StringMap.h.

References RHS.

◆ StringMapImpl() [3/3]

StringMapImpl::StringMapImpl ( unsigned  InitSize,
unsigned  ItemSize 
)
protected

Member Function Documentation

◆ empty()

bool llvm::StringMapImpl::empty ( ) const
inline

◆ FindKey() [1/2]

int llvm::StringMapImpl::FindKey ( StringRef  Key) const
inlineprotected

FindKey - Look up the bucket that contains the specified key.

If it exists in the map, return the bucket number of the key. Otherwise return -1. This does not modify the map.

Definition at line 74 of file StringMap.h.

References FindKey(), and hash().

Referenced by llvm::StringSet< AllocatorTy >::contains(), FindKey(), and RemoveKey().

◆ FindKey() [2/2]

int StringMapImpl::FindKey ( StringRef  Key,
uint32_t  FullHashValue 
) const
protected

Overload that explicitly takes precomputed hash(Key).

FindKey - Look up the bucket that contains the specified key.

If it exists in the map, return the bucket number of the key. Otherwise return -1. This does not modify the map.

Definition at line 147 of file StringMap.cpp.

References assert(), getHashTable(), llvm::StringMapEntryBase::getKeyLength(), getTombstoneVal(), hash(), ItemSize, LLVM_LIKELY, NumBuckets, llvm::shouldReverseIterate(), and TheTable.

◆ getNumBuckets()

unsigned llvm::StringMapImpl::getNumBuckets ( ) const
inline

Definition at line 100 of file StringMap.h.

References NumBuckets.

◆ getNumItems()

unsigned llvm::StringMapImpl::getNumItems ( ) const
inline

Definition at line 101 of file StringMap.h.

References NumItems.

◆ getTombstoneVal()

static StringMapEntryBase * llvm::StringMapImpl::getTombstoneVal ( )
inlinestatic

Definition at line 96 of file StringMap.h.

References TombstoneIntVal.

Referenced by FindKey(), LookupBucketFor(), RehashTable(), and RemoveKey().

◆ hash()

uint32_t StringMapImpl::hash ( StringRef  Key)
static

Returns the hash value that will be used for the given string.

This allows precomputing the value and passing it explicitly to some of the functions. The implementation of this function is not guaranteed to be stable and may change.

Definition at line 46 of file StringMap.cpp.

References llvm::xxh3_64bits().

Referenced by FindKey(), and LookupBucketFor().

◆ init()

void StringMapImpl::init ( unsigned  Size)
protected

Allocate the table with the specified number of buckets and otherwise setup the map as empty.

Definition at line 67 of file StringMap.cpp.

References assert(), createTable(), NumBuckets, NumItems, NumTombstones, and TheTable.

Referenced by LookupBucketFor(), and StringMapImpl().

◆ LookupBucketFor() [1/2]

unsigned llvm::StringMapImpl::LookupBucketFor ( StringRef  Key)
inlineprotected

LookupBucketFor - Look up the bucket that the specified string should end up in.

If it already exists as a key in the map, the Item pointer for the specified bucket will be non-null. Otherwise, it will be null. In either case, the FullHashValue field of the bucket will be set to the hash value of the string.

Definition at line 64 of file StringMap.h.

References hash(), and LookupBucketFor().

Referenced by LookupBucketFor().

◆ LookupBucketFor() [2/2]

unsigned StringMapImpl::LookupBucketFor ( StringRef  Name,
uint32_t  FullHashValue 
)
protected

Overload that explicitly takes precomputed hash(Key).

LookupBucketFor - Look up the bucket that the specified string should end up in.

If it already exists as a key in the map, the Item pointer for the specified bucket will be non-null. Otherwise, it will be null. In either case, the FullHashValue field of the bucket will be set to the hash value of the string.

Definition at line 86 of file StringMap.cpp.

References assert(), getHashTable(), llvm::StringMapEntryBase::getKeyLength(), getTombstoneVal(), hash(), init(), ItemSize, LLVM_LIKELY, Name, NumBuckets, llvm::shouldReverseIterate(), and TheTable.

◆ RehashTable()

unsigned StringMapImpl::RehashTable ( unsigned  BucketNo = 0)
protected

RehashTable - Grow the table, redistributing values into the buckets with the appropriate mod-of-hashtable-size.

Definition at line 218 of file StringMap.cpp.

References createTable(), getHashTable(), getTombstoneVal(), I, LLVM_UNLIKELY, NumBuckets, NumItems, NumTombstones, and TheTable.

◆ RemoveKey() [1/2]

void StringMapImpl::RemoveKey ( StringMapEntryBase V)
protected

RemoveKey - Remove the specified StringMapEntry from the table, but do not delete it.

This aborts if the value isn't in the table.

Definition at line 193 of file StringMap.cpp.

References assert(), ItemSize, and RemoveKey().

Referenced by RemoveKey().

◆ RemoveKey() [2/2]

StringMapEntryBase * StringMapImpl::RemoveKey ( StringRef  Key)
protected

RemoveKey - Remove the StringMapEntry for the specified key from the table, returning it.

If the key is not in the table, this returns null.

Definition at line 202 of file StringMap.cpp.

References assert(), FindKey(), getTombstoneVal(), NumBuckets, NumItems, NumTombstones, and TheTable.

◆ size()

unsigned llvm::StringMapImpl::size ( ) const
inline

◆ swap()

void llvm::StringMapImpl::swap ( StringMapImpl Other)
inline

Definition at line 113 of file StringMap.h.

References NumBuckets, NumItems, NumTombstones, llvm::Other, std::swap(), and TheTable.

Member Data Documentation

◆ ItemSize

unsigned llvm::StringMapImpl::ItemSize
protected

Definition at line 42 of file StringMap.h.

Referenced by FindKey(), LookupBucketFor(), RemoveKey(), and StringMapImpl().

◆ NumBuckets

unsigned llvm::StringMapImpl::NumBuckets = 0
protected

◆ NumItems

unsigned llvm::StringMapImpl::NumItems = 0
protected

Definition at line 40 of file StringMap.h.

Referenced by empty(), getNumItems(), init(), RehashTable(), RemoveKey(), size(), StringMapImpl(), and swap().

◆ NumTombstones

unsigned llvm::StringMapImpl::NumTombstones = 0
protected

Definition at line 41 of file StringMap.h.

Referenced by init(), RehashTable(), RemoveKey(), StringMapImpl(), and swap().

◆ TheTable

StringMapEntryBase** llvm::StringMapImpl::TheTable = nullptr
protected

Definition at line 38 of file StringMap.h.

Referenced by FindKey(), init(), LookupBucketFor(), RehashTable(), RemoveKey(), StringMapImpl(), and swap().

◆ TombstoneIntVal

constexpr uintptr_t llvm::StringMapImpl::TombstoneIntVal
staticconstexpr
Initial value:
=
static_cast<uintptr_t>(-1)
<< PointerLikeTypeTraits<StringMapEntryBase *>::NumLowBitsAvailable

Definition at line 92 of file StringMap.h.

Referenced by getTombstoneVal().


The documentation for this class was generated from the following files: