TY - GEN
T1 - Closed and open nested atomic actions for Java
T2 - 7th International Workshop on Network on Chip Architectures, NoCArc 2014
AU - Chapman, Keith
AU - Hosking, Antony L.
AU - Moss, J. Eliot B.
AU - Richards, Tim
N1 - Publisher Copyright:
Copyright © 2014 ACM.
PY - 2014/12/13
Y1 - 2014/12/13
N2 - We describe the design and prototype implementation of a dialect of Java, XJ, that supports both closed and open nested transactions. As we have previously advocated, open nesting most naturally attaches to the class as the primary abstraction mechanism of Java. The resulting design allows natural expression of layered abstractions for concurrent data structures, while promoting improved concurrency for operations on those abstractions. Moreover, we describe our approach to constructing a prototype implementation of XJ that runs on standard Java virtual machines, by grafting support for transactions onto both application code and library code via load-time bytecode rewriting, for full execution coverage. We rely on extensions to the javac compiler, a JVMTI run-time agent to intercept and rewrite Java classes as they are loaded into the virtual machine, and a run-time library that tracks and manages all transaction meta-data. The resulting prototype will allow further exploration of implementation alternatives for open and closed nested transactions in Java. Our design also addresses the issue of internal deadlock caused by accessing the same data in both closed and open nesting fashion by carefully disallowing such access.
AB - We describe the design and prototype implementation of a dialect of Java, XJ, that supports both closed and open nested transactions. As we have previously advocated, open nesting most naturally attaches to the class as the primary abstraction mechanism of Java. The resulting design allows natural expression of layered abstractions for concurrent data structures, while promoting improved concurrency for operations on those abstractions. Moreover, we describe our approach to constructing a prototype implementation of XJ that runs on standard Java virtual machines, by grafting support for transactions onto both application code and library code via load-time bytecode rewriting, for full execution coverage. We rely on extensions to the javac compiler, a JVMTI run-time agent to intercept and rewrite Java classes as they are loaded into the virtual machine, and a run-time library that tracks and manages all transaction meta-data. The resulting prototype will allow further exploration of implementation alternatives for open and closed nested transactions in Java. Our design also addresses the issue of internal deadlock caused by accessing the same data in both closed and open nesting fashion by carefully disallowing such access.
KW - Abstract locks
KW - Nested transactions
KW - Open nesting
KW - Transactional memory
UR - http://www.scopus.com/inward/record.url?scp=84984820602&partnerID=8YFLogxK
U2 - 10.1145/2647508.2647525
DO - 10.1145/2647508.2647525
M3 - Conference contribution
T3 - ACM International Conference Proceeding Series
SP - 169
EP - 180
BT - 7th International Workshop on Network on Chip Architectures - In Conjunction with the 47th Annual IEEE/ACM International Symposium on Microarchitecture, MICRO-47
PB - Association for Computing Machinery
Y2 - 13 December 2014
ER -