tlds
Transactional Operations for Linked Data Structures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
stm::BitFilter< BITS > Class Template Reference

#include <BitFilter.hpp>

Collaboration diagram for stm::BitFilter< BITS >:

Public Member Functions

 BitFilter ()
 
TM_INLINE void add (const void *const val) volatile
 
ALWAYS_INLINE void atomic_add (const void *const val) volatile
 
ALWAYS_INLINE bool lookup (const void *const val) const volatile
 
TM_INLINE void unionwith (const BitFilter< BITS > &rhs)
 
TM_INLINE void clear () volatile
 
TM_INLINE void fastcopy (const volatile BitFilter< BITS > *rhs) volatile
 
NOINLINE bool intersect (const BitFilter< BITS > *rhs) const volatile
 

Private Member Functions

template<uint32_t BITS> union {
   uintptr_t   word_filter [WORD_BLOCKS]
 
TM_ALIGN (16)
 

Static Private Member Functions

static ALWAYS_INLINE uint32_t hash (const void *const key)
 

Static Private Attributes

static const uint32_t WORD_SIZE = 8 * sizeof(uintptr_t)
 
static const uint32_t WORD_BLOCKS = BITS / WORD_SIZE
 

Detailed Description

template<uint32_t BITS>
class stm::BitFilter< BITS >

This is a simple Bit vector class, with SSE2 optimizations

Constructor & Destructor Documentation

template<uint32_t BITS>
stm::BitFilter< BITS >::BitFilter ( )
inline

Here is the call graph for this function:

Member Function Documentation

template<uint32_t BITS>
TM_INLINE void stm::BitFilter< BITS >::add ( const void *const  val) volatile
inline

Here is the call graph for this function:

template<uint32_t BITS>
ALWAYS_INLINE void stm::BitFilter< BITS >::atomic_add ( const void *const  val) volatile
inline

Here is the call graph for this function:

template<uint32_t BITS>
TM_INLINE void stm::BitFilter< BITS >::clear ( ) volatile
inline

Here is the caller graph for this function:

template<uint32_t BITS>
TM_INLINE void stm::BitFilter< BITS >::fastcopy ( const volatile BitFilter< BITS > *  rhs) volatile
inline
template<uint32_t BITS>
static ALWAYS_INLINE uint32_t stm::BitFilter< BITS >::hash ( const void *const  key)
inlinestaticprivate

Here is the caller graph for this function:

template<uint32_t BITS>
NOINLINE bool stm::BitFilter< BITS >::intersect ( const BitFilter< BITS > *  rhs) const volatile
inline
template<uint32_t BITS>
ALWAYS_INLINE bool stm::BitFilter< BITS >::lookup ( const void *const  val) const volatile
inline

Here is the call graph for this function:

template<uint32_t BITS>
template<uint32_t BITS>
union stm::BitFilter::@1 stm::BitFilter< BITS >::TM_ALIGN ( 16  )
private

index this as an array of words or an array of vectors

template<uint32_t BITS>
TM_INLINE void stm::BitFilter< BITS >::unionwith ( const BitFilter< BITS > &  rhs)
inline

Member Data Documentation

template<uint32_t BITS>
const uint32_t stm::BitFilter< BITS >::WORD_BLOCKS = BITS / WORD_SIZE
staticprivate
template<uint32_t BITS>
uintptr_t stm::BitFilter< BITS >::word_filter[WORD_BLOCKS]
template<uint32_t BITS>
const uint32_t stm::BitFilter< BITS >::WORD_SIZE = 8 * sizeof(uintptr_t)
staticprivate

The documentation for this class was generated from the following file: