The power of processor consistency
SPAA '93 Proceedings of the fifth annual ACM symposium on Parallel algorithms and architectures
Distributed operating systems
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Memory consistency and event ordering in scalable shared-memory multiprocessors
ISCA '90 Proceedings of the 17th annual international symposium on Computer Architecture
Concurrent Programming in Java: Design Principles and Patterns
Concurrent Programming in Java: Design Principles and Patterns
The Java Language Specification
The Java Language Specification
From Sequential to Multi-Threaded Java: An Event-Based Operational Semantics
AMAST '97 Proceedings of the 6th International Conference on Algebraic Methodology and Software Technology
Characterizations for Java Memory Behavior
IPPS '98 Proceedings of the 12th. International Parallel Processing Symposium on International Parallel Processing Symposium
Formalizing the safety of Java, the Java virtual machine, and Java card
ACM Computing Surveys (CSUR)
Specifying multithreaded Java semantics for program verification
Proceedings of the 24th International Conference on Software Engineering
Specifying Java thread semantics using a uniform memory model
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
Impact of Java Memory Model on Out-of-Order Multiprocessors
Proceedings of the 13th International Conference on Parallel Architectures and Compilation Techniques
Specifying memory consistency of write buffer multiprocessors
ACM Transactions on Computer Systems (TOCS)
Programming with exceptions in JCilk
Science of Computer Programming - Special issue: Synchronization and concurrency in object-oriented languages
Modularity: a first class concept to address distributed systems
ACM SIGACT News
A unified formal specification and analysis of the new java memory models
ASM'03 Proceedings of the abstract state machines 10th international conference on Advances in theory and practice
There is nothing wrong with out-of-thin-air: compiler optimization and memory models
Proceedings of the 2011 ACM SIGPLAN Workshop on Memory Systems Performance and Correctness
Concurrent semantics without the notions of state or state transitions
FORMATS'06 Proceedings of the 4th international conference on Formal Modeling and Analysis of Timed Systems
Hi-index | 0.00 |
The Java Language Specification (JLS) [Gosling et al. 1996] provides an operational definition for the consistency of shared variables. The definition remains unchanged in the JLS 2nd edition, currently under peer review, which relies on a specific abstract machine as its underlying model, is very complicated. Several subsequent works have tried to simplify and formalize it. However, these revised definitions are also operational, and thus have failed to highlight the intuition behind the original specification. In this work we provide a complete nonoperational specification for Java and for the JVM, excluding synchronized operations. We provide a simpler definition, in which we clearly distinguish the consistency model that is promised to the programmer from that which should be implemented in the JVM. This distinction, which was implicit in the original definition, is crucial for building the JVM. We find that the programmer model is strictly weaker than that of the JVM, and precisely define their discrepancy. Moreover, our definition is independent of any specific (or even abstract) machine, and can thus be used to verify JVM implementations and compiler optimizations on any platform. Finally, we show the precise range of consistency relaxations obtainable for the Java memory model when a certain compiler optimization— called prescient stores in JLS—is applicable.