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