We are in the multi-core era. Dynamically-typed languages are in widespread use, but their support for multithreading still lags behind. One of the reasons is that the sophisticated techniques they use to efficiently represent their dynamic object models are often unsafe in multithreaded environments.
This paper defines safety requirements for dynamic object models in multithreaded environments. Based on these requirements, a language-agnostic and thread-safe object model is designed that maintains the efficiency of sequential approaches. This is achieved by ensuring that field reads do not require synchronization and field updates only need to synchronize on objects shared between threads.
Basing our work on JRuby+Truffle, we show that our safe object model has zero overhead on peak performance for thread-local objects and only 3% average overhead on parallel benchmarks where field updates require synchronization. Thus, it can be a foundation for safe and efficient multithreaded VMs for a wide range of dynamic languages.
Thu 3 NovDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:30 - 15:10
|Efficient and Thread-Safe Objects for Dynamically-Typed Languages|
Benoit Daloze JKU Linz, Austria, Stefan Marr Johannes Kepler University Linz, Daniele Bonetta Oracle Labs, Hanspeter Mössenböck JKU Linz, AustriaDOI Pre-print Media Attached
|Hybrid STM/HTM for Nested Transactions on OpenJDK|
Keith Chapman Purdue University, Tony Hosking Australian National University, Data61, and Purdue University, Eliot Moss University of Massachusetts AmherstLink to publication DOI Pre-print Media Attached
|Makalu: Fast Recoverable Allocation of Non-volatile Memory|
OOPSLADOI Pre-print Media Attached
|Prioritized Garbage Collection: Explicit GC Support for Software Caches|
Diogenes Nunez Tufts University, Sam Guyer Tufts University, Emery D. Berger University of Massachusetts, AmherstDOI Pre-print Media Attached