Software lock elision for x86 machine code: A new approach to software transactional memory