LLVM  14.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::OnDiskChainedHashTable< Info > Class Template Reference

Provides lookup on an on disk hash table. More...

#include "llvm/Support/OnDiskHashTable.h"

Inheritance diagram for llvm::OnDiskChainedHashTable< Info >:
Inheritance graph
[legend]

Classes

class  iterator
 

Public Types

typedef Info InfoType
 
typedef Info::internal_key_type internal_key_type
 
typedef Info::external_key_type external_key_type
 
typedef Info::data_type data_type
 
typedef Info::hash_value_type hash_value_type
 
typedef Info::offset_type offset_type
 

Public Member Functions

 OnDiskChainedHashTable (offset_type NumBuckets, offset_type NumEntries, const unsigned char *Buckets, const unsigned char *Base, const Info &InfoObj=Info())
 
offset_type getNumBuckets () const
 
offset_type getNumEntries () const
 
const unsigned char * getBase () const
 
const unsigned char * getBuckets () const
 
bool isEmpty () const
 
iterator find (const external_key_type &EKey, Info *InfoPtr=nullptr)
 Look up the stored data for a particular key. More...
 
iterator find_hashed (const internal_key_type &IKey, hash_value_type KeyHash, Info *InfoPtr=nullptr)
 Look up the stored data for a particular key with a known hash. More...
 
iterator end () const
 
InfogetInfoObj ()
 

Static Public Member Functions

static std::pair< offset_type, offset_typereadNumBucketsAndEntries (const unsigned char *&Buckets)
 Read the number of buckets and the number of entries from a hash table produced by OnDiskHashTableGenerator::Emit, and advance the Buckets pointer past them. More...
 
static OnDiskChainedHashTableCreate (const unsigned char *Buckets, const unsigned char *const Base, const Info &InfoObj=Info())
 Create the hash table. More...
 

Detailed Description

template<typename Info>
class llvm::OnDiskChainedHashTable< Info >

Provides lookup on an on disk hash table.

This needs an Info that handles reading values from the hash table's payload and computes the hash for a given key. This should provide the following interface:

class ExampleLookupInfo {
public:
typedef ExampleData data_type;
typedef ExampleInternalKey internal_key_type; // The stored key type.
typedef ExampleKey external_key_type; // The type to pass to find().
typedef uint32_t hash_value_type; // The type the hash function returns.
typedef uint32_t offset_type; // The type for offsets into the table.
/// Compare two keys for equality.
static bool EqualKey(internal_key_type &Key1, internal_key_type &Key2);
/// Calculate the hash for the given key.
/// Translate from the semantic type of a key in the hash table to the
/// type that is actually stored and used for hashing and comparisons.
/// The internal and external types are often the same, in which case this
/// can simply return the passed in value.
static const internal_key_type &GetInternalKey(external_key_type &EKey);
/// Read the key and data length from Buffer, leaving it pointing at the
/// following byte.
static std::pair<offset_type, offset_type>
ReadKeyDataLength(const unsigned char *&Buffer);
/// Read the key from Buffer, given the KeyLen as reported from
/// ReadKeyDataLength.
const internal_key_type &ReadKey(const unsigned char *Buffer,
offset_type KeyLen);
/// Read the data for Key from Buffer, given the DataLen as reported from
/// ReadKeyDataLength.
data_type ReadData(StringRef Key, const unsigned char *Buffer,
offset_type DataLen);
};

Definition at line 274 of file OnDiskHashTable.h.

Member Typedef Documentation

◆ data_type

template<typename Info >
typedef Info::data_type llvm::OnDiskChainedHashTable< Info >::data_type

Definition at line 285 of file OnDiskHashTable.h.

◆ external_key_type

template<typename Info >
typedef Info::external_key_type llvm::OnDiskChainedHashTable< Info >::external_key_type

Definition at line 284 of file OnDiskHashTable.h.

◆ hash_value_type

template<typename Info >
typedef Info::hash_value_type llvm::OnDiskChainedHashTable< Info >::hash_value_type

Definition at line 286 of file OnDiskHashTable.h.

◆ InfoType

template<typename Info >
typedef Info llvm::OnDiskChainedHashTable< Info >::InfoType

Definition at line 282 of file OnDiskHashTable.h.

◆ internal_key_type

template<typename Info >
typedef Info::internal_key_type llvm::OnDiskChainedHashTable< Info >::internal_key_type

Definition at line 283 of file OnDiskHashTable.h.

◆ offset_type

template<typename Info >
typedef Info::offset_type llvm::OnDiskChainedHashTable< Info >::offset_type

Definition at line 287 of file OnDiskHashTable.h.

Constructor & Destructor Documentation

◆ OnDiskChainedHashTable()

