scispace - formally typeset
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

Aditya Anand
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

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

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

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.