License: Creative Commons Attribution 3.0 Unported license (CC BY 3.0)
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.ECOOP.2015.445
URN: urn:nbn:de:0030-drops-52334
URL: http://dagstuhl.sunsite.rwth-aachen.de/volltexte/2015/5233/
Petri, Gustavo ;
Vitek, Jan ;
Jagannathan, Suresh
Cooking the Books: Formalizing JMM Implementation Recipes
Abstract
The Java Memory Model (JMM) is intended to characterize the meaning of concurrent Java programs. Because of the model's complexity, however, its definition cannot be easily transplanted within an optimizing Java compiler, even though an important rationale for its design was to ensure Java compiler optimizations are not unduly hampered because of the language's concurrency features. In response, Lea's JSR-133 Cookbook for Compiler Writers, an informal guide to realizing the principles underlying the JMM on different (relaxed-memory) platforms was developed. The goal of the cookbook is to give compiler writers a relatively simple, yet reasonably efficient, set of reordering-based recipes that satisfy JMM constraints.
In this paper, we present the first formalization of the cookbook, providing a semantic basis upon which the relationship between the recipes defined by the cookbook and the guarantees enforced by the JMM can be rigorously established. Notably, one artifact of our investigation is that the rules defined by the cookbook for compiling Java onto Power are inconsistent with the requirements of the JMM, a surprising result, and one which justifies our belief in the need for formally provable definitions to reason about sophisticated (and racy) concurrency patterns in Java, and their implementation on modern-day relaxed-memory hardware.
Our formalization enables simulation arguments between an architecture-independent intermediate representation of the kind suggested by Lea with machine abstractions for Power and x86. Moreover, we provide fixes for cookbook recipes that are inconsistent with the behaviors admitted by the target platform, and prove the correctness of these repairs.
BibTeX - Entry
@InProceedings{petri_et_al:LIPIcs:2015:5233,
author = {Gustavo Petri and Jan Vitek and Suresh Jagannathan},
title = {{Cooking the Books: Formalizing JMM Implementation Recipes}},
booktitle = {29th European Conference on Object-Oriented Programming (ECOOP 2015)},
pages = {445--469},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-939897-86-6},
ISSN = {1868-8969},
year = {2015},
volume = {37},
editor = {John Tang Boyland},
publisher = {Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik},
address = {Dagstuhl, Germany},
URL = {http://drops.dagstuhl.de/opus/volltexte/2015/5233},
URN = {urn:nbn:de:0030-drops-52334},
doi = {10.4230/LIPIcs.ECOOP.2015.445},
annote = {Keywords: Concurrency, Java, Memory Model, Relaxed-Memory}
}
Keywords: |
|
Concurrency, Java, Memory Model, Relaxed-Memory |
Collection: |
|
29th European Conference on Object-Oriented Programming (ECOOP 2015) |
Issue Date: |
|
2015 |
Date of publication: |
|
29.06.2015 |