9#ifndef LLVM_DEBUGINFO_PDB_NATIVE_SYMBOLCACHE_H
10#define LLVM_DEBUGINFO_PDB_NATIVE_SYMBOLCACHE_H
48 mutable std::vector<std::unique_ptr<NativeRawSymbol>> Cache;
58 FieldListMembersToSymbolId;
62 mutable std::vector<SymIndexId> Compilands;
65 mutable std::vector<std::unique_ptr<NativeSourceFile>> SourceFiles;
77 mutable IMapTy AddressToSymbolId;
86 SymTabOffsetToSymbolId;
88 struct LineTableEntry {
96 std::vector<LineTableEntry> findLineTable(
uint16_t Modi)
const;
101 Cache.push_back(
nullptr);
105 template <
typename ConcreteSymbolT,
typename CVRecordT,
typename... Args>
107 Args &&...ConstructorArgs)
const {
116 TI, std::move(
Record), std::forward<Args>(ConstructorArgs)...);
125 std::unique_ptr<PDBSymbol> findFunctionSymbolByVA(
uint64_t VA);
126 std::unique_ptr<PDBSymbol> findPublicSymbolBySectOffset(
uint32_t Sect,
132 template <
typename ConcreteSymbolT,
typename... Args>
138 auto Result = std::make_unique<ConcreteSymbolT>(
139 Session, Id, std::forward<Args>(ConstructorArgs)...);
140 Result->SymbolId = Id;
143 Cache.push_back(std::move(Result));
151 LLVM_ABI std::unique_ptr<IPDBEnumSymbols>
154 LLVM_ABI std::unique_ptr<IPDBEnumSymbols>
157 LLVM_ABI std::unique_ptr<IPDBEnumSymbols>
162 template <
typename ConcreteSymbolT,
typename... Args>
165 Args &&... ConstructorArgs) {
167 std::pair<codeview::TypeIndex, uint32_t>
Key{FieldListTI, Index};
168 auto Result = FieldListMembersToSymbolId.try_emplace(
Key, SymId);
173 SymId = Result.first->second;
186 LLVM_ABI std::unique_ptr<IPDBEnumLineNumbers>
189 LLVM_ABI std::unique_ptr<PDBSymbolCompiland>
197 template <
typename ConcreteT>
202 LLVM_ABI std::unique_ptr<IPDBSourceFile>
This file defines the DenseMap class.
This file implements a coalescing interval map for small objects.
Implements a dense probed hash-table based set.
typename Sizer::Allocator Allocator
static Error deserializeAs(CVType &CVT, T &Record)
IPDBSourceFile defines an interface used to represent source files whose information are stored in th...
PDBSymbol defines the base of the inheritance hierarchy for concrete symbol types (e....
LLVM_ABI std::unique_ptr< IPDBEnumSymbols > createGlobalsEnumerator(codeview::SymbolKind Kind)
LLVM_ABI SymIndexId getOrCreateInlineSymbol(codeview::InlineSiteSym Sym, uint64_t ParentAddr, uint16_t Modi, uint32_t RecordOffset) const
SymIndexId getOrCreateFieldListMember(codeview::TypeIndex FieldListTI, uint32_t Index, Args &&... ConstructorArgs)
LLVM_ABI std::unique_ptr< IPDBEnumSymbols > createTypeEnumerator(codeview::TypeLeafKind Kind)
LLVM_ABI std::unique_ptr< PDBSymbol > findSymbolByVA(uint64_t VA, PDB_SymType Type)
LLVM_ABI std::unique_ptr< PDBSymbol > getSymbolById(SymIndexId SymbolId) const
LLVM_ABI SymbolCache(NativeSession &Session, DbiStream *Dbi)
LLVM_ABI SymIndexId getOrCreateSourceFile(const codeview::FileChecksumEntry &Checksum) const
LLVM_ABI SymIndexId findSymbolByTypeIndex(codeview::TypeIndex TI) const
LLVM_ABI NativeRawSymbol & getNativeSymbolById(SymIndexId SymbolId) const
ConcreteT & getNativeSymbolById(SymIndexId SymbolId) const
LLVM_ABI std::unique_ptr< PDBSymbolCompiland > getOrCreateCompiland(uint32_t Index)
LLVM_ABI uint32_t getNumCompilands() const
LLVM_ABI std::unique_ptr< IPDBSourceFile > getSourceFileById(SymIndexId FileId) const
LLVM_ABI std::unique_ptr< IPDBEnumLineNumbers > findLineNumbersByVA(uint64_t VA, uint32_t Length) const
SymIndexId createSymbol(Args &&...ConstructorArgs) const
LLVM_ABI SymIndexId getOrCreateGlobalSymbolByOffset(uint32_t Offset)
CVRecord< TypeLeafKind > CVType
TypeLeafKind
Duplicate copy of the above enum, but using the official CV names.
SymbolKind
Duplicate copy of the above enum, but using the official CV names.
ModifierOptions
Equivalent to CV_modifier_t.
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn....
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ATTRIBUTE_VISIBILITY_DEFAULT AnalysisKey InnerAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... >::Key
void consumeError(Error Err)
Consume a Error without doing anything.