tlds
Transactional Operations for Linked Data Structures
|
#include <BitFilter.hpp>
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 |
This is a simple Bit vector class, with SSE2 optimizations
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlinestaticprivate |
|
inline |
|
inline |
|
private |
index this as an array of words or an array of vectors
|
inline |
|
staticprivate |
uintptr_t stm::BitFilter< BITS >::word_filter[WORD_BLOCKS] |
|
staticprivate |