CoreDet: a compiler and runtime system for deterministic multithreaded execution
The Java memory model