当前位置: X-MOL 学术ACM Trans. Program. Lang. Syst. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
PYE
ACM Transactions on Programming Languages and Systems ( IF 1.3 ) Pub Date : 2019-07-02 , DOI: 10.1145/3337794
Manas Thakur 1 , V. Krishna Nandivada 1
Affiliation  

Languages like Java and C# 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.

中文翻译:

派伊

Java 和 C# 等语言遵循两步编译过程:静态编译和即时 (JIT) 编译。随着 JIT 编译所花费的时间被添加到应用程序的执行时间中,JIT 编译器通常会牺牲程序分析的精度来提高效率。对整个程序执行分析的替代方法静态地忽略库的分析(仅在运行时可用),从而产生不精确的结果。为了解决这些问题,在本文中,我们提出了一种称为精确高效 (PYE) 的两步(静态+JIT)分析框架,它有助于在运行时以非常低的成本生成精确的分析结果。PYE 通过使用双管齐下的方法在 JIT 编译期间实现了精度和性能的双重目标:条件值, 用于输入应用程序。(ii) 在 JIT 编译期间,PYE 使用预先计算的库条件值来解析与这些值相关的条件,以生成最终结果。我们分别在 Soot 优化框架和 OpenJDK HotSpot Server Compiler (C2) 中实现了 PYE 的静态和运行时组件。我们通过实例化 PYE 以执行两个上下文、流和字段敏感的基于堆的分析来展示 PYE 的可用性:(i)用于消除空引用检查的指向分析;(ii) 同步消除的逃逸分析。我们在广泛的基准测试中根据它们在 C2 中相应的最新实现来评估这些实例。
更新日期:2019-07-02
down
wechat
bug