tlds
Transactional Operations for Linked Data Structures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
anonymous_namespace{oreclazy.cpp} Namespace Reference

Classes

struct  OrecLazy_Generic
 

Functions

void onSwitchTo ()
 
bool irrevoc (STM_IRREVOC_SIG(,))
 
NOINLINE void validate (TxThread *)
 
bool irrevoc (STM_IRREVOC_SIG(tx, upper_stack_bound))
 

Function Documentation

bool anonymous_namespace{oreclazy.cpp}::irrevoc ( STM_IRREVOC_SIG(,)  )
bool anonymous_namespace{oreclazy.cpp}::irrevoc ( STM_IRREVOC_SIG(tx, upper_stack_bound)  )

OrecLazy in-flight irrevocability:

Either commit the transaction or return false.

Here is the caller graph for this function:

void anonymous_namespace{oreclazy.cpp}::onSwitchTo ( )

Switch to OrecLazy:

The timestamp must be >= the maximum value of any orec. Some algs use timestamp as a zero-one mutex. If they do, then they back up the timestamp first, in timestamp_max.

Here is the caller graph for this function:

NOINLINE void anonymous_namespace{oreclazy.cpp}::validate ( TxThread tx)

OrecLazy validation:

We only call this when in-flight, which means that we don't have any locks... This makes the code very simple, but it is still better to not inline it.