зеркало из https://github.com/microsoft/clang-1.git
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:
Родитель
6b1c9708c8
Коммит
18d9afb815
|
@ -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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче