]> granicus.if.org Git - clang/commitdiff
encode the type and decl offsets with 32-bits for entry instead
authorChris Lattner <sabre@nondot.org>
Mon, 27 Apr 2009 18:24:17 +0000 (18:24 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 27 Apr 2009 18:24:17 +0000 (18:24 +0000)
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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70216 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Frontend/PCHReader.h
include/clang/Frontend/PCHWriter.h
lib/Frontend/PCHReader.cpp
lib/Frontend/PCHWriter.cpp

index fed169354eb87d754ce56ae8435e1df50fb5cef1..07f2bb260f6edca04d53d603ebd4738517938ab4 100644 (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.
   ///
index 4d1262223ebf1807d4627bd076efab2e04d869aa..96c6c79de44415e618a0e1e6d4a2eb773799d11a 100644 (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;
index bace23ccc622cffff7d0d00ebae885facfac8ffe..f26cd84f8d5e4a32c3b8957159fae305f822387e 100644 (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;
 
index bb72f78546d170c1e3e7072953e3a01d5d9521b5..82eb5dffe4358dc0ae4d2983b8c7a95eaf7ca31a 100644 (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();