template<typename Info >
llvm::OnDiskChainedHashTable< Info >::OnDiskChainedHashTable ( offset_type  NumBuckets,
offset_type  NumEntries,
const unsigned char *  Buckets,
const unsigned char *  Base,
const Info InfoObj = Info() 
)
inline

Definition at line 289 of file OnDiskHashTable.h.

References assert(), and x3.

Member Function Documentation

◆ Create()

template<typename Info >
static OnDiskChainedHashTable* llvm::OnDiskChainedHashTable< Info >::Create ( const unsigned char *  Buckets,
const unsigned char *const  Base,
const Info InfoObj = Info() 
)
inlinestatic

Create the hash table.

Parameters
Bucketsis the beginning of the hash table itself, which follows the payload of entire structure. This is the value returned by OnDiskHashTableGenerator::Emit.
Baseis the point from which all offsets into the structure are based. This is offset 0 in the stream that was used when Emitting the table.

Definition at line 416 of file OnDiskHashTable.h.

References assert(), and llvm::sampleprof::Base.

◆ end()

template<typename Info >
iterator llvm::OnDiskChainedHashTable< Info >::end ( ) const
inline

Definition at line 403 of file OnDiskHashTable.h.

◆ find()

template<typename Info >
iterator llvm::OnDiskChainedHashTable< Info >::find ( const external_key_type EKey,
Info InfoPtr = nullptr 
)
inline

Look up the stored data for a particular key.

Definition at line 343 of file OnDiskHashTable.h.

◆ find_hashed()

template<typename Info >
iterator llvm::OnDiskChainedHashTable< Info >::find_hashed ( const internal_key_type IKey,
hash_value_type  KeyHash,
Info InfoPtr = nullptr 
)
inline

Look up the stored data for a particular key with a known hash.

Definition at line 350 of file OnDiskHashTable.h.

References llvm::sampleprof::Base, i, Offset, and X.

◆ getBase()

template<typename Info >
const unsigned char* llvm::OnDiskChainedHashTable< Info >::getBase ( ) const
inline

Definition at line 316 of file OnDiskHashTable.h.

References llvm::sampleprof::Base.

◆ getBuckets()

template<typename Info >
const unsigned char* llvm::OnDiskChainedHashTable< Info >::getBuckets ( ) const
inline

Definition at line 317 of file OnDiskHashTable.h.

◆ getInfoObj()

template<typename Info >
Info& llvm::OnDiskChainedHashTable< Info >::getInfoObj ( )
inline

Definition at line 405 of file OnDiskHashTable.h.

◆ getNumBuckets()

template<typename Info >
offset_type llvm::OnDiskChainedHashTable< Info >::getNumBuckets ( ) const
inline

Definition at line 314 of file OnDiskHashTable.h.

◆ getNumEntries()

template<typename Info >
offset_type llvm::OnDiskChainedHashTable< Info >::getNumEntries ( ) const
inline

Definition at line 315 of file OnDiskHashTable.h.

◆ isEmpty()

template<typename Info >
bool llvm::OnDiskChainedHashTable< Info >::isEmpty ( ) const
inline

Definition at line 319 of file OnDiskHashTable.h.

◆ readNumBucketsAndEntries()

template<typename Info >
static std::pair<offset_type, offset_type> llvm::OnDiskChainedHashTable< Info >::readNumBucketsAndEntries ( const unsigned char *&  Buckets)
inlinestatic

Read the number of buckets and the number of entries from a hash table produced by OnDiskHashTableGenerator::Emit, and advance the Buckets pointer past them.

Definition at line 303 of file OnDiskHashTable.h.

References assert(), and x3.

Referenced by llvm::OnDiskIterableChainedHashTable< Info >::Create().


The documentation for this class was generated from the following file:
offset_type
InstrProfLookupTrait::offset_type offset_type
Definition: InstrProfReader.cpp:563
llvm::OnDiskChainedHashTable::hash_value_type
Info::hash_value_type hash_value_type
Definition: OnDiskHashTable.h:286
llvm::OnDiskChainedHashTable::external_key_type
Info::external_key_type external_key_type
Definition: OnDiskHashTable.h:284
llvm::IndexedInstrProf::ComputeHash
uint64_t ComputeHash(StringRef K)
Definition: InstrProf.h:995
llvm::OnDiskChainedHashTable::data_type
Info::data_type data_type
Definition: OnDiskHashTable.h:285
llvm::AMDGPU::PALMD::Key
Key
PAL metadata keys.
Definition: AMDGPUMetadata.h:481
llvm::OnDiskChainedHashTable::offset_type
Info::offset_type offset_type
Definition: OnDiskHashTable.h:287
llvm::ArrayRef
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Definition: APInt.h:32
uint32_t
llvm::OnDiskChainedHashTable::internal_key_type
Info::internal_key_type internal_key_type
Definition: OnDiskHashTable.h:283