An operational happens-before memory model
On Validity of Program Transformations in the Java Memory Model