paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Understanding and Finding JIT Compiler Performance Bugs

理解并发现 JIT 编译器性能缺陷
OOPSLA 10(OOPSLA1)2026匹配度 2/10 · 论文研究 JIT 编译器性能缺陷的测试与检测,属于编译器测试/调试方向,而用户的核心方向是静态分析、LLM/Agent 与程序分析(含浮点、贝叶斯)的交叉,二者主题重叠很小。引用 0 inbox
Zijian Yi, Cheng Ding, August Shi, Milos Gligoric
crossref: 2026-09-10

AI 速览

一句话:首个系统研究 JIT 编译器性能缺陷的工作,提出分层差分性能测试并发现多个未知缺陷。

JIT 编译器在运行时依据动态剖析数据优化并生成原生代码,是 Java、JavaScript 等托管语言的关键组件。已有工作多检测功能缺陷,即生成代码语义不一致,却未针对会导致运行时严重性能退化的性能缺陷;这类缺陷因 JIT 的复杂性和动态性而难以发现。本文首先对四种主流 Java 与 JavaScript JIT 编译器中的 191 个缺陷报告进行人工分析,总结性能缺陷的常见触发条件、表现形式与根因。基于这些发现,作者提出分层差分性能测试这一轻量级自动检测技术,并实现工具 Jittery,加入测试优先级排序和误报/重复结果自动过滤等实用优化。评估表明,优先级排序可在不损失检测能力的情况下减少 92.40% 测试时间;Jittery 在 Oracle HotSpot 和 Graal 中发现 12 个此前未知的性能缺陷,其中 11 个被确认,6 个已被开发者修复。

问题
现有 JIT 编译器缺陷检测主要关注功能正确性,缺乏对运行时性能缺陷的系统理解与自动检测方法;这类缺陷会造成显著性能退化且难以复现和定位。
方法
作者先对四种 Java/JavaScript JIT 编译器的 191 个性能缺陷报告进行实证分析,归纳触发条件、表现模式和根因,再提出分层差分性能测试并实现工具 Jittery,结合测试优先级排序与误报/重复过滤。
评估
通过实证研究总结 JIT 性能缺陷特征,并在 Oracle HotSpot 和 Graal 上使用 Jittery 评估检测效果;结果显示测试优先级排序减少 92.40% 测试时间,且发现 12 个未知性能缺陷,11 个被确认、6 个被修复。
原文摘要(Abstract)

Just-in-time (JIT) compilers are key components for many popular programming languages with managed runtimes (e.g., Java and JavaScript). JIT compilers perform optimizations and generate native code at runtime based on dynamic profiling data, to improve the execution performance of the running application. Like other software systems, JIT compilers might have software bugs, and prior work has developed a number of automated techniques for detecting functional bugs (i.e., generated native code does not semantically match that of the original code). However, no prior work has targeted JIT compiler performance bugs, which can cause significant performance degradation while an application is running. These performance bugs are challenging to detect due to the complexity and dynamic nature of JIT compilers. In this paper, we present the first work on demystifying JIT performance bugs. First, we perform an empirical study across four popular JIT compilers for Java and JavaScript. Our manual analysis of 191 bug reports uncovers common triggers of performance bugs, patterns in which these bugs manifest, and their root causes. Second, informed by these insights, we propose layered differential performance testing, a lightweight technique to automatically detect JIT compiler performance bugs, and implement it in a tool called Jittery . We incorporate practical optimizations into Jittery such as test prioritization, which reduces testing time by 92.40% without compromising bug-detection capability, and automatic filtering of false-positives and duplicates, which substantially reduces manual inspection effort. Using Jittery , we discovered 12 previously unknown performance bugs in the Oracle HotSpot and Graal JIT compilers, with 11 confirmed and 6 fixed by developers.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot3824,
  title = {Understanding and Finding JIT Compiler Performance Bugs},
  author = {Zijian Yi and Cheng Ding and August Shi and Milos Gligoric},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {10},
  number = {OOPSLA1},
  year = {2026},
  doi = {10.1145/3798245}
}