Move libcds 1.6.0 from SVN
[libcds.git] / tests / test-hdr / stack / hdr_elimination_stack_hp.cpp
1 //$$CDS-header$$
2
3 #include "hdr_treiber_stack.h"
4 #include <cds/gc/hp.h>
5 #include <cds/container/treiber_stack.h>
6
7 namespace stack {
8 #define TEST(X)     void TestStack::X() { test<defs::X>(); }
9 #define TEST_DYN(X)     void TestStack::X() { test_elimination<defs::X>(); }
10
11     namespace cs = cds::container;
12
13     namespace defs { namespace {
14
15         typedef cs::TreiberStack< cds::gc::HP, int
16             ,cds::opt::enable_elimination<true>
17         > Elimination_HP;
18
19         typedef cs::TreiberStack< cds::gc::HP, int
20             ,cds::opt::enable_elimination<true>
21             , cds::opt::buffer< cds::opt::v::dynamic_buffer<void *> >
22         > Elimination_HP_dyn;
23
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;
29
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;
34
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;
39
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;
45
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;
51
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;
58
59     }}
60
61     TEST(Elimination_HP)
62     TEST_DYN(Elimination_HP_dyn)
63     TEST_DYN(Elimination_HP_stat)
64     TEST(Elimination_HP_yield)
65     TEST(Elimination_HP_pause_alloc)
66
67     TEST(Elimination_HP_relaxed)
68     TEST(Elimination_HP_yield_relaxed)
69     TEST(Elimination_HP_pause_alloc_relaxed)
70 }