Wed 7 Nov 2018 15:52 - 16:15 at Studio 2 - Compiler Optimization Chair(s): Patrick Lam

Just-in-time (JIT) compilation coupled with code caching are widely used to improve performance in dynamic programming language implementations. These code caches, along with the associated profiling data for the hot code, however, consume significant amounts of memory. Furthermore, they incur extra JIT compilation time for their creation. On Android, the current standard JIT compiler and its code caches are not shared among processes—that is, the runtime system maintains a private code cache, and its associated data, for each runtime process. However, applications running on the same platform tend to share multiple libraries in common. Sharing cached code across multiple applications and multiple processes can lead to a reduction in memory use. It can directly reduce compile time. It can also reduce the cumulative amount of time spent interpreting code. All three of these effects can improve actual runtime performance.

In this paper, we describe ShareJIT, a global code cache for JITs that can share code across multiple applications and multiple processes. We implemented ShareJIT in the context of the Android Runtime (ART), a widely used, state-of-the-art system. To increase sharing, our implementation constrains the amount of context that the JIT compiler can use to optimize the code. This exposes a fundamental tradeoff: increased specialization to a single process’ context decreases the extent to which the compiled code can be shared. In ShareJIT, we limit some optimization to increase shareability. To evaluate the ShareJIT, we tested 8 popular Android apps in a total of 30 experiments. ShareJIT improved overall runtime performance by 9% on average, while decreasing memory consumption by 16% on average and JIT compilation time by 37% on average.

Wed 7 Nov

Displayed time zone: Guadalajara, Mexico City, Monterrey change

15:30 - 17:00
Compiler OptimizationOOPSLA at Studio 2
Chair(s): Patrick Lam University of Waterloo
15:30
22m
Talk
Format Abstraction for Sparse Tensor Algebra Compilers
OOPSLA
15:52
22m
Talk
ShareJIT: JIT Code Cache Sharing across Processes and its Practical Implementation
OOPSLA
Xiaoran Xu Rice University, Keith Cooper Rice University, Jacob Brock University of Rochester, Yan Zhang , Handong Ye Futurewei Technologies
16:15
22m
Talk
Reconciling High-level Optimizations and Low-level Code in LLVM
OOPSLA
Juneyoung Lee Seoul National University, Chung-Kil Hur Seoul National University, Ralf Jung MPI-SWS, Zhengyang Liu University of Utah, John Regehr University of Utah, Nuno P. Lopes Microsoft Research
Pre-print
16:37
22m
Talk
An Empirical Study of the Effect of Source-level Loop Transformations on Compiler Stability
OOPSLA
Zhangxiaowen Gong University of Illinois at Urbana-Champaign, Zhi Chen University of California, Irvine, Justin Szaday University of Illinois at Urbana-Champaign, David Wong Intel, Zehra Sura IBM Research, Neftali Watkinson , Saeed Maleki Microsoft Research, David Padua University of Illinois at Urbana-Champaign, Alexander Veidenbaum University of California, Irvine, Alexandru Nicolau University of California, Irvine, Josep Torrellas University of Illinois at Urbana-Champaign
Media Attached