3 #include "hdr_treiber_stack.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>(); }
11 namespace cs = cds::container;
13 namespace defs { namespace {
15 typedef cs::TreiberStack< cds::gc::HP, int
16 ,cds::opt::enable_elimination<true>
19 typedef cs::TreiberStack< cds::gc::HP, int
20 ,cds::opt::enable_elimination<true>
21 , cds::opt::buffer< cds::opt::v::dynamic_buffer<void *> >
24 typedef cs::TreiberStack< cds::gc::HP, int
25 ,cds::opt::enable_elimination<true>
26 , cds::opt::buffer< cds::opt::v::dynamic_buffer<void *> >
27 , cds::opt::stat< cs::treiber_stack::stat<> >
28 > Elimination_HP_stat;
30 typedef cs::TreiberStack< cds::gc::HP, int
31 ,cds::opt::enable_elimination<true>
32 , cds::opt::memory_model<cds::opt::v::relaxed_ordering>
33 > Elimination_HP_relaxed;
35 typedef cs::TreiberStack< cds::gc::HP, int
36 ,cds::opt::enable_elimination<true>
37 ,cds::opt::back_off< cds::backoff::yield>
38 > Elimination_HP_yield;
40 typedef cs::TreiberStack< cds::gc::HP, int
41 , cds::opt::back_off< cds::backoff::yield>
42 ,cds::opt::enable_elimination<true>
43 , cds::opt::memory_model<cds::opt::v::relaxed_ordering>
44 > Elimination_HP_yield_relaxed;
46 typedef cs::TreiberStack< cds::gc::HP, int
47 ,cds::opt::back_off< cds::backoff::pause>
48 ,cds::opt::allocator< std::allocator< bool * > >
49 ,cds::opt::enable_elimination<true>
50 > Elimination_HP_pause_alloc;
52 typedef cs::TreiberStack< cds::gc::HP, int
53 ,cds::opt::back_off< cds::backoff::pause>
54 ,cds::opt::memory_model<cds::opt::v::relaxed_ordering>
55 ,cds::opt::allocator< std::allocator< bool * > >
56 ,cds::opt::enable_elimination<true>
57 > Elimination_HP_pause_alloc_relaxed;
62 TEST_DYN(Elimination_HP_dyn)
63 TEST_DYN(Elimination_HP_stat)
64 TEST(Elimination_HP_yield)
65 TEST(Elimination_HP_pause_alloc)
67 TEST(Elimination_HP_relaxed)
68 TEST(Elimination_HP_yield_relaxed)
69 TEST(Elimination_HP_pause_alloc_relaxed)