aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-04-25 20:26:24 +0000
committerDouglas Gregor <dgregor@apple.com>2009-04-25 20:26:24 +0000
commit5f8e3302242cf94de2f8e46d10167f57fcf747c3 (patch)
tree39d2866bd5c544f2745e8658fb92c557251d0f9f /lib
parent5da8161bdff1c81ab93b55ddd0fd45dc2123ef85 (diff)
Revert my changes that try to avoid creating StringMap entries for
identifiers. They don't yet work, but will inhibit future optimizations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70071 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Frontend/PCHReader.cpp18
-rw-r--r--lib/Frontend/PCHWriter.cpp8
2 files changed, 4 insertions, 22 deletions
diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp
index 918fd93fdd..005436dccf 100644
--- a/lib/Frontend/PCHReader.cpp
+++ b/lib/Frontend/PCHReader.cpp
@@ -1245,8 +1245,8 @@ public:
static std::pair<unsigned, unsigned>
ReadKeyDataLength(const unsigned char*& d) {
using namespace clang::io;
- unsigned DataLen = ReadUnalignedLE16(d);
unsigned KeyLen = ReadUnalignedLE16(d);
+ unsigned DataLen = ReadUnalignedLE16(d);
return std::make_pair(KeyLen, DataLen);
}
@@ -1282,7 +1282,8 @@ public:
// the new IdentifierInfo.
IdentifierInfo *II = KnownII;
if (!II)
- II = &Reader.BuildIdentifierInfoInsidePCH((const unsigned char *)k.first);
+ II = &Reader.getIdentifierTable().CreateIdentifierInfo(
+ k.first, k.first + k.second);
Reader.SetIdentifierInfo(ID, II);
// Set or check the various bits in the IdentifierInfo structure.
@@ -2848,19 +2849,6 @@ IdentifierInfo *PCHReader::DecodeIdentifierInfo(unsigned ID) {
return IdentifiersLoaded[ID - 1];
}
-IdentifierInfo &
-PCHReader::BuildIdentifierInfoInsidePCH(const unsigned char *Str) {
- // Allocate the object.
- std::pair<IdentifierInfo,const unsigned char*> *Mem =
- Alloc.Allocate<std::pair<IdentifierInfo,const unsigned char*> >();
-
- // Build the IdentifierInfo itself.
- Mem->second = Str;
- assert(Str[0] != '\0');
- IdentifierInfo *II = new ((void*) Mem) IdentifierInfo();
- return *II;
-}
-
Selector PCHReader::DecodeSelector(unsigned ID) {
if (ID == 0)
return Selector();
diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp
index 7eb398c166..4ac836419e 100644
--- a/lib/Frontend/PCHWriter.cpp
+++ b/lib/Frontend/PCHWriter.cpp
@@ -2013,6 +2013,7 @@ public:
EmitKeyDataLength(llvm::raw_ostream& Out, const IdentifierInfo* II,
pch::IdentID ID) {
unsigned KeyLen = strlen(II->getName()) + 1;
+ clang::io::Emit16(Out, KeyLen);
unsigned DataLen = 4 + 4; // 4 bytes for token ID, builtin, flags
// 4 bytes for the persistent ID
if (II->hasMacroDefinition() &&
@@ -2022,14 +2023,7 @@ public:
DEnd = IdentifierResolver::end();
D != DEnd; ++D)
DataLen += sizeof(pch::DeclID);
-
- // We emit the data length before the key length, because we want
- // the key length to immediately precede the actual string
- // data. This is so that our identifier length + key layout
- // matches that of the identifier hash table for pretokenized
- // headers.
clang::io::Emit16(Out, DataLen);
- clang::io::Emit16(Out, KeyLen);
return std::make_pair(KeyLen, DataLen);
}