rearrange GetIdentifierInfo so that the fast path can be partially inlined into PTHLexer::Lex. This speeds up the user time of PTH -Eonly by another 2ms (4.4%)

llvm-svn: 62454
This commit is contained in:
Chris Lattner 2009-01-18 02:57:21 +00:00
parent c57acbc3af
commit 144aacd19e
2 changed files with 11 additions and 11 deletions

View File

@ -109,7 +109,13 @@ class PTHManager : public IdentifierInfoLookup {
/// GetIdentifierInfo - Used to reconstruct IdentifierInfo objects from the
/// PTH file.
IdentifierInfo* GetIdentifierInfo(unsigned);
inline IdentifierInfo* GetIdentifierInfo(unsigned PersistentID) {
// Check if the IdentifierInfo has already been resolved.
if (IdentifierInfo* II = PerIDCache[PersistentID])
return II;
return LazilyCreateIdentifierInfo(PersistentID);
}
IdentifierInfo* LazilyCreateIdentifierInfo(unsigned PersistentID);
public:
~PTHManager();

View File

@ -596,15 +596,9 @@ PTHManager* PTHManager::Create(const std::string& file) {
return new PTHManager(File.take(), FL.take(), IData, PerIDCache,
SortedIdTable, NumIds);
}
IdentifierInfo* PTHManager::GetIdentifierInfo(unsigned persistentID) {
// Check if the IdentifierInfo has already been resolved.
IdentifierInfo* II = PerIDCache[persistentID];
if (II) return II;
IdentifierInfo* PTHManager::LazilyCreateIdentifierInfo(unsigned PersistentID) {
// Look in the PTH file for the string data for the IdentifierInfo object.
const unsigned char* TableEntry = IdDataTable + sizeof(uint32_t)*persistentID;
const unsigned char* TableEntry = IdDataTable + sizeof(uint32_t)*PersistentID;
const unsigned char* IDData =
(const unsigned char*)Buf->getBufferStart() + Read32(TableEntry);
assert(IDData < (const unsigned char*)Buf->getBufferEnd());
@ -614,10 +608,10 @@ IdentifierInfo* PTHManager::GetIdentifierInfo(unsigned persistentID) {
Alloc.Allocate<std::pair<IdentifierInfo,const unsigned char*> >();
Mem->second = IDData;
II = new ((void*) Mem) IdentifierInfo(true);
IdentifierInfo *II = new ((void*) Mem) IdentifierInfo(true);
// Store the new IdentifierInfo in the cache.
PerIDCache[persistentID] = II;
PerIDCache[PersistentID] = II;
return II;
}