Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

2 Commits

Repository files navigation

Jittery

Jittery is the first (research) work on understanding and detecting performance bugs in just-in-time (JIT) compilers.

Our work was published at OOPSLA'26. This repository contains: (a) crawler that we used to obtain the raw data for the study (here), (b) data we collected after manual inspection and used in our empirical study (here), and (c) list of bugs discovered by our tool (Jittery) in Oracle JIT compilers (here). (Note that the tool itself, which relies on LeJit is currently not avaialble.)

Performance Bug Crawler

The crawler fetches raw bug reports from public trackers and writes it to a local JSONL file for later analysis.

The crawler is available in empirical/script/crawler.py.

Requirements

  • Python 3.9+ (3.10/3.11 recommended)

Install Python dependencies:

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Supported engines

EngineTrackerAPI
HotSpotbugs.openjdk.orgJIRA REST API
Graalgithub.com/oracle/graalGitHub Search API
SpiderMonkeybugzilla.mozilla.orgBugzilla REST API

Usage

Run from repo root:

python empirical/script/crawler.py --engine <engine> --query <query> [--offset N] [--max_limit N]

Arguments:

ArgumentDescriptionDefault
--enginehotspot, graal, spidermonkey
--queryQuery preset (jit-perf) or custom:...
--offsetPagination offset0
--max_limitMaximum number of results to fetch500

Query presets

Each engine has a jit-perf preset that reproduces the queries documented in empirical/data/queries.md (V8 issue tracker does not support public API access, please refer the documentation for the query we use and view it on the website).

Examples

# Preset JIT performance bugs
python empirical/script/crawler.py --engine [hotspot|graal|spidermonkey] --query jit-perf
# HotSpot with custom JQL
python empirical/script/crawler.py --engine hotspot --query "custom:<JQL>"# Graal with custom GitHub search
python empirical/script/crawler.py --engine graal --query "custom:repo:oracle/graal is:issue label:performance"# SpiderMonkey with custom Bugzilla params (JSON)
python empirical/script/crawler.py --engine spidermonkey --query 'custom:{"product":"Core","component":"JavaScript Engine: JIT","resolution":"FIXED"}'

Outputs (what you should see)

On success, the crawler writes:

  • Raw JSONL: empirical/script/raw_data/<engine>_<query>_<offset>_<end>_bugs.jsonl
    • Each line is one JSON object of a bug report.
  • Logs: empirical/script/.log/<timestamp>.log

Performance Bug Data

empirical/data/ holds CSV datasets used in the empirical study:

EngineCSV dataset
HotSpotempirical/data/HotSpot.csv
Graalempirical/data/Graal.csv
V8empirical/data/V8.csv
SpiderMonkeyempirical/data/SpiderMonkey.csv

empirical/data/ALL.yml holds the unified dataset for the empirical study.

Bugs Found by Jittery

In bugs/ we provide minimal Java programs that can be used to reproduce bugs that we detected with Jittery.

Bug IDJava reproducerBug report
JDK-8345766bugs/JDK-8345766.javaJDK-8345766
JDK-8346989bugs/JDK-8346989.javaJDK-8346989
JDK-8349364bugs/JDK-8349364.javaJDK-8349364
JDK-8349401bugs/JDK-8349401.javaJDK-8349401
JDK-8349452bugs/JDK-8349452.javaJDK-8349452
JDK-8350494bugs/JDK-8350494.javaJDK-8350494
JDK-8350720bugs/JDK-8350720.javaJDK-8350720
JDK-8353638bugs/JDK-8353638.javaJDK-8353638
Graal-10565bugs/Graal-10565.javaGraal-10565
Graal-10609bugs/Graal-10609.javaGraal-10609
Graal-10776bugs/Graal-10776.javaGraal-10776

Citation

If you use this artifact in your work or you end up exploring topics related to performance of JIT compilers, please cite:

@inproceedings{yi26understanding,
author = {Yi, Zijian and Ding, Cheng and Shi, August and Gligoric, Milos},
title = {Understanding and Finding {JIT} Compiler Performance Bugs},
booktitle = {International Conference on Object-Oriented Programming Systems, Languages, and Applications},
note = {To appear},
year = {2026},
}

About

Performance bugs in Java JIT compilers

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages