PTH: Use 3 bytes instead of 4 bytes to encode the persistent ID for a token.

- This reduces the PTH size for Cocoa.h by 7%.
- The increases PTH -Eonly speed for Cocoa.h by 0.8%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61377 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Ted Kremenek 2008-12-23 18:41:34 +00:00
Родитель 6b1c9708c8
Коммит 18d9afb815
2 изменённых файлов: 16 добавлений и 10 удалений

Просмотреть файл

@ -47,6 +47,13 @@ static void Emit16(llvm::raw_ostream& Out, uint32_t V) {
assert((V >> 16) == 0);
}
static void Emit24(llvm::raw_ostream& Out, uint32_t V) {
Out << (unsigned char)(V);
Out << (unsigned char)(V >> 8);
Out << (unsigned char)(V >> 16);
assert((V >> 24) == 0);
}
static void EmitBuf(llvm::raw_ostream& Out, const char* I, const char* E) {
for ( ; I != E ; ++I) Out << *I;
}
@ -73,7 +80,7 @@ static void EmitToken(llvm::raw_ostream& Out, const Token& T,
Emit8(Out, T.getKind());
Emit8(Out, T.getFlags());
Emit32(Out, ResolveID(IM, idcount, T.getIdentifierInfo()));
Emit24(Out, ResolveID(IM, idcount, T.getIdentifierInfo()));
Emit32(Out, SMgr.getFullFilePos(T.getLocation()));
Emit16(Out, T.getLength());
}

Просмотреть файл

@ -26,7 +26,7 @@
using namespace clang;
#define DISK_TOKEN_SIZE (2+4+4+2)
#define DISK_TOKEN_SIZE (1+1+3+4+2)
//===----------------------------------------------------------------------===//
// Utility methods for reading from the mmap'ed PTH file.
@ -69,16 +69,15 @@ LexNextToken:
uint32_t perID = ((uint32_t) CurPtrShadow[2])
| (((uint32_t) CurPtrShadow[3]) << 8)
| (((uint32_t) CurPtrShadow[4]) << 16)
| (((uint32_t) CurPtrShadow[5]) << 24);
| (((uint32_t) CurPtrShadow[4]) << 16);
uint32_t FileOffset = ((uint32_t) CurPtrShadow[6])
| (((uint32_t) CurPtrShadow[7]) << 8)
| (((uint32_t) CurPtrShadow[8]) << 16)
| (((uint32_t) CurPtrShadow[9]) << 24);
uint32_t FileOffset = ((uint32_t) CurPtrShadow[5])
| (((uint32_t) CurPtrShadow[6]) << 8)
| (((uint32_t) CurPtrShadow[7]) << 16)
| (((uint32_t) CurPtrShadow[8]) << 24);
uint32_t Len = ((uint32_t) CurPtrShadow[10])
| (((uint32_t) CurPtrShadow[11]) << 8);
uint32_t Len = ((uint32_t) CurPtrShadow[9])
| (((uint32_t) CurPtrShadow[10]) << 8);
CurPtr = (const char*) (CurPtrShadow + DISK_TOKEN_SIZE);