]> granicus.if.org Git - llvm/commitdiff
[NFC] Minor cleanups in CodeView TypeTableBuilder.
authorZachary Turner <zturner@google.com>
Tue, 28 Nov 2017 23:57:13 +0000 (23:57 +0000)
committerZachary Turner <zturner@google.com>
Tue, 28 Nov 2017 23:57:13 +0000 (23:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319260 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/DebugInfo/CodeView/TypeTableBuilder.h
lib/DebugInfo/CodeView/TypeTableBuilder.cpp

index ff90f8ca6de15e53117325aad059b62e183cfa10..6b5cb3a9b5f8af412ab3e38293f3cc829ec9923c 100644 (file)
@@ -35,7 +35,7 @@ namespace codeview {
 class ContinuationRecordBuilder;
 class TypeHasher;
 
-class TypeTableBuilder : public TypeVisitorCallbacks {
+class TypeTableBuilder {
 
   BumpPtrAllocator &RecordStorage;
   SimpleTypeSerializer SimpleSerializer;
@@ -52,7 +52,7 @@ class TypeTableBuilder : public TypeVisitorCallbacks {
 
 public:
   explicit TypeTableBuilder(BumpPtrAllocator &Storage, bool Hash = true);
-  ~TypeTableBuilder() override;
+  ~TypeTableBuilder();
 
   void reset();
 
index bce636f38942f4c730c97a8a8b610fcc528b12d4..7b02b175bd6e4d2c835e5407d950a88868e7674f 100644 (file)
@@ -31,9 +31,8 @@ using namespace llvm::codeview;
 namespace {
 
 struct HashedType {
-  uint64_t Hash;
-  const uint8_t *Data;
-  unsigned Size; // FIXME: Go to uint16_t?
+  unsigned Hash;
+  ArrayRef<uint8_t> Data;
   TypeIndex Index;
 };
 
@@ -67,9 +66,9 @@ template <> struct DenseMapInfo<HashedTypePtr> {
     HashedType *RHS = RHSP.Ptr;
     if (RHS == getEmptyKey().Ptr || RHS == getTombstoneKey().Ptr)
       return LHS == RHS;
-    if (LHS->Hash != RHS->Hash || LHS->Size != RHS->Size)
+    if (LHS->Hash != RHS->Hash)
       return false;
-    return ::memcmp(LHS->Data, RHS->Data, LHS->Size) == 0;
+    return LHS->Data == RHS->Data;
   }
 };
 
@@ -111,8 +110,7 @@ TypeIndex TypeHasher::getOrCreateRecord(ArrayRef<uint8_t> &Record,
   assert(Record.size() % 4 == 0 && "Record is not aligned to 4 bytes!");
 
   // Compute the hash up front so we can store it in the key.
-  HashedType TempHashedType = {hash_value(Record), Record.data(),
-                               unsigned(Record.size()), TI};
+  HashedType TempHashedType = {hash_value(Record), Record, TI};
   auto Result = HashedRecords.insert(HashedTypePtr(&TempHashedType));
   HashedType *&Hashed = Result.first->Ptr;
 
@@ -124,12 +122,11 @@ TypeIndex TypeHasher::getOrCreateRecord(ArrayRef<uint8_t> &Record,
 
     uint8_t *Stable = RecordStorage.Allocate<uint8_t>(Record.size());
     memcpy(Stable, Record.data(), Record.size());
-    Hashed->Data = Stable;
-    assert(Hashed->Size == Record.size());
+    Hashed->Data = makeArrayRef(Stable, Record.size());
   }
 
   // Update the caller's copy of Record to point a stable copy.
-  Record = ArrayRef<uint8_t>(Hashed->Data, Hashed->Size);
+  Record = Hashed->Data;
   return Hashed->Index;
 }