[cfe-commits] r62454 - in /cfe/trunk: include/clang/Lex/PTHManager.h lib/Lex/PTHLexer.cpp

Chris Lattner sabre at nondot.org
Sat Jan 17 18:57:21 PST 2009


Author: lattner
Date: Sat Jan 17 20:57:21 2009
New Revision: 62454

URL: http://llvm.org/viewvc/llvm-project?rev=62454&view=rev
Log:
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%)

Modified:
    cfe/trunk/include/clang/Lex/PTHManager.h
    cfe/trunk/lib/Lex/PTHLexer.cpp

Modified: cfe/trunk/include/clang/Lex/PTHManager.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/PTHManager.h?rev=62454&r1=62453&r2=62454&view=diff

==============================================================================
--- cfe/trunk/include/clang/Lex/PTHManager.h (original)
+++ cfe/trunk/include/clang/Lex/PTHManager.h Sat Jan 17 20:57:21 2009
@@ -109,7 +109,13 @@
   
   /// 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();

Modified: cfe/trunk/lib/Lex/PTHLexer.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PTHLexer.cpp?rev=62454&r1=62453&r2=62454&view=diff

==============================================================================
--- cfe/trunk/lib/Lex/PTHLexer.cpp (original)
+++ cfe/trunk/lib/Lex/PTHLexer.cpp Sat Jan 17 20:57:21 2009
@@ -596,15 +596,9 @@
   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 @@
     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;
 }
 





More information about the cfe-commits mailing list