MachO: Use ilist_half_embedded_sentinel_traits, NFC
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 12 Aug 2016 16:25:04 +0000 (16:25 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 12 Aug 2016 16:25:04 +0000 (16:25 +0000)
Use ilist_half_embedded_sentinel_traits for the list of
lld::mach_o::normalized::TrieEdge, rather than duplicating the code.

llvm-svn: 278523

lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp

index b9633d3..5716556 100644 (file)
@@ -68,19 +68,11 @@ struct TrieEdge : public llvm::ilist_node<TrieEdge> {
 namespace llvm {
   using lld::mach_o::normalized::TrieEdge;
   template <>
-  struct ilist_traits<TrieEdge>
-    : public ilist_default_traits<TrieEdge> {
-  private:
-    mutable ilist_half_node<TrieEdge> Sentinel;
-  public:
-    TrieEdge *createSentinel() const {
-      return static_cast<TrieEdge*>(&Sentinel);
-    }
-    void destroySentinel(TrieEdge *) const {}
+  struct ilist_sentinel_traits<TrieEdge>
+      : public ilist_half_embedded_sentinel_traits<TrieEdge> {};
 
-    TrieEdge *provideInitialHead() const { return createSentinel(); }
-    TrieEdge *ensureHead(TrieEdge*) const { return createSentinel(); }
-    static void noteHead(TrieEdge*, TrieEdge*) {}
+  template <>
+  struct ilist_traits<TrieEdge> : public ilist_default_traits<TrieEdge> {
     void deleteNode(TrieEdge *N) {}
 
   private: