MachO: Use ilist_half_embedded_sentinel_traits, NFC

Use ilist_half_embedded_sentinel_traits for the list of
lld::mach_o::normalized::TrieEdge, rather than duplicating the code.

llvm-svn: 278523
This commit is contained in:
Duncan P. N. Exon Smith 2016-08-12 16:25:04 +00:00
parent c0a1e432c7
commit 623c4c1572
1 changed files with 4 additions and 12 deletions

View 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: