International Symposium on Code Generation and Optimization (CGO'05)
Automatically Reducing Repetitive Synchronization with a Just-in-Time Compiler for Java
San Jose, California
March 20-March 23
ISBN: 0-7695-2298-X
We describe an automatic technique to remove repetitive synchronization in Java™ programs by removing selected MONITORENTER/EXIT operations. Once these operations are removed, parts of a method that were not originally locked become protected by a lock. If it is unsafe to synchronize the code between the original locked regions, however, the code is not transformed. Scalability is also protected by not allowing a lock to be held for a significantly longer time than it would be held in the original program code. Our base algorithm improved the throughput of the industry-standard SPECjbb2000 benchmark by 2% to 5% for three different platforms. We also describe an extension to our algorithm to better handle virtual calls, which are prevalent in Java code, and this extension provides up to a further 5% improvement. Our computationally efficient algorithm was implemented and evaluated in a production Just-In-Time (JIT) compiler.
Citation:
Mark Stoodley, Vijay Sundaresan, "Automatically Reducing Repetitive Synchronization with a Just-in-Time Compiler for Java," cgo, pp.27-36, International Symposium on Code Generation and Optimization (CGO'05), 2005