3 #include "hdr_treiber_stack.h"
4 #include <cds/gc/dhp.h>
5 #include <cds/container/treiber_stack.h>
8 #define TEST(X) void TestStack::X() { test<defs::X>(); }
9 #define TEST_DYN(X) void TestStack::X() { test_elimination<defs::X>(); }
10 namespace cs = cds::container;
12 namespace defs { namespace {
14 typedef cs::TreiberStack< cds::gc::DHP, int
15 ,typename cs::treiber_stack::make_traits<
16 cds::opt::enable_elimination<true>
21 typedef cs::TreiberStack< cds::gc::DHP, int
22 ,typename cs::treiber_stack::make_traits<
23 cds::opt::enable_elimination<true>
24 ,cds::opt::buffer< cds::opt::v::dynamic_buffer<void *> >
26 > Elimination_DHP_dyn;
28 typedef cs::TreiberStack< cds::gc::DHP, int
29 , typename cs::treiber_stack::make_traits<
30 cds::opt::buffer< cds::opt::v::dynamic_buffer<int> >
31 ,cds::opt::stat< cs::treiber_stack::stat<> >
32 ,cds::opt::enable_elimination<true>
34 > Elimination_DHP_stat;
36 typedef cs::TreiberStack< cds::gc::DHP, int
37 , typename cs::treiber_stack::make_traits<
38 cds::opt::memory_model<cds::opt::v::relaxed_ordering>
39 ,cds::opt::enable_elimination<true>
41 > Elimination_DHP_relaxed;
43 typedef cs::TreiberStack< cds::gc::DHP, int
44 , typename cs::treiber_stack::make_traits<
45 cds::opt::back_off< cds::backoff::yield>
46 ,cds::opt::enable_elimination<true>
48 > Elimination_DHP_yield;
50 typedef cs::TreiberStack< cds::gc::DHP, int
51 , typename cs::treiber_stack::make_traits<
52 cds::opt::back_off< cds::backoff::yield>
53 ,cds::opt::memory_model<cds::opt::v::relaxed_ordering>
54 ,cds::opt::enable_elimination<true>
56 > Elimination_DHP_yield_relaxed;
58 typedef cs::TreiberStack< cds::gc::DHP, int
59 , typename cs::treiber_stack::make_traits<
60 cds::opt::back_off< cds::backoff::pause >
61 ,cds::opt::allocator< std::allocator< bool * > >
62 ,cds::opt::enable_elimination<true>
64 > Elimination_DHP_pause_alloc;
66 typedef cs::TreiberStack< cds::gc::DHP, int
67 , typename cs::treiber_stack::make_traits<
68 cds::opt::memory_model<cds::opt::v::relaxed_ordering>
69 ,cds::opt::back_off< cds::backoff::pause>
70 ,cds::opt::allocator< std::allocator< bool * > >
71 ,cds::opt::enable_elimination<true>
73 > Elimination_DHP_pause_alloc_relaxed;
77 TEST_DYN(Elimination_DHP_dyn)
78 TEST_DYN(Elimination_DHP_stat)
79 TEST(Elimination_DHP_yield)
80 TEST(Elimination_DHP_pause_alloc)
82 TEST(Elimination_DHP_relaxed)
83 TEST(Elimination_DHP_yield_relaxed)
84 TEST(Elimination_DHP_pause_alloc_relaxed)