Skip to content

Commit 997a7d1

Browse files
authored
Remove unused and deprecated lockfree_tree iterator (LLNL#465)
1 parent decb1fd commit 997a7d1

File tree

1 file changed

+9
-66
lines changed

1 file changed

+9
-66
lines changed

include/caliper/common/util/lockfree-tree.hpp

+9-66
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ namespace util
4343
/// restrictions on the operations that can be
4444
/// performed. Specifically, tree nodes can only be added, but not
4545
/// moved or removed.
46-
47-
template<typename T>
46+
47+
template<typename T>
4848
class LockfreeIntrusiveTree {
4949
public:
5050

@@ -60,7 +60,7 @@ class LockfreeIntrusiveTree {
6060

6161
private:
6262

63-
// --- private data
63+
// --- private data
6464

6565
T* m_me;
6666
LockfreeIntrusiveTree<T>::Node T::*m_node;
@@ -74,7 +74,7 @@ class LockfreeIntrusiveTree {
7474

7575
public:
7676

77-
LockfreeIntrusiveTree(T* me, LockfreeIntrusiveTree<T>::Node T::*nodeptr)
77+
LockfreeIntrusiveTree(T* me, LockfreeIntrusiveTree<T>::Node T::*nodeptr)
7878
: m_me(me), m_node(nodeptr)
7979
{ }
8080

@@ -84,70 +84,13 @@ class LockfreeIntrusiveTree {
8484

8585
void append(T* sub) {
8686
LockfreeIntrusiveTree<T>::Node& n = node(m_me);
87-
88-
node(sub).parent = m_me;
89-
90-
// do "conservative" loop update instead of
91-
// while(!n.head.compare_exchange_weak(node(sub).next, sub,
92-
// std::memory_order_release,
93-
// std::memory_order_relaxed))
94-
// ;
95-
// because that is not safe on some pre-2014 compilers according to
96-
// http://en.cppreference.com/w/cpp/atomic/atomic/compare_exchange
97-
98-
T* old_head = n.head.load(std::memory_order_relaxed);
99-
100-
do {
101-
node(sub).next = old_head;
102-
} while (!n.head.compare_exchange_weak(old_head, sub,
103-
std::memory_order_release,
104-
std::memory_order_relaxed));
105-
}
106-
107-
//
108-
// --- Iterators ---------------------------------------------------------
109-
//
110-
111-
class depthfirst_iterator : public std::iterator<std::input_iterator_tag, T> {
112-
T* m_t;
113-
LockfreeIntrusiveTree<T>::Node T::*m_n;
114-
115-
public:
116-
117-
depthfirst_iterator(T* t, LockfreeIntrusiveTree<T>::Node T::*n)
118-
: m_t(t), m_n(n) { }
11987

120-
depthfirst_iterator& operator++() {
121-
if (node(m_t, m_n).head)
122-
m_t = node(m_t, m_n).head;
123-
else if (node(m_t, m_n).next)
124-
m_t = node(m_t, m_n).next;
125-
else {
126-
// find first parent node with a sibling
127-
while (node(m_t, m_n).parent && !node(m_t, m_n).next)
128-
m_t = node(m_t, m_n).parent;
129-
130-
m_t = node(m_t, m_n).next;
131-
}
132-
133-
return *this;
134-
}
135-
136-
depthfirst_iterator operator++(int) {
137-
depthfirst_iterator tmp(*this); ++(*this); return tmp;
138-
}
139-
140-
bool operator == (const depthfirst_iterator& rhs) { return m_t == rhs.m_t; }
141-
bool operator != (const depthfirst_iterator& rhs) { return m_t != rhs.m_t; }
142-
T& operator * () { return *m_t; }
143-
};
144-
145-
LockfreeIntrusiveTree<T>::depthfirst_iterator begin() {
146-
return depthfirst_iterator(m_me, m_node);
147-
}
88+
node(sub).parent = m_me;
14889

149-
LockfreeIntrusiveTree<T>::depthfirst_iterator end() {
150-
return LockfreeIntrusiveTree<T>::depthfirst_iterator(0, m_node);
90+
while(!n.head.compare_exchange_weak(node(sub).next, sub,
91+
std::memory_order_release,
92+
std::memory_order_relaxed))
93+
;
15194
}
15295
};
15396

0 commit comments

Comments
 (0)