Journal ArticleDOI
PYE: A Framework for Precise-Yet-Efficient Just-In-Time Analyses for Java Programs
TLDR
A two-step (static+JIT) analysis framework called precise-yet-efficient (PYE) that helps generate precise analysis-results at runtime at a very low cost and fulfills both the promises it makes: enhanced precision while maintaining efficiency during JIT compilation.Abstract:
Languages like Java and Cn follow a two-step process of compilation: static compilation and just-in-time (JIT) compilation. As the time spent in JIT compilation gets added to the execution-time of the application, JIT compilers typically sacrifice the precision of program analyses for efficiency. The alternative of performing the analysis for the whole program statically ignores the analysis of libraries (available only at runtime), and thereby generates imprecise results. To address these issues, in this article, we propose a two-step (static+JIT) analysis framework called precise-yet-efficient (PYE) that helps generate precise analysis-results at runtime at a very low cost. PYE achieves the twin objectives of precision and performance during JIT compilation by using a two-pronged approach: (i) It performs expensive analyses during static compilation, while accounting for the unavailability of the runtime libraries by generating partial results, in terms of conditional values, for the input application. (ii) During JIT compilation, PYE resolves the conditions associated with these values, using the pre-computed conditional values for the libraries, to generate the final results. We have implemented the static and the runtime components of PYE in the Soot optimization framework and the OpenJDK HotSpot Server Compiler (C2), respectively. We demonstrate the usability of PYE by instantiating it to perform two context-, flow-, and field-sensitive heap-based analyses: (i) points-to analysis for null-dereference-check elimination; and (ii) escape analysis for synchronization elimination. We evaluate these instantiations against their corresponding state-of-the-art implementations in C2 over a wide range of benchmarks. The extensive evaluation results show that our strategy works quite well and fulfills both the promises it makes: enhanced precision while maintaining efficiency during JIT compilation.read more
Citations
More filters
Proceedings ArticleDOI
How (not) to write Java pointer analyses after 2020
TL;DR: This paper summarizes some such learnings from its author's research to help readers beat the state-of-the-art in (Java) pointer analysis, as they move into their research careers beyond 2020.
Journal ArticleDOI
Can We Run in Parallel? Automating Loop Parallelization for TornadoVM
TL;DR: This paper proposes AutoTornado, a first of its kind static+JIT loop parallelizer for Java programs that parallelizes loops for heterogeneous architectures using TornadoVM (a Graal-based VM that supports insertion of @Parallel constructs for loop parallelization).
Proceedings ArticleDOI
A Study of the Impact of Callbacks in Staged Static+Dynamic Partial Analysis
TL;DR: In this article , the authors propose techniques to enhance the generation of dependencies in the presence of dynamic features such as callbacks, and find out the percentage of objects and methods that may get affected by callbacks.
Book ChapterDOI
Principles of Staged Static+Dynamic Partial Analysis
Aditya Anand,Manas Thakur +1 more
TL;DR: In this paper , the authors propose a static+dynamic partial analysis model based on the classic theory of partial evaluation to generate precise whole-program analysis results without incurring analysis cost in JIT compilers.
References
More filters
Book
Cryptography: Theory and Practice
TL;DR: The object of the book is to produce a general, comprehensive textbook that treats all the essential core areas of cryptography.
Book
Advanced Compiler Design and Implementation
TL;DR: Advanced Compiler Design and Implementation by Steven Muchnick Preface to Advanced Topics
Proceedings ArticleDOI
The DaCapo benchmarks: java benchmarking development and analysis
Stephen M. Blackburn,Robin Garner,Chris Hoffmann,Asjad M. Khang,Kathryn S. McKinley,Rotem Bentzur,Amer Diwan,Daniel Feinberg,Daniel Frampton,Samuel Z. Guyer,Martin Hirzel,Antony L. Hosking,Maria Jump,Han Lee,J. Eliot B. Moss,Aashish Phansalkar,Darko Stefanovic,Thomas VanDrunen,Daniel von Dincklage,Ben Wiedermann +19 more
TL;DR: This paper recommends benchmarking selection and evaluation methodologies, and introduces the DaCapo benchmarks, a set of open source, client-side Java benchmarks that improve over SPEC Java in a variety of ways, including more complex code, richer object behaviors, and more demanding memory system requirements.
Proceedings ArticleDOI
Points-to analysis in almost linear time
TL;DR: This is the asymptotically fastest non-trivial interprocedural points-to analysis algorithm yet described and is based on a non-standard type system for describing a universally valid storage shape graph for a program in linear space.
Program Analysis and Specialization for the C Programming Language
Lars Ole Andersen,Peter Lee +1 more
TL;DR: This thesis presents an automatic partial evaluator for the Ansi C programming language, and proves that partial evaluation at most can accomplish linear speedup, and develops an automatic speedup analysis.