,
John Bender,
Jens Palsberg
Creative Commons Attribution 4.0 International license
The compilation scheme for Volatile accesses in the OpenJDK 9 HotSpot Java Virtual Machine has a major problem that persists despite a recent bug report and a long discussion. One of the suggested fixes is to let Java compile Volatile accesses in the same way as C/C++11. However, we show that this approach is invalid for Java. Indeed, we show a set of optimizations that is valid for C/C++11 but invalid for Java, while the compilation scheme is similar. We prove the correctness of the compilation scheme to Power and x86 and a suite of valid optimizations in Java. Our proofs are based on a language model that we validate by proving key properties such as the DRF-SC theorem and by running litmus tests via our implementation of Java in Herd7.
@Article{liu_et_al:DARTS.8.2.3,
author = {Liu, Shuyang and Bender, John and Palsberg, Jens},
title = {{Compiling Volatile Correctly in Java (Artifact)}},
pages = {3:1--3:2},
journal = {Dagstuhl Artifacts Series},
ISSN = {2509-8195},
year = {2022},
volume = {8},
number = {2},
editor = {Liu, Shuyang and Bender, John and Palsberg, Jens},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/DARTS.8.2.3},
URN = {urn:nbn:de:0030-drops-162018},
doi = {10.4230/DARTS.8.2.3},
annote = {Keywords: formal semantics, concurrency, compilation}
}
68b11fb27dbd97fbe5d9588b133d9658
(Get MD5 Sum)
The artifact has been evaluated as described in the ECOOP 2022 Call for Artifacts and the ACM Artifact Review and Badging Policy