using random_level_generator = cds::intrusive::skip_list::random_level_generator<Type>;
/// Xor-shift random level generator
- typedef cds::intrusive::skip_list::xorshift xorshift;
+ template <unsigned MaxHeight>
+ using xor_shift = cds::intrusive::skip_list::xor_shift<MaxHeight >;
+
+ /// Xor-shift random level generator, max height 32
+ typedef cds::intrusive::skip_list::xorshift32 xorshift32;
+
+ /// Xor-shift random level generator, max height 24
+ typedef cds::intrusive::skip_list::xorshift24 xorshift24;
+
+ /// Xor-shift random level generator, max height 16
+ typedef cds::intrusive::skip_list::xorshift16 xorshift16;
+
+ //@cond
+ // for backward compatibility
+ using cds::intrusive::skip_list::xorshift;
+ //@endcond
/// Turbo-pascal random level generator
- typedef cds::intrusive::skip_list::turbo_pascal turbo_pascal;
+ template <unsigned MaxHeight>
+ using turbo = cds::intrusive::skip_list::turbo<MaxHeight >;
+
+ /// Turbo-pascal random level generator, max height 32
+ typedef cds::intrusive::skip_list::turbo32 turbo32;
+
+ /// Turbo-pascal random level generator, max height 24
+ typedef cds::intrusive::skip_list::turbo24 turbo24;
+
+ /// Turbo-pascal random level generator, max height 16
+ typedef cds::intrusive::skip_list::turbo16 turbo16;
+
+ //@cond
+ // for backward compatibility
+ using cds::intrusive::skip_list::turbo_pascal;
+ //@endcond
/// Skip list internal statistics
template <typename EventCounter = cds::atomicity::event_counter>
See \p skip_list::random_level_generator option setter.
*/
- typedef turbo_pascal random_level_generator;
+ typedef turbo32 random_level_generator;
/// Allocator for skip-list nodes, \p std::allocator interface
typedef CDS_DEFAULT_ALLOCATOR allocator;
- \p opt::item_counter - the type of item counting feature. Default is \p atomicity::empty_item_counter that is no item counting.
- \p opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
or \p opt::v::sequential_consistent (sequentially consisnent memory model).
- - \p skip_list::random_level_generator - random level generator. Can be \p skip_list::xorshift, \p skip_list::turbo_pascal or
- user-provided one.
- Default is \p %skip_list::turbo_pascal.
+ - \p skip_list::random_level_generator - random level generator. Can be \p skip_list::xor_shift, \p skip_list::turbo or
+ user-provided one. Default is \p %skip_list::turbo32.
- \p opt::allocator - allocator for skip-list node. Default is \ref CDS_DEFAULT_ALLOCATOR.
- \p opt::back_off - back-off strategy used. If the option is not specified, the \p cds::backoff::Default is used.
- \p opt::stat - internal statistics. Available types: \p skip_list::stat, \p skip_list::empty_stat (the default)
- opt::item_counter - the type of item counting feature. Default is \ref atomicity::empty_item_counter that is no item counting.
- opt::memory_model - C++ memory ordering model. Can be opt::v::relaxed_ordering (relaxed memory model, the default)
or opt::v::sequential_consistent (sequentially consisnent memory model).
- - skip_list::random_level_generator - random level generator. Can be skip_list::xorshift, skip_list::turbo_pascal or
+ - skip_list::random_level_generator - random level generator. Can be \p skip_list::xor_shift, \p skip_list::turbo or
user-provided one. See skip_list::random_level_generator option description for explanation.
- Default is \p %skip_list::turbo_pascal.
+ Default is \p skip_list::turbo32.
- opt::allocator - allocator for skip-list node. Default is \ref CDS_DEFAULT_ALLOCATOR.
- opt::back_off - back-off strategy used. If the option is not specified, the cds::backoff::Default is used.
- opt::stat - internal statistics. Available types: skip_list::stat, skip_list::empty_stat (the default)
- opt::item_counter - the type of item counting feature. Default is \ref atomicity::empty_item_counter that is no item counting.
- opt::memory_model - C++ memory ordering model. Can be opt::v::relaxed_ordering (relaxed memory model, the default)
or opt::v::sequential_consistent (sequentially consisnent memory model).
- - skip_list::random_level_generator - random level generator. Can be skip_list::xorshift, skip_list::turbo_pascal or
- user-provided one. See skip_list::random_level_generator option description for explanation.
- Default is \p %skip_list::turbo_pascal.
+ - skip_list::random_level_generator - random level generator. Can be \p skip_list::xor_shift, \p skip_list::turbo or
+ user-provided one. See \p skip_list::random_level_generator option description for explanation.
+ Default is \p skip_list::turbo32.
- opt::allocator - allocator for skip-list node. Default is \ref CDS_DEFAULT_ALLOCATOR.
- opt::back_off - back-off strategy used. If the option is not specified, the cds::backoff::Default is used.
- opt::stat - internal statistics. Available types: skip_list::stat, skip_list::empty_stat (the default)
The generator produces a number from range <tt>[0 .. c_nUpperBound)</tt> (upper bound excluded).
\p c_nUpperBound must be no more than 32.
- <tt>random_generator()</tt> - the constructor of generator object initialises the generator instance (its internal state).
- - <tt>unsigned int operator()()</tt> - the main generating function. Returns random level from range 0..31.
+ - <tt>unsigned int operator()()</tt> - the main generating function. Returns random level from range <tt>[0 .. c_nUpperBound - 1]</tt>
+
Stateful generators are supported.
Available \p Type implementations:
- - \p skip_list::xorshift
- - \p skip_list::turbo_pascal
+ - \p skip_list::xor_shift
+ - \p skip_list::turbo
*/
template <typename Type>
struct random_level_generator {
/// Xor-shift random level generator
/**
- The simplest of the generators described in George
- Marsaglia's "Xorshift RNGs" paper. This is not a high-quality
- generator but is acceptable for skip-list.
+ The simplest of the generators described in George Marsaglia's "Xorshift RNGs" paper.
+ This is not a high-quality generator but is acceptable for skip-list.
- The random generator should return numbers from range [0..31].
+ The random generator should return numbers from range [0 .. MaxHeight - 1].
From Doug Lea's ConcurrentSkipListMap.java.
*/
- class xorshift {
+ template <unsigned MaxHeight>
+ class xor_shift {
//@cond
atomics::atomic<unsigned int> m_nSeed;
+
+ static_assert( MaxHeight > 1, "MaxHeight" );
+ static_assert( MaxHeight <= c_nHeightLimit, "MaxHeight is too large" );
+ static unsigned int const c_nBitMask = (1u << ( MaxHeight - 1 )) - 1;
//@endcond
+
public:
/// The upper bound of generator's return value. The generator produces random number in range <tt>[0..c_nUpperBound)</tt>
- static unsigned int const c_nUpperBound = c_nHeightLimit;
+ static unsigned int const c_nUpperBound = MaxHeight;
/// Initializes the generator instance
- xorshift()
+ xor_shift()
{
m_nSeed.store( (unsigned int) cds::OS::Timer::random_seed(), atomics::memory_order_relaxed );
}
x ^= x >> 17;
x ^= x << 5;
m_nSeed.store( x, atomics::memory_order_relaxed );
- unsigned int nLevel = ((x & 0x00000001) != 0) ? 0 : cds::bitop::LSB( (~(x >> 1)) & 0x7FFFFFFF );
+ unsigned int nLevel = ((x & 0x00000001) != 0) ? 0 : cds::bitop::LSB( (~(x >> 1)) & c_nBitMask );
+
assert( nLevel < c_nUpperBound );
return nLevel;
}
};
+ /// Xor-shift random level generator, max height 32
+ typedef xor_shift<c_nHeightLimit> xorshift32;
+
+ //@cond
+ // For backward compatibility
+ typedef xorshift32 xorshift;
+ //@endcond
+
+ /// \ref xor_shift generator, max height 24
+ typedef xor_shift< 24 > xorshift24;
+
+ /// \ref xor_shift generator, max height = 16
+ typedef xor_shift< 16 > xorshift16;
+
/// Turbo-pascal random level generator
/**
This uses a cheap pseudo-random function that was used in Turbo Pascal.
From Doug Lea's ConcurrentSkipListMap.java.
*/
- class turbo_pascal
+ template <unsigned MaxHeight>
+ class turbo
{
//@cond
atomics::atomic<unsigned int> m_nSeed;
+
+ static_assert( MaxHeight > 1, "MaxHeight" );
+ static_assert( MaxHeight <= c_nHeightLimit, "MaxHeight is too large" );
+ static unsigned int const c_nBitMask = (1u << ( MaxHeight - 1 )) - 1;
//@endcond
public:
/// The upper bound of generator's return value. The generator produces random number in range <tt>[0..c_nUpperBound)</tt>
- static unsigned int const c_nUpperBound = c_nHeightLimit;
+ static unsigned int const c_nUpperBound = MaxHeight;
/// Initializes the generator instance
- turbo_pascal()
+ turbo()
{
m_nSeed.store( (unsigned int) cds::OS::Timer::random_seed(), atomics::memory_order_relaxed );
}
*/
unsigned int x = m_nSeed.load( atomics::memory_order_relaxed ) * 134775813 + 1;
m_nSeed.store( x, atomics::memory_order_relaxed );
- unsigned int nLevel = ( x & 0x80000000 ) ? (31 - cds::bitop::MSBnz( (x & 0x7FFFFFFF) | 1 )) : 0;
+ unsigned int nLevel = ( x & 0x80000000 ) ? ( c_nUpperBound - 1 - cds::bitop::MSBnz( (x & c_nBitMask ) | 1 )) : 0;
+
assert( nLevel < c_nUpperBound );
return nLevel;
}
};
+ /// Turbo-Pascal random level generator, max height 32
+ typedef turbo<c_nHeightLimit> turbo32;
+
+ //@cond
+ // For backward compatibility
+ typedef turbo32 turbo_pascal;
+ //@endcond
+
+ /// Turbo-Pascal generator, max height 24
+ typedef turbo< 24 > turbo24;
+
+ /// Turbo-Pascal generator, max height 16
+ typedef turbo< 16 > turbo16;
+
/// \p SkipListSet internal statistics
template <typename EventCounter = cds::atomicity::event_counter>
struct stat {
See \p skip_list::random_level_generator option setter.
*/
- typedef turbo_pascal random_level_generator;
+ typedef turbo32 random_level_generator;
/// Allocator
/**
To enable it use \p atomicity::item_counter
- \p opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
or \p opt::v::sequential_consistent (sequentially consisnent memory model).
- - \p skip_list::random_level_generator - random level generator. Can be \p skip_list::xorshift,
- \p skip_list::turbo_pascal (the default) or
- user-provided one. See \p skip_list::random_level_generator option description for explanation.
+ - \p skip_list::random_level_generator - random level generator. Can be \p skip_list::xor_shift,
+ \p skip_list::turbo32 (the default) or user-provided one.
+ See \p skip_list::random_level_generator option description for explanation.
- \p opt::allocator - although the skip-list is an intrusive container,
an allocator should be provided to maintain variable randomly-calculated height of the node
since the node can contain up to 32 next pointers. The allocator option is used to allocate an array of next pointers
<ClCompile Include="..\..\..\test\unit\map\skiplist_rcu_shb.cpp" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\..\..\test\unit\map\skiplist_hp_inl.h" />
<ClInclude Include="..\..\..\test\unit\map\test_feldman_hashmap.h" />
<ClInclude Include="..\..\..\test\unit\map\test_map.h" />
<ClInclude Include="..\..\..\test\unit\map\test_map_data.h" />
<ClCompile Include="..\..\..\test\unit\set\skiplist_rcu_shb.cpp" />
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="..\..\..\test\unit\set\skiplist_hp_inl.h" />
<ClInclude Include="..\..\..\test\unit\set\test_ordered_set_hp.h" />
<ClInclude Include="..\..\..\test\unit\set\test_set.h" />
<ClInclude Include="..\..\..\test\unit\set\test_set_data.h" />
typedef typename base_class::key_compare compare;
typedef typename base_class::key_less less;
- class traits_SkipListMap_less_pascal: public cc::skip_list::make_traits <
+ class traits_SkipListMap_less_turbo32: public cc::skip_list::make_traits <
co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo32 >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_hp_less_pascal;
- typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_dhp_less_pascal;
- typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_nogc_less_pascal;
- typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_gpi_less_pascal;
- typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_gpb_less_pascal;
- typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_gpt_less_pascal;
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_turbo32 > SkipListMap_hp_less_turbo32;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_turbo32 > SkipListMap_dhp_less_turbo32;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_turbo32 > SkipListMap_nogc_less_turbo32;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_turbo32 > SkipListMap_rcu_gpi_less_turbo32;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_turbo32 > SkipListMap_rcu_gpb_less_turbo32;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_turbo32 > SkipListMap_rcu_gpt_less_turbo32;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_shb_less_pascal;
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_turbo32 > SkipListMap_rcu_shb_less_turbo32;
#endif
- class traits_SkipListMap_less_pascal_seqcst: public cc::skip_list::make_traits <
+ class traits_SkipListMap_less_turbo24: public cc::skip_list::make_traits <
+ co::less< less >
+ , cc::skip_list::random_level_generator< cc::skip_list::turbo24 >
+ , co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_turbo24 > SkipListMap_hp_less_turbo24;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_turbo24 > SkipListMap_dhp_less_turbo24;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_turbo24 > SkipListMap_nogc_less_turbo24;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_turbo24 > SkipListMap_rcu_gpi_less_turbo24;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_turbo24 > SkipListMap_rcu_gpb_less_turbo24;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_turbo24 > SkipListMap_rcu_gpt_less_turbo24;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_turbo24 > SkipListMap_rcu_shb_less_turbo24;
+#endif
+
+ class traits_SkipListMap_less_turbo16: public cc::skip_list::make_traits <
+ co::less< less >
+ , cc::skip_list::random_level_generator< cc::skip_list::turbo16 >
+ , co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_turbo16 > SkipListMap_hp_less_turbo16;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_turbo16 > SkipListMap_dhp_less_turbo16;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_turbo16 > SkipListMap_nogc_less_turbo16;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_turbo16 > SkipListMap_rcu_gpi_less_turbo16;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_turbo16 > SkipListMap_rcu_gpb_less_turbo16;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_turbo16 > SkipListMap_rcu_gpt_less_turbo16;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_turbo16 > SkipListMap_rcu_shb_less_turbo16;
+#endif
+
+ class traits_SkipListMap_less_turbo32_seqcst: public cc::skip_list::make_traits <
co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo32 >
,co::memory_model< co::v::sequential_consistent >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_hp_less_pascal_seqcst;
- typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_dhp_less_pascal_seqcst;
- typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_nogc_less_pascal_seqcst;
- typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_gpi_less_pascal_seqcst;
- typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_gpb_less_pascal_seqcst;
- typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_gpt_less_pascal_seqcst;
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_turbo32_seqcst > SkipListMap_hp_less_turbo32_seqcst;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_turbo32_seqcst > SkipListMap_dhp_less_turbo32_seqcst;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_turbo32_seqcst > SkipListMap_nogc_less_turbo32_seqcst;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_turbo32_seqcst > SkipListMap_rcu_gpi_less_turbo32_seqcst;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_turbo32_seqcst > SkipListMap_rcu_gpb_less_turbo32_seqcst;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_turbo32_seqcst > SkipListMap_rcu_gpt_less_turbo32_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_shb_less_pascal_seqcst;
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_turbo32_seqcst > SkipListMap_rcu_shb_less_turbo32_seqcst;
#endif
- class traits_SkipListMap_less_pascal_stat: public cc::skip_list::make_traits <
+ class traits_SkipListMap_less_turbo32_stat: public cc::skip_list::make_traits <
co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo32 >
,co::stat< cc::skip_list::stat<> >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_hp_less_pascal_stat;
- typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_dhp_less_pascal_stat;
- typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_nogc_less_pascal_stat;
- typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_gpi_less_pascal_stat;
- typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_gpb_less_pascal_stat;
- typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_gpt_less_pascal_stat;
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_turbo32_stat > SkipListMap_hp_less_turbo32_stat;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_turbo32_stat > SkipListMap_dhp_less_turbo32_stat;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_turbo32_stat > SkipListMap_nogc_less_turbo32_stat;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_turbo32_stat > SkipListMap_rcu_gpi_less_turbo32_stat;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_turbo32_stat > SkipListMap_rcu_gpb_less_turbo32_stat;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_turbo32_stat > SkipListMap_rcu_gpt_less_turbo32_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_turbo32_stat > SkipListMap_rcu_shb_less_turbo32_stat;
+#endif
+
+ class traits_SkipListMap_less_turbo24_stat: public cc::skip_list::make_traits <
+ co::less< less >
+ , cc::skip_list::random_level_generator< cc::skip_list::turbo24 >
+ , co::stat< cc::skip_list::stat<> >
+ , co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_turbo24_stat > SkipListMap_hp_less_turbo24_stat;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_turbo24_stat > SkipListMap_dhp_less_turbo24_stat;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_turbo24_stat > SkipListMap_nogc_less_turbo24_stat;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_turbo24_stat > SkipListMap_rcu_gpi_less_turbo24_stat;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_turbo24_stat > SkipListMap_rcu_gpb_less_turbo24_stat;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_turbo24_stat > SkipListMap_rcu_gpt_less_turbo24_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_turbo24_stat > SkipListMap_rcu_shb_less_turbo24_stat;
+#endif
+
+ class traits_SkipListMap_less_turbo16_stat: public cc::skip_list::make_traits <
+ co::less< less >
+ , cc::skip_list::random_level_generator< cc::skip_list::turbo16 >
+ , co::stat< cc::skip_list::stat<> >
+ , co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_turbo16_stat > SkipListMap_hp_less_turbo16_stat;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_turbo16_stat > SkipListMap_dhp_less_turbo16_stat;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_turbo16_stat > SkipListMap_nogc_less_turbo16_stat;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_turbo16_stat > SkipListMap_rcu_gpi_less_turbo16_stat;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_turbo16_stat > SkipListMap_rcu_gpb_less_turbo16_stat;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_turbo16_stat > SkipListMap_rcu_gpt_less_turbo16_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_shb_less_pascal_stat;
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_turbo16_stat > SkipListMap_rcu_shb_less_turbo16_stat;
#endif
- class traits_SkipListMap_cmp_pascal: public cc::skip_list::make_traits <
+ class traits_SkipListMap_cmp_turbo32: public cc::skip_list::make_traits <
co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo32 >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_hp_cmp_pascal;
- typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_dhp_cmp_pascal;
- typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_nogc_cmp_pascal;
- typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_gpi_cmp_pascal;
- typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_gpb_cmp_pascal;
- typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_gpt_cmp_pascal;
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_turbo32 > SkipListMap_hp_cmp_turbo32;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_turbo32 > SkipListMap_dhp_cmp_turbo32;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_cmp_turbo32 > SkipListMap_nogc_cmp_turbo32;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_turbo32 > SkipListMap_rcu_gpi_cmp_turbo32;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_turbo32 > SkipListMap_rcu_gpb_cmp_turbo32;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_turbo32 > SkipListMap_rcu_gpt_cmp_turbo32;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_shb_cmp_pascal;
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_turbo32 > SkipListMap_rcu_shb_cmp_turbo32;
#endif
- class traits_SkipListMap_cmp_pascal_stat: public cc::skip_list::make_traits <
+ class traits_SkipListMap_cmp_turbo32_stat: public cc::skip_list::make_traits <
co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo32 >
,co::stat< cc::skip_list::stat<> >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_hp_cmp_pascal_stat;
- typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_dhp_cmp_pascal_stat;
- typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_nogc_cmp_pascal_stat;
- typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_gpi_cmp_pascal_stat;
- typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_gpb_cmp_pascal_stat;
- typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_gpt_cmp_pascal_stat;
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_turbo32_stat > SkipListMap_hp_cmp_turbo32_stat;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_turbo32_stat > SkipListMap_dhp_cmp_turbo32_stat;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_cmp_turbo32_stat > SkipListMap_nogc_cmp_turbo32_stat;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_turbo32_stat > SkipListMap_rcu_gpi_cmp_turbo32_stat;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_turbo32_stat > SkipListMap_rcu_gpb_cmp_turbo32_stat;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_turbo32_stat > SkipListMap_rcu_gpt_cmp_turbo32_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_shb_cmp_pascal_stat;
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_turbo32_stat > SkipListMap_rcu_shb_cmp_turbo32_stat;
#endif
- class traits_SkipListMap_less_xorshift: public cc::skip_list::make_traits <
+ class traits_SkipListMap_less_xorshift32: public cc::skip_list::make_traits <
co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
+ ,cc::skip_list::random_level_generator< cc::skip_list::xorshift32 >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_hp_less_xorshift;
- typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_dhp_less_xorshift;
- typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_nogc_less_xorshift;
- typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_gpi_less_xorshift;
- typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_gpb_less_xorshift;
- typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_gpt_less_xorshift;
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_xorshift32 > SkipListMap_hp_less_xorshift32;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_xorshift32 > SkipListMap_dhp_less_xorshift32;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_xorshift32 > SkipListMap_nogc_less_xorshift32;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_xorshift32 > SkipListMap_rcu_gpi_less_xorshift32;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_xorshift32 > SkipListMap_rcu_gpb_less_xorshift32;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift32 > SkipListMap_rcu_gpt_less_xorshift32;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_shb_less_xorshift;
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift32 > SkipListMap_rcu_shb_less_xorshift32;
#endif
- class traits_SkipListMap_less_xorshift_stat: public cc::skip_list::make_traits <
+ class traits_SkipListMap_less_xorshift24: public cc::skip_list::make_traits <
+ co::less< less >
+ , cc::skip_list::random_level_generator< cc::skip_list::xorshift24 >
+ , co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_xorshift24 > SkipListMap_hp_less_xorshift24;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_xorshift24 > SkipListMap_dhp_less_xorshift24;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_xorshift24 > SkipListMap_nogc_less_xorshift24;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_xorshift24 > SkipListMap_rcu_gpi_less_xorshift24;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_xorshift24 > SkipListMap_rcu_gpb_less_xorshift24;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift24 > SkipListMap_rcu_gpt_less_xorshift24;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift24 > SkipListMap_rcu_shb_less_xorshift24;
+#endif
+
+ class traits_SkipListMap_less_xorshift16: public cc::skip_list::make_traits <
+ co::less< less >
+ , cc::skip_list::random_level_generator< cc::skip_list::xorshift16 >
+ , co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_xorshift16 > SkipListMap_hp_less_xorshift16;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_xorshift16 > SkipListMap_dhp_less_xorshift16;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_xorshift16 > SkipListMap_nogc_less_xorshift16;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_xorshift16 > SkipListMap_rcu_gpi_less_xorshift16;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_xorshift16 > SkipListMap_rcu_gpb_less_xorshift16;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift16 > SkipListMap_rcu_gpt_less_xorshift16;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift16 > SkipListMap_rcu_shb_less_xorshift16;
+#endif
+
+ class traits_SkipListMap_less_xorshift32_stat: public cc::skip_list::make_traits <
co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
+ ,cc::skip_list::random_level_generator< cc::skip_list::xorshift32 >
,co::stat< cc::skip_list::stat<> >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_hp_less_xorshift_stat;
- typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_dhp_less_xorshift_stat;
- typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_nogc_less_xorshift_stat;
- typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_gpi_less_xorshift_stat;
- typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_gpb_less_xorshift_stat;
- typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_gpt_less_xorshift_stat;
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_xorshift32_stat > SkipListMap_hp_less_xorshift32_stat;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_xorshift32_stat > SkipListMap_dhp_less_xorshift32_stat;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_xorshift32_stat > SkipListMap_nogc_less_xorshift32_stat;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_xorshift32_stat > SkipListMap_rcu_gpi_less_xorshift32_stat;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_xorshift32_stat > SkipListMap_rcu_gpb_less_xorshift32_stat;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift32_stat > SkipListMap_rcu_gpt_less_xorshift32_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift32_stat > SkipListMap_rcu_shb_less_xorshift32_stat;
+#endif
+
+ class traits_SkipListMap_less_xorshift24_stat: public cc::skip_list::make_traits <
+ co::less< less >
+ , cc::skip_list::random_level_generator< cc::skip_list::xorshift24 >
+ , co::stat< cc::skip_list::stat<> >
+ , co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_xorshift24_stat > SkipListMap_hp_less_xorshift24_stat;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_xorshift24_stat > SkipListMap_dhp_less_xorshift24_stat;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_xorshift24_stat > SkipListMap_nogc_less_xorshift24_stat;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_xorshift24_stat > SkipListMap_rcu_gpi_less_xorshift24_stat;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_xorshift24_stat > SkipListMap_rcu_gpb_less_xorshift24_stat;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift24_stat > SkipListMap_rcu_gpt_less_xorshift24_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift24_stat > SkipListMap_rcu_shb_less_xorshift24_stat;
+#endif
+
+ class traits_SkipListMap_less_xorshift16_stat: public cc::skip_list::make_traits <
+ co::less< less >
+ , cc::skip_list::random_level_generator< cc::skip_list::xorshift16 >
+ , co::stat< cc::skip_list::stat<> >
+ , co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_less_xorshift16_stat > SkipListMap_hp_less_xorshift16_stat;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_less_xorshift16_stat > SkipListMap_dhp_less_xorshift16_stat;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_less_xorshift16_stat > SkipListMap_nogc_less_xorshift16_stat;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_less_xorshift16_stat > SkipListMap_rcu_gpi_less_xorshift16_stat;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_less_xorshift16_stat > SkipListMap_rcu_gpb_less_xorshift16_stat;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift16_stat > SkipListMap_rcu_gpt_less_xorshift16_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_shb_less_xorshift_stat;
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift16_stat > SkipListMap_rcu_shb_less_xorshift16_stat;
#endif
- class traits_SkipListMap_cmp_xorshift: public cc::skip_list::make_traits <
+ class traits_SkipListMap_cmp_xorshift32: public cc::skip_list::make_traits <
co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
+ ,cc::skip_list::random_level_generator< cc::skip_list::xorshift32 >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_hp_cmp_xorshift;
- typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_dhp_cmp_xorshift;
- typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_nogc_cmp_xorshift;
- typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_gpi_cmp_xorshift;
- typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_gpb_cmp_xorshift;
- typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_gpt_cmp_xorshift;
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_xorshift32 > SkipListMap_hp_cmp_xorshift32;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_xorshift32 > SkipListMap_dhp_cmp_xorshift32;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_cmp_xorshift32 > SkipListMap_nogc_cmp_xorshift32;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_xorshift32 > SkipListMap_rcu_gpi_cmp_xorshift32;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_xorshift32 > SkipListMap_rcu_gpb_cmp_xorshift32;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_xorshift32 > SkipListMap_rcu_gpt_cmp_xorshift32;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_shb_cmp_xorshift;
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_xorshift32 > SkipListMap_rcu_shb_cmp_xorshift32;
#endif
- class traits_SkipListMap_cmp_xorshift_stat: public cc::skip_list::make_traits <
+ class traits_SkipListMap_cmp_xorshift32_stat: public cc::skip_list::make_traits <
co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
+ ,cc::skip_list::random_level_generator< cc::skip_list::xorshift32 >
,co::stat< cc::skip_list::stat<> >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_hp_cmp_xorshift_stat;
- typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_dhp_cmp_xorshift_stat;
- typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_nogc_cmp_xorshift_stat;
- typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_gpi_cmp_xorshift_stat;
- typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_gpb_cmp_xorshift_stat;
- typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_gpt_cmp_xorshift_stat;
+ typedef SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_cmp_xorshift32_stat > SkipListMap_hp_cmp_xorshift32_stat;
+ typedef SkipListMap< cds::gc::DHP, Key, Value, traits_SkipListMap_cmp_xorshift32_stat > SkipListMap_dhp_cmp_xorshift32_stat;
+ typedef SkipListMap< cds::gc::nogc, Key, Value, traits_SkipListMap_cmp_xorshift32_stat > SkipListMap_nogc_cmp_xorshift32_stat;
+ typedef SkipListMap< rcu_gpi, Key, Value, traits_SkipListMap_cmp_xorshift32_stat > SkipListMap_rcu_gpi_cmp_xorshift32_stat;
+ typedef SkipListMap< rcu_gpb, Key, Value, traits_SkipListMap_cmp_xorshift32_stat > SkipListMap_rcu_gpb_cmp_xorshift32_stat;
+ typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_xorshift32_stat > SkipListMap_rcu_gpt_cmp_xorshift32_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_shb_cmp_xorshift_stat;
+ typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_xorshift32_stat > SkipListMap_rcu_shb_cmp_xorshift32_stat;
#endif
};
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 1
# define CDSSTRESS_SkipListMap_SHRCU_2( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_pascal_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_turbo32_seqcst, key_type, value_type ) \
#else
# define CDSSTRESS_SkipListMap_SHRCU_2( fixture, test_case, key_type, value_type )
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL == 1
# define CDSSTRESS_SkipListMap_SHRCU_1( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_xorshift, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_xorshift32, key_type, value_type ) \
#else
# define CDSSTRESS_SkipListMap_SHRCU_1( fixture, test_case, key_type, value_type )
# define CDSSTRESS_SkipListMap_SHRCU( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_xorshift_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_xorshift32_stat, key_type, value_type ) \
CDSSTRESS_SkipListMap_SHRCU_1( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListMap_SHRCU_2( fixture, test_case, key_type, value_type ) \
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 1
# define CDSSTRESS_SkipListMap_HP_2( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_pascal_seqcst, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_pascal_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_turbo32_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_turbo32_seqcst, key_type, value_type ) \
# define CDSSTRESS_SkipListMap_RCU_2( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_pascal_seqcst, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_pascal_seqcst, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_pascal_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_turbo32_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_turbo32_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_turbo32_seqcst, key_type, value_type ) \
# define CDSSTRESS_SkipListMap_2( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListMap_HP_2( fixture, test_case, key_type, value_type ) \
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL == 1
# define CDSSTRESS_SkipListMap_HP_1( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_xorshift_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_xorshift32_stat, key_type, value_type ) \
# define CDSSTRESS_SkipListMap_RCU_1( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_xorshift_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_xorshift32_stat, key_type, value_type ) \
CDSSTRESS_SkipListMap_SHRCU( fixture, test_case, key_type, value_type )
# define CDSSTRESS_SkipListMap_1( fixture, test_case, key_type, value_type ) \
#define CDSSTRESS_SkipListMap_HP( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_xorshift_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_turbo24, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_turbo16, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_turbo24_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_turbo16_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_xorshift24, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_less_xorshift16, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_xorshift24_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_less_xorshift16_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_dhp_cmp_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_hp_cmp_xorshift32_stat, key_type, value_type ) \
CDSSTRESS_SkipListMap_HP_1( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListMap_HP_2( fixture, test_case, key_type, value_type ) \
#define CDSSTRESS_SkipListMap_RCU( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_xorshift_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_turbo24_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_turbo16_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_xorshift24_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_less_xorshift16_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpb_cmp_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpi_cmp_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_gpt_cmp_xorshift32_stat, key_type, value_type ) \
CDSSTRESS_SkipListMap_RCU_1( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListMap_RCU_2( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListMap_RCU( fixture, test_case, key_type, value_type ) \
#define CDSSTRESS_SkipListMap_nogc( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_pascal_seqcst, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_cmp_xorshift_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_turbo24, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_turbo16, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_turbo32_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_turbo24_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_turbo16_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_xorshift24, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_xorshift16, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_xorshift24_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_less_xorshift16_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_cmp_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_nogc_cmp_xorshift32_stat, key_type, value_type ) \
#endif // ifndef CDSUNIT_MAP_TYPE_SKIP_LIST_H
CDSSTRESS_PriorityQueue( pqueue_pop, EllenBinTree_RCU_shb_min_stat )
#endif
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_HP_max )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_HP_max_stat )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_HP_min )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_HP_min_stat )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_DHP_max )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_DHP_max_stat )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_DHP_min )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_DHP_min_stat )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_gpi_max )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_gpi_min )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_gpb_max )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_gpb_min )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_gpt_max )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_gpt_min )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_HP_max )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_HP_max_stat )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_HP_min )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_HP_min_stat )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_DHP_max )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_DHP_max_stat )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_DHP_min )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_DHP_min_stat )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_RCU_gpi_max )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_RCU_gpi_min )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_RCU_gpb_max )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_RCU_gpb_min )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_RCU_gpt_max )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_RCU_gpt_min )
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_shb_max )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_shb_min )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_RCU_shb_max )
+ CDSSTRESS_PriorityQueue( pqueue_pop, SkipList32_RCU_shb_min )
#endif
CDSSTRESS_PriorityQueue( pqueue_pop, StdPQueue_vector_spin )
// Priority queue based on SkipListSet
struct traits_SkipList_max :
public cc::skip_list::make_traits <
- cc::opt::less < std::less<Value> >
+ cc::opt::less < std::less<Value> >
> ::type
{};
- typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_max > SkipList_HP_max;
- typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_max > SkipList_DHP_max;
- typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_max > SkipList_RCU_gpi_max;
- typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_max > SkipList_RCU_gpb_max;
- typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_max > SkipList_RCU_gpt_max;
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_max > SkipList32_HP_max;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_max > SkipList32_DHP_max;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_max > SkipList32_RCU_gpi_max;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_max > SkipList32_RCU_gpb_max;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_max > SkipList32_RCU_gpt_max;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_max > SkipList_RCU_shb_max;
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_max > SkipList32_RCU_shb_max;
+#endif
+
+ struct traits_SkipList24_max: public traits_SkipList_max
+ {
+ typedef cc::skip_list::turbo24 random_level_generator;
+ };
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList24_max > SkipList24_HP_max;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList24_max > SkipList24_DHP_max;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList24_max > SkipList24_RCU_gpi_max;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList24_max > SkipList24_RCU_gpb_max;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList24_max > SkipList24_RCU_gpt_max;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList24_max > SkipList24_RCU_shb_max;
+#endif
+
+ struct traits_SkipList16_max: public traits_SkipList_max
+ {
+ typedef cc::skip_list::turbo16 random_level_generator;
+ };
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList16_max > SkipList16_HP_max;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList16_max > SkipList16_DHP_max;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList16_max > SkipList16_RCU_gpi_max;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList16_max > SkipList16_RCU_gpb_max;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList16_max > SkipList16_RCU_gpt_max;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList16_max > SkipList16_RCU_shb_max;
#endif
struct traits_SkipList_max_stat :
,co::stat< cc::skip_list::stat<> >
>::type
{};
- typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_max_stat > SkipList_HP_max_stat;
- typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_max_stat > SkipList_DHP_max_stat;
- typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_max_stat > SkipList_RCU_gpi_max_stat;
- typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_max_stat > SkipList_RCU_gpb_max_stat;
- typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_max_stat > SkipList_RCU_gpt_max_stat;
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_max_stat > SkipList32_HP_max_stat;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_max_stat > SkipList32_DHP_max_stat;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_max_stat > SkipList32_RCU_gpi_max_stat;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_max_stat > SkipList32_RCU_gpb_max_stat;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_max_stat > SkipList32_RCU_gpt_max_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_max_stat > SkipList32_RCU_shb_max_stat;
+#endif
+
+ struct traits_SkipList24_max_stat: public traits_SkipList_max_stat
+ {
+ typedef cc::skip_list::turbo24 random_level_generator;
+ };
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList24_max_stat > SkipList24_HP_max_stat;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList24_max_stat > SkipList24_DHP_max_stat;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList24_max_stat > SkipList24_RCU_gpi_max_stat;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList24_max_stat > SkipList24_RCU_gpb_max_stat;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList24_max_stat > SkipList24_RCU_gpt_max_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList24_max_stat > SkipList24_RCU_shb_max_stat;
+#endif
+
+ struct traits_SkipList16_max_stat: public traits_SkipList_max_stat
+ {
+ typedef cc::skip_list::turbo16 random_level_generator;
+ };
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList16_max_stat > SkipList16_HP_max_stat;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList16_max_stat > SkipList16_DHP_max_stat;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList16_max_stat > SkipList16_RCU_gpi_max_stat;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList16_max_stat > SkipList16_RCU_gpb_max_stat;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList16_max_stat > SkipList16_RCU_gpt_max_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_max_stat > SkipList_RCU_shb_max_stat;
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList16_max_stat > SkipList16_RCU_shb_max_stat;
#endif
struct traits_SkipList_min :
cc::opt::less< std::greater<Value> >
>::type
{};
- typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_min, false > SkipList_HP_min;
- typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_min, false > SkipList_DHP_min;
- typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_min, false > SkipList_RCU_gpi_min;
- typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_min, false > SkipList_RCU_gpb_min;
- typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_min, false > SkipList_RCU_gpt_min;
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_min, false > SkipList32_HP_min;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_min, false > SkipList32_DHP_min;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_min, false > SkipList32_RCU_gpi_min;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_min, false > SkipList32_RCU_gpb_min;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_min, false > SkipList32_RCU_gpt_min;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_min, false > SkipList_RCU_shb_min;
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_min, false > SkipList32_RCU_shb_min;
+#endif
+
+ struct traits_SkipList24_min: public traits_SkipList_min
+ {
+ typedef cc::skip_list::turbo24 random_level_generator;
+ };
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList24_min > SkipList24_HP_min;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList24_min > SkipList24_DHP_min;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList24_min > SkipList24_RCU_gpi_min;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList24_min > SkipList24_RCU_gpb_min;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList24_min > SkipList24_RCU_gpt_min;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList24_min > SkipList24_RCU_shb_min;
+#endif
+
+ struct traits_SkipList16_min: public traits_SkipList_min
+ {
+ typedef cc::skip_list::turbo16 random_level_generator;
+ };
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList16_min > SkipList16_HP_min;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList16_min > SkipList16_DHP_min;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList16_min > SkipList16_RCU_gpi_min;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList16_min > SkipList16_RCU_gpb_min;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList16_min > SkipList16_RCU_gpt_min;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList16_min > SkipList16_RCU_shb_min;
#endif
struct traits_SkipList_min_stat :
,co::stat< cc::skip_list::stat<> >
>::type
{};
- typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_min_stat, false > SkipList_HP_min_stat;
- typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_min_stat, false > SkipList_DHP_min_stat;
- typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_min_stat, false > SkipList_RCU_gpi_min_stat;
- typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_min_stat, false > SkipList_RCU_gpb_min_stat;
- typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_min_stat, false > SkipList_RCU_gpt_min_stat;
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_min_stat, false > SkipList32_HP_min_stat;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_min_stat, false > SkipList32_DHP_min_stat;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_min_stat, false > SkipList32_RCU_gpi_min_stat;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_min_stat, false > SkipList32_RCU_gpb_min_stat;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_min_stat, false > SkipList32_RCU_gpt_min_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_min_stat, false > SkipList32_RCU_shb_min_stat;
+#endif
+
+ struct traits_SkipList24_min_stat: public traits_SkipList_min_stat
+ {
+ typedef cc::skip_list::turbo24 random_level_generator;
+ };
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList24_min_stat > SkipList24_HP_min_stat;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList24_min_stat > SkipList24_DHP_min_stat;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList24_min_stat > SkipList24_RCU_gpi_min_stat;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList24_min_stat > SkipList24_RCU_gpb_min_stat;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList24_min_stat > SkipList24_RCU_gpt_min_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList24_min_stat > SkipList24_RCU_shb_min_stat;
+#endif
+
+ struct traits_SkipList16_min_stat: public traits_SkipList_min_stat
+ {
+ typedef cc::skip_list::turbo16 random_level_generator;
+ };
+ typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList16_min_stat > SkipList16_HP_min_stat;
+ typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList16_min_stat > SkipList16_DHP_min_stat;
+ typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList16_min_stat > SkipList16_RCU_gpi_min_stat;
+ typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList16_min_stat > SkipList16_RCU_gpb_min_stat;
+ typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList16_min_stat > SkipList16_RCU_gpt_min_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_min_stat, false > SkipList_RCU_shb_min_stat;
+ typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList16_min_stat > SkipList16_RCU_shb_min_stat;
#endif
CDSSTRESS_PriorityQueue( pqueue_push, EllenBinTree_RCU_shb_min_stat )
#endif
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_HP_max )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_HP_max_stat )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_HP_min )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_HP_min_stat )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_DHP_max )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_DHP_max_stat )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_DHP_min )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_DHP_min_stat )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_gpi_max )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_gpi_min )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_gpb_max )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_gpb_min )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_gpt_max )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_gpt_min )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_HP_max )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_HP_max_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_HP_min )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_HP_min_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_DHP_max )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_DHP_max_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_DHP_min )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_DHP_min_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_RCU_gpi_max )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_RCU_gpi_min )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_RCU_gpb_max )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_RCU_gpb_min )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_RCU_gpt_max )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_RCU_gpt_min )
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_shb_max )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_shb_min )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_RCU_shb_max )
+ CDSSTRESS_PriorityQueue( pqueue_push, SkipList32_RCU_shb_min )
#endif
CDSSTRESS_PriorityQueue( pqueue_push, StdPQueue_vector_spin )
CDSSTRESS_PriorityQueue( pqueue_push_pop, EllenBinTree_RCU_shb_min_stat )
#endif
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_HP_max )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_HP_max_stat )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_HP_min )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_HP_min_stat )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_DHP_max )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_DHP_max_stat )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_DHP_min )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_DHP_min_stat )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_gpi_max )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_gpi_min )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_gpb_max )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_gpb_min )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_gpt_max )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_gpt_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_HP_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList24_HP_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList16_HP_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_HP_max_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList24_HP_max_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList16_HP_max_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_HP_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList24_HP_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList16_HP_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_HP_min_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList24_HP_min_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList16_HP_min_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_DHP_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList24_DHP_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList16_DHP_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_DHP_max_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList24_DHP_max_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList16_DHP_max_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_DHP_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList24_DHP_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList16_DHP_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_DHP_min_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList24_DHP_min_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList16_DHP_min_stat )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_RCU_gpi_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_RCU_gpi_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_RCU_gpb_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList24_RCU_gpb_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList16_RCU_gpb_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_RCU_gpb_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList24_RCU_gpb_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList16_RCU_gpb_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_RCU_gpt_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_RCU_gpt_min )
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_shb_max )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_shb_min )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_RCU_shb_max )
+ CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList32_RCU_shb_min )
#endif
CDSSTRESS_PriorityQueue( pqueue_push_pop, StdPQueue_vector_spin )
typedef typename base_class::less less;
typedef typename base_class::hash hash;
- class traits_SkipListSet_less_pascal: public cc::skip_list::make_traits <
+ class traits_SkipListSet_less_turbo32: public cc::skip_list::make_traits <
co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo32 >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_pascal > SkipListSet_hp_less_pascal;
- typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_pascal > SkipListSet_dhp_less_pascal;
- typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_pascal > SkipListSet_rcu_gpi_less_pascal;
- typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_pascal > SkipListSet_rcu_gpb_less_pascal;
- typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_pascal > SkipListSet_rcu_gpt_less_pascal;
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_turbo32 > SkipListSet_hp_less_turbo32;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_turbo32 > SkipListSet_dhp_less_turbo32;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_turbo32 > SkipListSet_rcu_gpi_less_turbo32;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_turbo32 > SkipListSet_rcu_gpb_less_turbo32;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_turbo32 > SkipListSet_rcu_gpt_less_turbo32;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_pascal > SkipListSet_rcu_shb_less_pascal;
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_turbo32 > SkipListSet_rcu_shb_less_turbo32;
#endif
- class traits_SkipListSet_less_pascal_seqcst: public cc::skip_list::make_traits <
+ class traits_SkipListSet_less_turbo24: public cc::skip_list::make_traits <
co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo24 >
+ ,co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_turbo24 > SkipListSet_hp_less_turbo24;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_turbo24 > SkipListSet_dhp_less_turbo24;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_turbo24 > SkipListSet_rcu_gpi_less_turbo24;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_turbo24 > SkipListSet_rcu_gpb_less_turbo24;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_turbo24 > SkipListSet_rcu_gpt_less_turbo24;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_turbo24 > SkipListSet_rcu_shb_less_turbo24;
+#endif
+
+ class traits_SkipListSet_less_turbo16: public cc::skip_list::make_traits <
+ co::less< less >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo16 >
+ ,co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_turbo16 > SkipListSet_hp_less_turbo16;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_turbo16 > SkipListSet_dhp_less_turbo16;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_turbo16 > SkipListSet_rcu_gpi_less_turbo16;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_turbo16 > SkipListSet_rcu_gpb_less_turbo16;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_turbo16 > SkipListSet_rcu_gpt_less_turbo16;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_turbo16 > SkipListSet_rcu_shb_less_turbo16;
+#endif
+
+ class traits_SkipListSet_less_turbo32_seqcst: public cc::skip_list::make_traits <
+ co::less< less >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo32 >
,co::memory_model< co::v::sequential_consistent >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_pascal_seqcst > SkipListSet_hp_less_pascal_seqcst;
- typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_pascal_seqcst > SkipListSet_dhp_less_pascal_seqcst;
- typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_pascal_seqcst > SkipListSet_rcu_gpi_less_pascal_seqcst;
- typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_pascal_seqcst > SkipListSet_rcu_gpb_less_pascal_seqcst;
- typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_pascal_seqcst > SkipListSet_rcu_gpt_less_pascal_seqcst;
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_turbo32_seqcst > SkipListSet_hp_less_turbo32_seqcst;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_turbo32_seqcst > SkipListSet_dhp_less_turbo32_seqcst;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_turbo32_seqcst > SkipListSet_rcu_gpi_less_turbo32_seqcst;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_turbo32_seqcst > SkipListSet_rcu_gpb_less_turbo32_seqcst;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_turbo32_seqcst > SkipListSet_rcu_gpt_less_turbo32_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_pascal_seqcst > SkipListSet_rcu_shb_less_pascal_seqcst;
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_turbo32_seqcst > SkipListSet_rcu_shb_less_turbo32_seqcst;
#endif
- class traits_SkipListSet_less_pascal_stat: public cc::skip_list::make_traits <
+ class traits_SkipListSet_less_turbo32_stat: public cc::skip_list::make_traits <
co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo32 >
,co::stat< cc::skip_list::stat<> >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_pascal_stat > SkipListSet_hp_less_pascal_stat;
- typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_pascal_stat > SkipListSet_dhp_less_pascal_stat;
- typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_pascal_stat > SkipListSet_rcu_gpi_less_pascal_stat;
- typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_pascal_stat > SkipListSet_rcu_gpb_less_pascal_stat;
- typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_pascal_stat > SkipListSet_rcu_gpt_less_pascal_stat;
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_turbo32_stat > SkipListSet_hp_less_turbo32_stat;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_turbo32_stat > SkipListSet_dhp_less_turbo32_stat;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_turbo32_stat > SkipListSet_rcu_gpi_less_turbo32_stat;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_turbo32_stat > SkipListSet_rcu_gpb_less_turbo32_stat;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_turbo32_stat > SkipListSet_rcu_gpt_less_turbo32_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_pascal_stat > SkipListSet_rcu_shb_less_pascal_stat;
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_turbo32_stat > SkipListSet_rcu_shb_less_turbo32_stat;
#endif
- class traits_SkipListSet_cmp_pascal: public cc::skip_list::make_traits <
+ class traits_SkipListSet_less_turbo24_stat: public cc::skip_list::make_traits <
+ co::less< less >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo24 >
+ ,co::stat< cc::skip_list::stat<> >
+ ,co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_turbo24_stat > SkipListSet_hp_less_turbo24_stat;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_turbo24_stat > SkipListSet_dhp_less_turbo24_stat;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_turbo24_stat > SkipListSet_rcu_gpi_less_turbo24_stat;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_turbo24_stat > SkipListSet_rcu_gpb_less_turbo24_stat;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_turbo24_stat > SkipListSet_rcu_gpt_less_turbo24_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_turbo24_stat > SkipListSet_rcu_shb_less_turbo24_stat;
+#endif
+
+ class traits_SkipListSet_less_turbo16_stat: public cc::skip_list::make_traits <
+ co::less< less >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo16 >
+ ,co::stat< cc::skip_list::stat<> >
+ ,co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_turbo16_stat > SkipListSet_hp_less_turbo16_stat;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_turbo16_stat > SkipListSet_dhp_less_turbo16_stat;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_turbo16_stat > SkipListSet_rcu_gpi_less_turbo16_stat;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_turbo16_stat > SkipListSet_rcu_gpb_less_turbo16_stat;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_turbo16_stat > SkipListSet_rcu_gpt_less_turbo16_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_turbo16_stat > SkipListSet_rcu_shb_less_turbo16_stat;
+#endif
+
+ class traits_SkipListSet_cmp_turbo32: public cc::skip_list::make_traits <
co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo32 >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_cmp_pascal > SkipListSet_hp_cmp_pascal;
- typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_cmp_pascal > SkipListSet_dhp_cmp_pascal;
- typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_cmp_pascal > SkipListSet_rcu_gpi_cmp_pascal;
- typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_cmp_pascal > SkipListSet_rcu_gpb_cmp_pascal;
- typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_pascal > SkipListSet_rcu_gpt_cmp_pascal;
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_cmp_turbo32 > SkipListSet_hp_cmp_turbo32;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_cmp_turbo32 > SkipListSet_dhp_cmp_turbo32;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_cmp_turbo32 > SkipListSet_rcu_gpi_cmp_turbo32;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_cmp_turbo32 > SkipListSet_rcu_gpb_cmp_turbo32;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_turbo32 > SkipListSet_rcu_gpt_cmp_turbo32;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_pascal > SkipListSet_rcu_shb_cmp_pascal;
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_turbo32 > SkipListSet_rcu_shb_cmp_turbo32;
#endif
- class traits_SkipListSet_cmp_pascal_stat: public cc::skip_list::make_traits <
+ class traits_SkipListSet_cmp_turbo32_stat: public cc::skip_list::make_traits <
co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
+ ,cc::skip_list::random_level_generator< cc::skip_list::turbo32 >
,co::stat< cc::skip_list::stat<> >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_cmp_pascal_stat > SkipListSet_hp_cmp_pascal_stat;
- typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_cmp_pascal_stat > SkipListSet_dhp_cmp_pascal_stat;
- typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_cmp_pascal_stat > SkipListSet_rcu_gpi_cmp_pascal_stat;
- typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_cmp_pascal_stat > SkipListSet_rcu_gpb_cmp_pascal_stat;
- typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_pascal_stat > SkipListSet_rcu_gpt_cmp_pascal_stat;
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_cmp_turbo32_stat > SkipListSet_hp_cmp_turbo32_stat;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_cmp_turbo32_stat > SkipListSet_dhp_cmp_turbo32_stat;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_cmp_turbo32_stat > SkipListSet_rcu_gpi_cmp_turbo32_stat;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_cmp_turbo32_stat > SkipListSet_rcu_gpb_cmp_turbo32_stat;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_turbo32_stat > SkipListSet_rcu_gpt_cmp_turbo32_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_turbo32_stat > SkipListSet_rcu_shb_cmp_turbo32_stat;
+#endif
+
+ class traits_SkipListSet_less_xorshift32: public cc::skip_list::make_traits <
+ co::less< less >
+ ,cc::skip_list::random_level_generator< cc::skip_list::xorshift32 >
+ ,co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_xorshift32 > SkipListSet_hp_less_xorshift32;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_xorshift32 > SkipListSet_dhp_less_xorshift32;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_xorshift32 > SkipListSet_rcu_gpi_less_xorshift32;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_xorshift32 > SkipListSet_rcu_gpb_less_xorshift32;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_xorshift32 > SkipListSet_rcu_gpt_less_xorshift32;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_pascal_stat > SkipListSet_rcu_shb_cmp_pascal_stat;
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_xorshift32 > SkipListSet_rcu_shb_less_xorshift32;
#endif
- class traits_SkipListSet_less_xorshift: public cc::skip_list::make_traits <
+ class traits_SkipListSet_less_xorshift24: public cc::skip_list::make_traits <
co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
+ ,cc::skip_list::random_level_generator< cc::skip_list::xorshift24 >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_xorshift > SkipListSet_hp_less_xorshift;
- typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_xorshift > SkipListSet_dhp_less_xorshift;
- typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_xorshift > SkipListSet_rcu_gpi_less_xorshift;
- typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_xorshift > SkipListSet_rcu_gpb_less_xorshift;
- typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_xorshift > SkipListSet_rcu_gpt_less_xorshift;
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_xorshift24 > SkipListSet_hp_less_xorshift24;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_xorshift24 > SkipListSet_dhp_less_xorshift24;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_xorshift24 > SkipListSet_rcu_gpi_less_xorshift24;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_xorshift24 > SkipListSet_rcu_gpb_less_xorshift24;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_xorshift24 > SkipListSet_rcu_gpt_less_xorshift24;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_xorshift > SkipListSet_rcu_shb_less_xorshift;
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_xorshift24 > SkipListSet_rcu_shb_less_xorshift24;
#endif
- class traits_SkipListSet_less_xorshift_stat: public cc::skip_list::make_traits <
+ class traits_SkipListSet_less_xorshift16: public cc::skip_list::make_traits <
co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
+ , cc::skip_list::random_level_generator< cc::skip_list::xorshift16 >
+ , co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_xorshift16 > SkipListSet_hp_less_xorshift16;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_xorshift16 > SkipListSet_dhp_less_xorshift16;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_xorshift16 > SkipListSet_rcu_gpi_less_xorshift16;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_xorshift16 > SkipListSet_rcu_gpb_less_xorshift16;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_xorshift16 > SkipListSet_rcu_gpt_less_xorshift16;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_xorshift16 > SkipListSet_rcu_shb_less_xorshift16;
+#endif
+
+ class traits_SkipListSet_less_xorshift32_stat: public cc::skip_list::make_traits <
+ co::less< less >
+ ,cc::skip_list::random_level_generator< cc::skip_list::xorshift32 >
,co::stat< cc::skip_list::stat<> >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_xorshift_stat > SkipListSet_hp_less_xorshift_stat;
- typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_xorshift_stat > SkipListSet_dhp_less_xorshift_stat;
- typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_xorshift_stat > SkipListSet_rcu_gpi_less_xorshift_stat;
- typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_xorshift_stat > SkipListSet_rcu_gpb_less_xorshift_stat;
- typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_xorshift_stat > SkipListSet_rcu_gpt_less_xorshift_stat;
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_xorshift32_stat > SkipListSet_hp_less_xorshift32_stat;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_xorshift32_stat > SkipListSet_dhp_less_xorshift32_stat;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_xorshift32_stat > SkipListSet_rcu_gpi_less_xorshift32_stat;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_xorshift32_stat > SkipListSet_rcu_gpb_less_xorshift32_stat;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_xorshift32_stat > SkipListSet_rcu_gpt_less_xorshift32_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_xorshift32_stat > SkipListSet_rcu_shb_less_xorshift32_stat;
+#endif
+
+ class traits_SkipListSet_less_xorshift24_stat: public cc::skip_list::make_traits <
+ co::less< less >
+ , cc::skip_list::random_level_generator< cc::skip_list::xorshift24 >
+ , co::stat< cc::skip_list::stat<> >
+ , co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_xorshift24_stat > SkipListSet_hp_less_xorshift24_stat;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_xorshift24_stat > SkipListSet_dhp_less_xorshift24_stat;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_xorshift24_stat > SkipListSet_rcu_gpi_less_xorshift24_stat;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_xorshift24_stat > SkipListSet_rcu_gpb_less_xorshift24_stat;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_xorshift24_stat > SkipListSet_rcu_gpt_less_xorshift24_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_xorshift24_stat > SkipListSet_rcu_shb_less_xorshift24_stat;
+#endif
+
+ class traits_SkipListSet_less_xorshift16_stat: public cc::skip_list::make_traits <
+ co::less< less >
+ , cc::skip_list::random_level_generator< cc::skip_list::xorshift16 >
+ , co::stat< cc::skip_list::stat<> >
+ , co::item_counter< cds::atomicity::item_counter >
+ >::type
+ {};
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_less_xorshift16_stat > SkipListSet_hp_less_xorshift16_stat;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_less_xorshift16_stat > SkipListSet_dhp_less_xorshift16_stat;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_less_xorshift16_stat > SkipListSet_rcu_gpi_less_xorshift16_stat;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_less_xorshift16_stat > SkipListSet_rcu_gpb_less_xorshift16_stat;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_xorshift16_stat > SkipListSet_rcu_gpt_less_xorshift16_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_xorshift_stat > SkipListSet_rcu_shb_less_xorshift_stat;
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_xorshift16_stat > SkipListSet_rcu_shb_less_xorshift16_stat;
#endif
- class traits_SkipListSet_cmp_xorshift: public cc::skip_list::make_traits <
+ class traits_SkipListSet_cmp_xorshift32: public cc::skip_list::make_traits <
co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
+ ,cc::skip_list::random_level_generator< cc::skip_list::xorshift32 >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_cmp_xorshift > SkipListSet_hp_cmp_xorshift;
- typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_cmp_xorshift > SkipListSet_dhp_cmp_xorshift;
- typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_cmp_xorshift > SkipListSet_rcu_gpi_cmp_xorshift;
- typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_cmp_xorshift > SkipListSet_rcu_gpb_cmp_xorshift;
- typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_xorshift > SkipListSet_rcu_gpt_cmp_xorshift;
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_cmp_xorshift32 > SkipListSet_hp_cmp_xorshift32;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_cmp_xorshift32 > SkipListSet_dhp_cmp_xorshift32;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_cmp_xorshift32 > SkipListSet_rcu_gpi_cmp_xorshift32;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_cmp_xorshift32 > SkipListSet_rcu_gpb_cmp_xorshift32;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_xorshift32 > SkipListSet_rcu_gpt_cmp_xorshift32;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_xorshift > SkipListSet_rcu_shb_cmp_xorshift;
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_xorshift32 > SkipListSet_rcu_shb_cmp_xorshift32;
#endif
- class traits_SkipListSet_cmp_xorshift_stat: public cc::skip_list::make_traits <
+ class traits_SkipListSet_cmp_xorshift32_stat: public cc::skip_list::make_traits <
co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
+ ,cc::skip_list::random_level_generator< cc::skip_list::xorshift32 >
,co::stat< cc::skip_list::stat<> >
,co::item_counter< cds::atomicity::item_counter >
>::type
{};
- typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_cmp_xorshift_stat > SkipListSet_hp_cmp_xorshift_stat;
- typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_cmp_xorshift_stat > SkipListSet_dhp_cmp_xorshift_stat;
- typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_cmp_xorshift_stat > SkipListSet_rcu_gpi_cmp_xorshift_stat;
- typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_cmp_xorshift_stat > SkipListSet_rcu_gpb_cmp_xorshift_stat;
- typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_xorshift_stat > SkipListSet_rcu_gpt_cmp_xorshift_stat;
+ typedef SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_cmp_xorshift32_stat > SkipListSet_hp_cmp_xorshift32_stat;
+ typedef SkipListSet< cds::gc::DHP, key_val, traits_SkipListSet_cmp_xorshift32_stat > SkipListSet_dhp_cmp_xorshift32_stat;
+ typedef SkipListSet< rcu_gpi, key_val, traits_SkipListSet_cmp_xorshift32_stat > SkipListSet_rcu_gpi_cmp_xorshift32_stat;
+ typedef SkipListSet< rcu_gpb, key_val, traits_SkipListSet_cmp_xorshift32_stat > SkipListSet_rcu_gpb_cmp_xorshift32_stat;
+ typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_xorshift32_stat > SkipListSet_rcu_gpt_cmp_xorshift32_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_xorshift_stat > SkipListSet_rcu_shb_cmp_xorshift_stat;
+ typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_xorshift32_stat > SkipListSet_rcu_shb_cmp_xorshift32_stat;
#endif
};
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 1
# define CDSSTRESS_SkipListSet_SHRCU_2( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_pascal_seqcst, key_type, value_type) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_turbo32_seqcst, key_type, value_type) \
#else
# define CDSSTRESS_SkipListSet_SHRCU_2( fixture, test_case, key_type, value_type )
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL == 1
# define CDSSTRESS_SkipListSet_SHRCU_1( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_pascal_stat, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_pascal, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_xorshift_stat, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_xorshift_stat, key_type, value_type) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_turbo32_stat, key_type, value_type) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_turbo32, key_type, value_type) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_xorshift32_stat, key_type, value_type) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_xorshift32_stat, key_type, value_type) \
#else
# define CDSSTRESS_SkipListSet_SHRCU_1( fixture, test_case, key_type, value_type )
# define CDSSTRESS_SkipListSet_SHRCU( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_pascal, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_pascal_stat, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_xorshift, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_xorshift, key_type, value_type) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_turbo32, key_type, value_type) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_turbo32_stat, key_type, value_type) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_xorshift32, key_type, value_type) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_xorshift32, key_type, value_type) \
CDSSTRESS_SkipListSet_SHRCU_1( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListSet_SHRCU_2( fixture, test_case, key_type, value_type ) \
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 1
# define CDSSTRESS_SkipListSet_HP_2( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_pascal_seqcst, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_pascal_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_turbo32_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_turbo32_seqcst, key_type, value_type ) \
# define CDSSTRESS_SkipListSet_RCU_2( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_less_pascal_seqcst, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_pascal_seqcst, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_less_pascal_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_less_turbo32_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_turbo32_seqcst, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_less_turbo32_seqcst, key_type, value_type ) \
#else
# define CDSSTRESS_SkipListSet_HP_2( fixture, test_case, key_type, value_type )
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL == 1
# define CDSSTRESS_SkipListSet_HP_1( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_cmp_xorshift_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_cmp_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_cmp_xorshift32_stat, key_type, value_type ) \
# define CDSSTRESS_SkipListSet_RCU_1( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_cmp_xorshift_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_cmp_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_cmp_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_cmp_xorshift32_stat, key_type, value_type ) \
CDSSTRESS_SkipListSet_SHRCU( fixture, test_case, key_type, value_type ) \
#else
#define CDSSTRESS_SkipListSet_HP( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_cmp_xorshift_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_turbo24, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_turbo16, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_turbo24_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_turbo16_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_xorshift24, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_less_xorshift16, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_xorshift24_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_less_xorshift16_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_dhp_cmp_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_hp_cmp_xorshift32_stat, key_type, value_type ) \
CDSSTRESS_SkipListSet_HP_1( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListSet_HP_2( fixture, test_case, key_type, value_type ) \
#define CDSSTRESS_SkipListSet_RCU( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_cmp_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_cmp_xorshift_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_less_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_turbo24_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_turbo16_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_cmp_turbo32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_cmp_turbo32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_less_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_xorshift24_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_less_xorshift16_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpb_cmp_xorshift32, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpi_cmp_xorshift32_stat, key_type, value_type ) \
+ CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_gpt_cmp_xorshift32_stat, key_type, value_type ) \
CDSSTRESS_SkipListSet_RCU_1( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListSet_RCU_2( fixture, test_case, key_type, value_type ) \
test( s );
}
- TEST_F( IntrusiveSkipListSet_DHP, base_xorshift )
+ TEST_F( IntrusiveSkipListSet_DHP, base_xorshift32 )
{
struct traits : public ci::skip_list::traits
{
typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
typedef mock_disposer disposer;
typedef cmp<base_item_type> compare;
- typedef ci::skip_list::xorshift random_level_generator;
+ typedef ci::skip_list::xorshift32 random_level_generator;
};
typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
test( s );
}
+ TEST_F( IntrusiveSkipListSet_DHP, base_xorshift24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::xorshift24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_DHP, base_xorshift16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::xorshift16 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_DHP, base_turbo32 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::turbo32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_DHP, base_turbo24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::turbo24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_DHP, base_turbo16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::turbo16 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
TEST_F( IntrusiveSkipListSet_DHP, member_cmp )
{
test( s );
}
- TEST_F( IntrusiveSkipListSet_DHP, member_xorshift )
+ TEST_F( IntrusiveSkipListSet_DHP, member_xorshift32 )
{
struct traits : public ci::skip_list::traits
{
typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
typedef mock_disposer disposer;
typedef cmp<member_item_type> compare;
- typedef ci::skip_list::xorshift random_level_generator;
+ typedef ci::skip_list::xorshift32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_DHP, member_xorshift24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::xorshift24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_DHP, member_xorshift16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::xorshift16 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_DHP, member_turbo32 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::turbo32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_DHP, member_turbo24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::turbo24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_DHP, member_turbo16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::turbo16 random_level_generator;
};
typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
test( s );
}
- TEST_F( IntrusiveSkipListSet_HP, base_xorshift )
+ TEST_F( IntrusiveSkipListSet_HP, base_xorshift32 )
{
struct traits : public ci::skip_list::traits
{
typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
typedef mock_disposer disposer;
typedef cmp<base_item_type> compare;
- typedef ci::skip_list::xorshift random_level_generator;
+ typedef ci::skip_list::xorshift32 random_level_generator;
};
typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
test( s );
}
+ TEST_F( IntrusiveSkipListSet_HP, base_xorshift24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::xorshift24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_HP, base_xorshift16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::xorshift16 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_HP, base_turbo32 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::turbo32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_HP, base_turbo24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::turbo24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_HP, base_turbo16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::turbo16 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
TEST_F( IntrusiveSkipListSet_HP, member_cmp )
{
test( s );
}
- TEST_F( IntrusiveSkipListSet_HP, member_xorshift )
+ TEST_F( IntrusiveSkipListSet_HP, member_xorshift32 )
{
struct traits : public ci::skip_list::traits
{
typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
typedef mock_disposer disposer;
typedef cmp<member_item_type> compare;
- typedef ci::skip_list::xorshift random_level_generator;
+ typedef ci::skip_list::xorshift32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_HP, member_xorshift24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::xorshift24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_HP, member_xorshift16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::xorshift16 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_HP, member_turbo32 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::turbo32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_HP, member_turbo24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::turbo24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_HP, member_turbo16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::turbo16 random_level_generator;
};
typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
test( s );
}
- TEST_F( IntrusiveSkipListSet_NoGC, base_xorshift )
+ TEST_F( IntrusiveSkipListSet_NoGC, base_xorshift32 )
{
struct traits : public ci::skip_list::traits
{
typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
typedef mock_disposer disposer;
typedef cmp<base_item_type> compare;
- typedef ci::skip_list::xorshift random_level_generator;
+ typedef ci::skip_list::xorshift32 random_level_generator;
};
typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
test( s );
}
+ TEST_F( IntrusiveSkipListSet_NoGC, base_xorshift24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::xorshift24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_NoGC, base_xorshift16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::xorshift16 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_NoGC, base_turbo32 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::turbo32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_NoGC, base_turbo24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::turbo24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_NoGC, base_turbo16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<base_item_type> compare;
+ typedef ci::skip_list::turbo16 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, base_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
TEST_F( IntrusiveSkipListSet_NoGC, member_cmp )
{
test( s );
}
- TEST_F( IntrusiveSkipListSet_NoGC, member_xorshift )
+ TEST_F( IntrusiveSkipListSet_NoGC, member_xorshift32 )
{
struct traits : public ci::skip_list::traits
{
typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
typedef mock_disposer disposer;
typedef cmp<member_item_type> compare;
- typedef ci::skip_list::xorshift random_level_generator;
+ typedef ci::skip_list::xorshift32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_NoGC, member_xorshift24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::xorshift24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_NoGC, member_xorshift16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::xorshift16 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_NoGC, member_turbo32 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::turbo32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_NoGC, member_turbo24 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::turbo24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( IntrusiveSkipListSet_NoGC, member_turbo16 )
+ {
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< gc_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp<member_item_type> compare;
+ typedef ci::skip_list::turbo16 random_level_generator;
};
typedef ci::SkipListSet< gc_type, member_item_type, traits > set_type;
this->test( s );
}
-TYPED_TEST_P( IntrusiveSkipListSet, base_xorshift )
+TYPED_TEST_P( IntrusiveSkipListSet, base_xorshift32 )
{
typedef typename TestFixture::rcu_type rcu_type;
typedef typename TestFixture::base_item_type base_item_type;
typedef ci::skip_list::base_hook< ci::opt::gc< rcu_type >> hook;
typedef mock_disposer disposer;
typedef cmp compare;
- typedef ci::skip_list::xorshift random_level_generator;
+ typedef ci::skip_list::xorshift32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< rcu_type, base_item_type, traits > set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( IntrusiveSkipListSet, base_xorshift24 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::base_item_type base_item_type;
+ typedef typename TestFixture::mock_disposer mock_disposer;
+ typedef typename TestFixture::template cmp<base_item_type> cmp;
+
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< rcu_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp compare;
+ typedef ci::skip_list::xorshift24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< rcu_type, base_item_type, traits > set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( IntrusiveSkipListSet, base_xorshift16 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::base_item_type base_item_type;
+ typedef typename TestFixture::mock_disposer mock_disposer;
+ typedef typename TestFixture::template cmp<base_item_type> cmp;
+
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< rcu_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp compare;
+ typedef ci::skip_list::xorshift16 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< rcu_type, base_item_type, traits > set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( IntrusiveSkipListSet, base_turbo32 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::base_item_type base_item_type;
+ typedef typename TestFixture::mock_disposer mock_disposer;
+ typedef typename TestFixture::template cmp<base_item_type> cmp;
+
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< rcu_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp compare;
+ typedef ci::skip_list::turbo32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< rcu_type, base_item_type, traits > set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( IntrusiveSkipListSet, base_turbo24 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::base_item_type base_item_type;
+ typedef typename TestFixture::mock_disposer mock_disposer;
+ typedef typename TestFixture::template cmp<base_item_type> cmp;
+
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< rcu_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp compare;
+ typedef ci::skip_list::turbo24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< rcu_type, base_item_type, traits > set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( IntrusiveSkipListSet, base_turbo16 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::base_item_type base_item_type;
+ typedef typename TestFixture::mock_disposer mock_disposer;
+ typedef typename TestFixture::template cmp<base_item_type> cmp;
+
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::base_hook< ci::opt::gc< rcu_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp compare;
+ typedef ci::skip_list::turbo16 random_level_generator;
};
typedef ci::SkipListSet< rcu_type, base_item_type, traits > set_type;
this->test( s );
}
-TYPED_TEST_P( IntrusiveSkipListSet, member_xorshift )
+TYPED_TEST_P( IntrusiveSkipListSet, member_xorshift32 )
{
typedef typename TestFixture::rcu_type rcu_type;
typedef typename TestFixture::member_item_type member_item_type;
typedef cmp compare;
typedef less_predicate less;
typedef ci::skip_list::stat<> stat;
- typedef ci::skip_list::xorshift random_level_generator;
+ typedef ci::skip_list::xorshift32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< rcu_type, member_item_type, traits > set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( IntrusiveSkipListSet, member_xorshift24 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::member_item_type member_item_type;
+ typedef typename TestFixture::mock_disposer mock_disposer;
+ typedef typename TestFixture::template less<member_item_type> less_predicate;
+ typedef typename TestFixture::template cmp<member_item_type> cmp;
+
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< rcu_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp compare;
+ typedef less_predicate less;
+ typedef ci::skip_list::stat<> stat;
+ typedef ci::skip_list::xorshift24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< rcu_type, member_item_type, traits > set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( IntrusiveSkipListSet, member_xorshift16 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::member_item_type member_item_type;
+ typedef typename TestFixture::mock_disposer mock_disposer;
+ typedef typename TestFixture::template less<member_item_type> less_predicate;
+ typedef typename TestFixture::template cmp<member_item_type> cmp;
+
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< rcu_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp compare;
+ typedef less_predicate less;
+ typedef ci::skip_list::stat<> stat;
+ typedef ci::skip_list::xorshift16 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< rcu_type, member_item_type, traits > set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( IntrusiveSkipListSet, member_turbo32 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::member_item_type member_item_type;
+ typedef typename TestFixture::mock_disposer mock_disposer;
+ typedef typename TestFixture::template less<member_item_type> less_predicate;
+ typedef typename TestFixture::template cmp<member_item_type> cmp;
+
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< rcu_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp compare;
+ typedef less_predicate less;
+ typedef ci::skip_list::stat<> stat;
+ typedef ci::skip_list::turbo32 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< rcu_type, member_item_type, traits > set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( IntrusiveSkipListSet, member_turbo24 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::member_item_type member_item_type;
+ typedef typename TestFixture::mock_disposer mock_disposer;
+ typedef typename TestFixture::template less<member_item_type> less_predicate;
+ typedef typename TestFixture::template cmp<member_item_type> cmp;
+
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< rcu_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp compare;
+ typedef less_predicate less;
+ typedef ci::skip_list::stat<> stat;
+ typedef ci::skip_list::turbo24 random_level_generator;
+ };
+
+ typedef ci::SkipListSet< rcu_type, member_item_type, traits > set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( IntrusiveSkipListSet, member_turbo16 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::member_item_type member_item_type;
+ typedef typename TestFixture::mock_disposer mock_disposer;
+ typedef typename TestFixture::template less<member_item_type> less_predicate;
+ typedef typename TestFixture::template cmp<member_item_type> cmp;
+
+ struct traits: public ci::skip_list::traits
+ {
+ typedef ci::skip_list::member_hook< offsetof( member_item_type, hMember ), ci::opt::gc< rcu_type >> hook;
+ typedef mock_disposer disposer;
+ typedef cmp compare;
+ typedef less_predicate less;
+ typedef ci::skip_list::stat<> stat;
+ typedef ci::skip_list::turbo16 random_level_generator;
};
typedef ci::SkipListSet< rcu_type, member_item_type, traits > set_type;
}
-// GCC 5: All test names should be written on single line, otherwise a runtime error will be encountered like as
+// All test names should be written on single line, otherwise a runtime error will be encountered like as
// "No test named <test_name> can be found in this test case"
REGISTER_TYPED_TEST_CASE_P( IntrusiveSkipListSet,
- base_cmp, base_less, base_cmpmix, base_xorshift, member_cmp, member_less, member_cmpmix, member_xorshift
+ base_cmp, base_less, base_cmpmix, base_xorshift32, base_xorshift24, base_xorshift16, base_turbo32, base_turbo24, base_turbo16, member_cmp, member_less, member_cmpmix, member_xorshift32, member_xorshift24, member_xorshift16, member_turbo32, member_turbo24, member_turbo16
);
cds::gc::dhp::smr::destruct();
}
};
-
- TEST_F( SkipListMap_DHP, compare )
- {
- typedef cc::SkipListMap< gc_type, key_type, value_type,
- typename cc::skip_list::make_traits<
- cds::opt::compare< cmp >
- >::type
- > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_DHP, less )
- {
- typedef cc::SkipListMap< gc_type, key_type, value_type,
- typename cc::skip_list::make_traits<
- cds::opt::less< base_class::less >
- >::type
- > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_DHP, cmpmix )
- {
- typedef cc::SkipListMap< gc_type, key_type, value_type,
- typename cc::skip_list::make_traits<
- cds::opt::less< base_class::less >
- ,cds::opt::compare< cmp >
- >::type
- > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_DHP, item_counting )
- {
- struct map_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- };
- typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_DHP, backoff )
- {
- struct map_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cds::backoff::yield back_off;
- };
- typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_DHP, stat )
- {
- struct map_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cds::backoff::yield back_off;
- typedef cc::skip_list::stat<> stat;
- };
- typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_DHP, random_level_generator )
- {
- struct map_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cc::skip_list::stat<> stat;
- typedef cc::skip_list::xorshift random_level_generator;
- };
- typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
-
- map_type m;
- test( m );
- }
+# define CDSTEST_FIXTURE_NAME SkipListMap_DHP
+# include "skiplist_hp_inl.h"
} // namespace
}
};
- TEST_F( SkipListMap_HP, compare )
- {
- typedef cc::SkipListMap< gc_type, key_type, value_type,
- typename cc::skip_list::make_traits<
- cds::opt::compare< cmp >
- >::type
- > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_HP, less )
- {
- typedef cc::SkipListMap< gc_type, key_type, value_type,
- typename cc::skip_list::make_traits<
- cds::opt::less< base_class::less >
- >::type
- > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_HP, cmpmix )
- {
- typedef cc::SkipListMap< gc_type, key_type, value_type,
- typename cc::skip_list::make_traits<
- cds::opt::less< base_class::less >
- ,cds::opt::compare< cmp >
- >::type
- > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_HP, item_counting )
- {
- struct map_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- };
- typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_HP, backoff )
- {
- struct map_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cds::backoff::yield back_off;
- };
- typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_HP, stat )
- {
- struct map_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cds::backoff::yield back_off;
- typedef cc::skip_list::stat<> stat;
- };
- typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
-
- map_type m;
- test( m );
- }
-
- TEST_F( SkipListMap_HP, random_level_generator )
- {
- struct map_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cc::skip_list::stat<> stat;
- typedef cc::skip_list::xorshift random_level_generator;
- };
- typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
-
- map_type m;
- test( m );
- }
+# define CDSTEST_FIXTURE_NAME SkipListMap_HP
+# include "skiplist_hp_inl.h"
} // namespace
--- /dev/null
+/*
+ This file is a part of libcds - Concurrent Data Structures library
+
+ (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017
+
+ Source code repo: http://github.com/khizmax/libcds/
+ Download: http://sourceforge.net/projects/libcds/files/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+TEST_F( CDSTEST_FIXTURE_NAME, compare )
+{
+ typedef cc::SkipListMap< gc_type, key_type, value_type,
+ typename cc::skip_list::make_traits<
+ cds::opt::compare< cmp >
+ >::type
+ > map_type;
+
+ map_type m;
+ test( m );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, less )
+{
+ typedef cc::SkipListMap< gc_type, key_type, value_type,
+ typename cc::skip_list::make_traits<
+ cds::opt::less< base_class::less >
+ >::type
+ > map_type;
+
+ map_type m;
+ test( m );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, cmpmix )
+{
+ typedef cc::SkipListMap< gc_type, key_type, value_type,
+ typename cc::skip_list::make_traits<
+ cds::opt::less< base_class::less >
+ ,cds::opt::compare< cmp >
+ >::type
+ > map_type;
+
+ map_type m;
+ test( m );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, item_counting )
+{
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, backoff )
+{
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cds::backoff::yield back_off;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, stat )
+{
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cds::backoff::yield back_off;
+ typedef cc::skip_list::stat<> stat;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, xorshift32 )
+{
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef base_class::less less;
+ typedef cc::skip_list::xorshift32 random_level_generator;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, xorshift24 )
+{
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef base_class::less less;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::xorshift24 random_level_generator;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, xorshift16 )
+{
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef cc::skip_list::xorshift16 random_level_generator;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, turbo32 )
+{
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef cc::skip_list::turbo32 random_level_generator;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, turbo24 )
+{
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef cc::skip_list::turbo24 random_level_generator;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, turbo16 )
+{
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef cc::skip_list::turbo16 random_level_generator;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+}
test( m );
}
- TEST_F( SkipListMap_NoGC, random_level_generator )
+ TEST_F( SkipListMap_NoGC, xorshift32 )
{
struct map_traits: public cc::skip_list::traits
{
typedef base_class::less less;
typedef cds::atomicity::item_counter item_counter;
typedef cc::skip_list::stat<> stat;
- typedef cc::skip_list::xorshift random_level_generator;
+ typedef cc::skip_list::xorshift32 random_level_generator;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+ }
+
+ TEST_F( SkipListMap_NoGC, xorshift24 )
+ {
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::xorshift24 random_level_generator;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+ }
+
+ TEST_F( SkipListMap_NoGC, xorshift16 )
+ {
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::xorshift16 random_level_generator;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+ }
+
+ TEST_F( SkipListMap_NoGC, turbo32 )
+ {
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::turbo32 random_level_generator;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+ }
+
+ TEST_F( SkipListMap_NoGC, turbo24 )
+ {
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::turbo24 random_level_generator;
+ };
+ typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ test( m );
+ }
+
+ TEST_F( SkipListMap_NoGC, turbo16 )
+ {
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::turbo16 random_level_generator;
};
typedef cc::SkipListMap< gc_type, key_type, value_type, map_traits > map_type;
this->test( m );
}
-TYPED_TEST_P( SkipListMap, random_level_generator )
+TYPED_TEST_P( SkipListMap, xorshift32 )
{
typedef typename TestFixture::rcu_type rcu_type;
typedef typename TestFixture::key_type key_type;
struct map_traits: public cc::skip_list::traits
{
- typedef typename TestFixture::cmp compare;
typedef typename TestFixture::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cc::skip_list::stat<> stat;
- typedef cc::skip_list::xorshift random_level_generator;
- typedef cds::opt::v::rcu_assert_deadlock rcu_check_deadlock;
+ typedef cc::skip_list::xorshift32 random_level_generator;
+ };
+ typedef cc::SkipListMap< rcu_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ this->test( m );
+}
+
+TYPED_TEST_P( SkipListMap, xorshift24 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::key_type key_type;
+ typedef typename TestFixture::value_type value_type;
+
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef typename TestFixture::less less;
+ typedef cc::skip_list::xorshift24 random_level_generator;
};
typedef cc::SkipListMap< rcu_type, key_type, value_type, map_traits > map_type;
this->test( m );
}
+TYPED_TEST_P( SkipListMap, xorshift16 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::key_type key_type;
+ typedef typename TestFixture::value_type value_type;
+
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef typename TestFixture::less less;
+ typedef cc::skip_list::xorshift16 random_level_generator;
+ };
+ typedef cc::SkipListMap< rcu_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ this->test( m );
+}
+
+TYPED_TEST_P( SkipListMap, turbo32 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::key_type key_type;
+ typedef typename TestFixture::value_type value_type;
+
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef typename TestFixture::less less;
+ typedef cc::skip_list::turbo32 random_level_generator;
+ };
+ typedef cc::SkipListMap< rcu_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ this->test( m );
+}
+
+TYPED_TEST_P( SkipListMap, turbo24 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::key_type key_type;
+ typedef typename TestFixture::value_type value_type;
+
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef typename TestFixture::less less;
+ typedef cc::skip_list::turbo24 random_level_generator;
+ };
+ typedef cc::SkipListMap< rcu_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ this->test( m );
+}
+
+TYPED_TEST_P( SkipListMap, turbo16 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::key_type key_type;
+ typedef typename TestFixture::value_type value_type;
+
+ struct map_traits: public cc::skip_list::traits
+ {
+ typedef typename TestFixture::less less;
+ typedef cc::skip_list::turbo16 random_level_generator;
+ };
+ typedef cc::SkipListMap< rcu_type, key_type, value_type, map_traits > map_type;
+
+ map_type m;
+ this->test( m );
+}
REGISTER_TYPED_TEST_CASE_P( SkipListMap,
- compare, less, cmpmix, item_counting, backoff, stat, random_level_generator
+ compare, less, cmpmix, item_counting, backoff, stat, xorshift32, xorshift24, xorshift16, turbo32, turbo24, turbo16
);
}
};
- TEST_F( SkipListSet_DHP, compare )
- {
- typedef cc::SkipListSet< gc_type, int_item,
- typename cc::skip_list::make_traits<
- cds::opt::compare< cmp >
- >::type
- > set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_DHP, less )
- {
- typedef cc::SkipListSet< gc_type, int_item,
- typename cc::skip_list::make_traits<
- cds::opt::less< base_class::less >
- >::type
- > set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_DHP, cmpmix )
- {
- typedef cc::SkipListSet< gc_type, int_item,
- typename cc::skip_list::make_traits<
- cds::opt::less< base_class::less >
- ,cds::opt::compare< cmp >
- >::type
- > set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_DHP, item_counting )
- {
- struct set_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- };
- typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_DHP, backoff )
- {
- struct set_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cds::backoff::yield back_off;
- };
- typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_DHP, stat )
- {
- struct set_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cds::backoff::yield back_off;
- typedef cc::skip_list::stat<> stat;
- };
- typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_DHP, random_level_generator )
- {
- struct set_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cc::skip_list::stat<> stat;
- typedef cc::skip_list::xorshift random_level_generator;
- };
- typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
-
- set_type s;
- test( s );
- }
+# define CDSTEST_FIXTURE_NAME SkipListSet_DHP
+# include "skiplist_hp_inl.h"
} // namespace
namespace cc = cds::container;
typedef cds::gc::HP gc_type;
- class SkipListSet_HP : public cds_test::container_ordered_set_hp
+ class SkipListSet_HP: public cds_test::container_ordered_set_hp
{
protected:
typedef cds_test::container_ordered_set_hp base_class;
}
};
- TEST_F( SkipListSet_HP, compare )
- {
- typedef cc::SkipListSet< gc_type, int_item,
- typename cc::skip_list::make_traits<
- cds::opt::compare< cmp >
- >::type
- > set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_HP, less )
- {
- typedef cc::SkipListSet< gc_type, int_item,
- typename cc::skip_list::make_traits<
- cds::opt::less< base_class::less >
- >::type
- > set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_HP, cmpmix )
- {
- typedef cc::SkipListSet< gc_type, int_item,
- typename cc::skip_list::make_traits<
- cds::opt::less< base_class::less >
- ,cds::opt::compare< cmp >
- >::type
- > set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_HP, item_counting )
- {
- struct set_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- };
- typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_HP, backoff )
- {
- struct set_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cds::backoff::yield back_off;
- };
- typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_HP, stat )
- {
- struct set_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cds::backoff::yield back_off;
- typedef cc::skip_list::stat<> stat;
- };
- typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
-
- set_type s;
- test( s );
- }
-
- TEST_F( SkipListSet_HP, random_level_generator )
- {
- struct set_traits: public cc::skip_list::traits
- {
- typedef cmp compare;
- typedef base_class::less less;
- typedef cds::atomicity::item_counter item_counter;
- typedef cc::skip_list::stat<> stat;
- typedef cc::skip_list::xorshift random_level_generator;
- };
- typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
-
- set_type s;
- test( s );
- }
+# define CDSTEST_FIXTURE_NAME SkipListSet_HP
+# include "skiplist_hp_inl.h"
-} // namespace
+}
--- /dev/null
+/*
+ This file is a part of libcds - Concurrent Data Structures library
+
+ (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017
+
+ Source code repo: http://github.com/khizmax/libcds/
+ Download: http://sourceforge.net/projects/libcds/files/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+TEST_F( CDSTEST_FIXTURE_NAME, compare )
+{
+ typedef cc::SkipListSet< gc_type, int_item,
+ typename cc::skip_list::make_traits<
+ cds::opt::compare< cmp >
+ >::type
+ > set_type;
+
+ set_type s;
+ test( s );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, less )
+{
+ typedef cc::SkipListSet< gc_type, int_item,
+ typename cc::skip_list::make_traits<
+ cds::opt::less< base_class::less >
+ >::type
+ > set_type;
+
+ set_type s;
+ test( s );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, cmpmix )
+{
+ typedef cc::SkipListSet< gc_type, int_item,
+ typename cc::skip_list::make_traits<
+ cds::opt::less< base_class::less >
+ ,cds::opt::compare< cmp >
+ >::type
+ > set_type;
+
+ set_type s;
+ test( s );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, item_counting )
+{
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, backoff )
+{
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cds::backoff::yield back_off;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, stat )
+{
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cds::backoff::yield back_off;
+ typedef cc::skip_list::stat<> stat;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, xorshift32 )
+{
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::xorshift32 random_level_generator;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, xorshift24 )
+{
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::xorshift24 random_level_generator;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, xorshift16 )
+{
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::xorshift16 random_level_generator;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, turbo32 )
+{
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::turbo32 random_level_generator;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, turbo24 )
+{
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::turbo24 random_level_generator;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+}
+
+TEST_F( CDSTEST_FIXTURE_NAME, turbo16 )
+{
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::turbo16 random_level_generator;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+}
test( s );
}
- TEST_F( SkipListSet_NoGC, random_level_generator )
+ TEST_F( SkipListSet_NoGC, xorshift32 )
{
struct set_traits: public cc::skip_list::traits
{
typedef base_class::less less;
typedef cds::atomicity::item_counter item_counter;
typedef cc::skip_list::stat<> stat;
- typedef cc::skip_list::xorshift random_level_generator;
+ typedef cc::skip_list::xorshift32 random_level_generator;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( SkipListSet_NoGC, xorshift24 )
+ {
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::xorshift24 random_level_generator;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( SkipListSet_NoGC, xorshift16 )
+ {
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::xorshift16 random_level_generator;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( SkipListSet_NoGC, turbo32 )
+ {
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::turbo32 random_level_generator;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( SkipListSet_NoGC, turbo24 )
+ {
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::turbo24 random_level_generator;
+ };
+ typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
+
+ set_type s;
+ test( s );
+ }
+
+ TEST_F( SkipListSet_NoGC, turbo16 )
+ {
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::stat<> stat;
+ typedef cc::skip_list::turbo16 random_level_generator;
};
typedef cc::SkipListSet< gc_type, int_item, set_traits >set_type;
this->test( s );
}
-TYPED_TEST_P( SkipListSet, random_level_generator )
+TYPED_TEST_P( SkipListSet, xorshift32 )
{
typedef typename TestFixture::rcu_type rcu_type;
typedef typename TestFixture::int_item int_item;
struct set_traits: public cc::skip_list::traits
{
- typedef typename TestFixture::cmp compare;
typedef typename TestFixture::less less;
typedef cds::atomicity::item_counter item_counter;
- typedef cc::skip_list::stat<> stat;
- typedef cc::skip_list::xorshift random_level_generator;
+ typedef cc::skip_list::xorshift32 random_level_generator;
typedef cds::opt::v::rcu_assert_deadlock rcu_check_deadlock;
};
typedef cc::SkipListSet< rcu_type, int_item, set_traits >set_type;
this->test( s );
}
+TYPED_TEST_P( SkipListSet, xorshift24 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::int_item int_item;
+
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef typename TestFixture::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::xorshift24 random_level_generator;
+ typedef cds::opt::v::rcu_assert_deadlock rcu_check_deadlock;
+ };
+ typedef cc::SkipListSet< rcu_type, int_item, set_traits >set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( SkipListSet, xorshift16 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::int_item int_item;
+
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef typename TestFixture::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::xorshift16 random_level_generator;
+ typedef cds::opt::v::rcu_assert_deadlock rcu_check_deadlock;
+ };
+ typedef cc::SkipListSet< rcu_type, int_item, set_traits >set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( SkipListSet, turbo32 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::int_item int_item;
+
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef typename TestFixture::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::turbo32 random_level_generator;
+ typedef cds::opt::v::rcu_assert_deadlock rcu_check_deadlock;
+ };
+ typedef cc::SkipListSet< rcu_type, int_item, set_traits >set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( SkipListSet, turbo24 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::int_item int_item;
+
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef typename TestFixture::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::turbo24 random_level_generator;
+ typedef cds::opt::v::rcu_assert_deadlock rcu_check_deadlock;
+ };
+ typedef cc::SkipListSet< rcu_type, int_item, set_traits >set_type;
+
+ set_type s;
+ this->test( s );
+}
+
+TYPED_TEST_P( SkipListSet, turbo16 )
+{
+ typedef typename TestFixture::rcu_type rcu_type;
+ typedef typename TestFixture::int_item int_item;
+
+ struct set_traits: public cc::skip_list::traits
+ {
+ typedef typename TestFixture::less less;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::skip_list::turbo16 random_level_generator;
+ typedef cds::opt::v::rcu_assert_deadlock rcu_check_deadlock;
+ };
+ typedef cc::SkipListSet< rcu_type, int_item, set_traits >set_type;
+
+ set_type s;
+ this->test( s );
+}
-// GCC 5: All this->test names should be written on single line, otherwise a runtime error will be encountered like as
+// All this->test names should be written on single line, otherwise a runtime error will be encountered like as
// "No this->test named <test_name> can be found in this this->test case"
REGISTER_TYPED_TEST_CASE_P( SkipListSet,
- compare, less, cmpmix, item_counting, backoff, stat, random_level_generator
+ compare, less, cmpmix, item_counting, backoff, stat, xorshift32, xorshift24, xorshift16, turbo32, turbo24, turbo16
);
#TODO: temporary suppressed. Must be researched later
race:cds/container/impl/bronson_avltree_map_rcu.h
-
-#TODO: MSPriorityQueue - temporary suppressed. Must be researched later
-# Seems, TSan don't see spinlock blocking. How to learn TSan to see non-traditional locking algo?..
-race:cds::intrusive::MSPriorityQueue