remove michael_list_hrc.h
[libcds.git] / cds / intrusive / michael_list_hrc.h
diff --git a/cds/intrusive/michael_list_hrc.h b/cds/intrusive/michael_list_hrc.h
deleted file mode 100644 (file)
index 29e449d..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-//$$CDS-header$$
-
-#ifndef __CDS_INTRUSIVE_MICHAEL_LIST_HRC_H
-#define __CDS_INTRUSIVE_MICHAEL_LIST_HRC_H
-
-#include <cds/intrusive/impl/michael_list.h>
-#include <cds/gc/hrc.h>
-
-namespace cds { namespace intrusive { namespace michael_list {
-    //@cond
-    // Specialization for HRC GC
-    template <typename Tag>
-    struct node< gc::HRC, Tag>: public gc::HRC::container_node
-    {
-        typedef gc::HRC gc  ;   ///< Garbage collector
-        typedef Tag     tag ;   ///< tag
-
-        typedef cds::details::marked_ptr<node, 1>   marked_ptr         ;   ///< marked pointer
-        typedef typename gc::atomic_marked_ptr< marked_ptr>     atomic_marked_ptr   ;   ///< atomic marked pointer
-        atomic_marked_ptr m_pNext ; ///< pointer to the next node in the stack
-
-        node()
-            : m_pNext( nullptr )
-        {}
-
-    protected:
-        virtual void cleanUp( cds::gc::hrc::ThreadGC * pGC )
-        {
-            assert( pGC );
-            typename gc::GuardArray<2> aGuards( *pGC );
-
-            while ( true ) {
-                marked_ptr pNextMarked( aGuards.protect( 0, m_pNext ));
-                node * pNext = pNextMarked.ptr();
-                if ( pNext && pNext->m_bDeleted.load(atomics::memory_order_acquire) ) {
-                    marked_ptr p = aGuards.protect( 1, pNext->m_pNext );
-                    m_pNext.compare_exchange_strong( pNextMarked, p, atomics::memory_order_acquire, atomics::memory_order_relaxed );
-                    continue;
-                }
-                else {
-                    break;
-                }
-            }
-        }
-
-        virtual void terminate( cds::gc::hrc::ThreadGC * pGC, bool bConcurrent )
-        {
-            if ( bConcurrent ) {
-                marked_ptr pNext = m_pNext.load(atomics::memory_order_acquire);
-                do {} while ( !m_pNext.compare_exchange_weak( pNext, marked_ptr(), atomics::memory_order_release, atomics::memory_order_relaxed ) );
-            }
-            else {
-                m_pNext.store( marked_ptr(), atomics::memory_order_relaxed );
-            }
-        }
-    };
-    //@endcond
-
-
-    //@cond
-    template <typename NODE>
-    struct link_checker_selector< gc::HRC, NODE, opt::never_check_link >
-    {
-        typedef link_checker<NODE>  type;
-    };
-
-    template <typename NODE>
-    struct link_checker_selector< gc::HRC, NODE, opt::debug_check_link >
-    {
-        typedef link_checker<NODE>  type;
-    };
-    //@endcond
-
-}}}   // namespace cds::intrusive::michael_list
-
-#endif // #ifndef __CDS_INTRUSIVE_MICHAEL_LIST_HP_H