encode the type and decl offsets with 32-bits for entry instead

of 64 bits.  This cuts 400KB off the PCH file for cocoa (7.1 -> 
6.7MB):

Before:

	Record Histogram:
		  Count    # Bits   % Abv  Record Kind
		      1     14296          SOURCE_LOCATION_PRELOADS
		      1   1699598  100.00  SOURCE_LOCATION_OFFSETS
		      1   1870766  100.00  METHOD_POOL
		      1    212988  100.00  SELECTOR_OFFSETS
		      1        88          STATISTICS
		      1       106          SPECIAL_TYPES
		      1  18033788  100.00  IDENTIFIER_TABLE
		      1   1806428  100.00  IDENTIFIER_OFFSET
		      1       170  100.00  TARGET_TRIPLE
		      1       268          LANGUAGE_OPTIONS
		      1   5168252  100.00  DECL_OFFSET
		      1    952700  100.00  TYPE_OFFSET

After:

	Record Histogram:
		  Count    # Bits   % Abv  Record Kind
		      1     14296          SOURCE_LOCATION_PRELOADS
		      1   1699598  100.00  SOURCE_LOCATION_OFFSETS
		      1   1870766  100.00  METHOD_POOL
		      1    212988  100.00  SELECTOR_OFFSETS
		      1        88          STATISTICS
		      1       106          SPECIAL_TYPES
		      1  18033788  100.00  IDENTIFIER_TABLE
		      1   1806428  100.00  IDENTIFIER_OFFSET
		      1       170  100.00  TARGET_TRIPLE
		      1       268          LANGUAGE_OPTIONS
		      1   2584156  100.00  DECL_OFFSET
		      1    476380  100.00  TYPE_OFFSET

llvm-svn: 70216
This commit is contained in:
Chris Lattner 2009-04-27 18:24:17 +00:00
parent 1cf8069c5f
commit eeb0569b5a
4 changed files with 8 additions and 8 deletions

View File

@ -116,7 +116,7 @@ private:
/// \brief Offset of each type within the bitstream, indexed by the
/// type ID, or the representation of a Type*.
const uint64_t *TypeOffsets;
const uint32_t *TypeOffsets;
/// \brief Types that have already been loaded from the PCH file.
///
@ -126,7 +126,7 @@ private:
/// \brief Offset of each declaration within the bitstream, indexed
/// by the declaration ID (-1).
const uint64_t *DeclOffsets;
const uint32_t *DeclOffsets;
/// \brief Declarations that have already been loaded from the PCH file.
///

View File

@ -64,7 +64,7 @@ private:
/// \brief Offset of each declaration in the bitstream, indexed by
/// the declaration's ID.
llvm::SmallVector<uint64_t, 16> DeclOffsets;
std::vector<uint32_t> DeclOffsets;
/// \brief Queue containing the declarations that we still need to
/// emit.
@ -81,7 +81,7 @@ private:
/// \brief Offset of each type in the bitstream, indexed by
/// the type's ID.
llvm::SmallVector<uint64_t, 16> TypeOffsets;
std::vector<uint32_t> TypeOffsets;
/// \brief The type ID that will be assigned to the next new type.
pch::TypeID NextTypeID;

View File

@ -793,7 +793,7 @@ PCHReader::ReadPCHBlock() {
Error("Duplicate TYPE_OFFSET record in PCH file");
return Failure;
}
TypeOffsets = (const uint64_t *)BlobStart;
TypeOffsets = (const uint32_t *)BlobStart;
TypesLoaded.resize(Record[0]);
break;
@ -802,7 +802,7 @@ PCHReader::ReadPCHBlock() {
Error("Duplicate DECL_OFFSET record in PCH file");
return Failure;
}
DeclOffsets = (const uint64_t *)BlobStart;
DeclOffsets = (const uint32_t *)BlobStart;
DeclsLoaded.resize(Record[0]);
break;

View File

@ -1565,7 +1565,7 @@ void PCHWriter::WritePCH(Sema &SemaRef) {
Record.push_back(TypeOffsets.size());
Stream.EmitRecordWithBlob(TypeOffsetAbbrev, Record,
(const char *)&TypeOffsets.front(),
TypeOffsets.size() * sizeof(uint64_t));
TypeOffsets.size() * sizeof(TypeOffsets[0]));
// Write the declaration offsets array
Abbrev = new BitCodeAbbrev();
@ -1578,7 +1578,7 @@ void PCHWriter::WritePCH(Sema &SemaRef) {
Record.push_back(DeclOffsets.size());
Stream.EmitRecordWithBlob(DeclOffsetAbbrev, Record,
(const char *)&DeclOffsets.front(),
DeclOffsets.size() * sizeof(uint64_t));
DeclOffsets.size() * sizeof(DeclOffsets[0]));
// Write the record of special types.
Record.clear();