Making Object-Based STM Practical in Unmanaged Environments
Torvald Riegel and Diogo Becker de Brum

Abstract:

Current transactifying compilers for unmanaged environments (e.g., systems software written in C/C++) target only word-based software transactional memories (STMs) because the compiler cannot easily infer whether it is safe to transform a transactional access to a certain memory location in an object-based way. To use object-based STMs in these environments, programmers must use explicit calls to the STM or use a restricted language dialect, both of which are not practical. In this paper, we show how an existing pointer analysis can be used to let a transactifying compiler for C/C++ use object-based accesses whenever this is possible and safe, while falling back to word-based accesses otherwise. Programmers do not need to provide any annotations and do not have to use a restricted language. Our evaluation also shows that an object-based STM can be significantly faster than a word-based STM with an otherwise identical design and implementation, even if the parameters of the latter have been tuned.

Bibtex:

@inproceedings{Riegel2008objbased,
  author = {{T}orvald {R}iegel and {B}ecker de {B}rum, {D}iogo},
  title = {{M}aking {O}bject-{B}ased {STM} {P}ractical in {U}nmanaged {E}nvironments},
  booktitle = {{TRANSACT} 2008},
  year = {2008},
}

Download: