Skip to content

EngineeringSoftware/jittery

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

Engine Tracker API
HotSpot bugs.openjdk.org JIRA REST API
Graal github.com/oracle/graal GitHub Search API
SpiderMonkey bugzilla.mozilla.org Bugzilla REST API

Usage

Run from repo root:

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

Arguments:

Argument Description Default
--engine hotspot, graal, spidermonkey
--query Query preset (jit-perf) or custom:...
--offset Pagination offset 0
--max_limit Maximum number of results to fetch 500

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:

Engine CSV dataset
HotSpot empirical/data/HotSpot.csv
Graal empirical/data/Graal.csv
V8 empirical/data/V8.csv
SpiderMonkey empirical/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 ID Java reproducer Bug report
JDK-8345766 bugs/JDK-8345766.java JDK-8345766
JDK-8346989 bugs/JDK-8346989.java JDK-8346989
JDK-8349364 bugs/JDK-8349364.java JDK-8349364
JDK-8349401 bugs/JDK-8349401.java JDK-8349401
JDK-8349452 bugs/JDK-8349452.java JDK-8349452
JDK-8350494 bugs/JDK-8350494.java JDK-8350494
JDK-8350720 bugs/JDK-8350720.java JDK-8350720
JDK-8353638 bugs/JDK-8353638.java JDK-8353638
Graal-10565 bugs/Graal-10565.java Graal-10565
Graal-10609 bugs/Graal-10609.java Graal-10609
Graal-10776 bugs/Graal-10776.java Graal-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

License

Stars

Watchers

Forks

Releases

No releases published

Packages