Understanding and Finding JIT Compiler Performance Bugs
Zijian Yi, Cheng Ding, August Shi, Milos Gligoric

TL;DR
This paper investigates JIT compiler performance bugs, analyzing their causes and patterns, and introduces Jittery, a tool that automatically detects such bugs, leading to the discovery of new bugs and improvements in detection efficiency.
Contribution
It provides the first empirical study of JIT performance bugs and proposes a novel layered differential testing approach with a practical tool, Jittery, for automatic bug detection.
Findings
Analyzed 191 bug reports across four JIT compilers.
Developed Jittery, reducing testing time by 92.40%.
Discovered 12 new performance bugs, with 11 confirmed and 6 fixed.
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,…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware System Performance and Reliability · Software Testing and Debugging Techniques · Security and Verification in Computing
