Java JIT Testing with Template Extraction

Fuente: arXiv
Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: Zang, Zhiqiang, Yu, Fu-Yao, Thimmaiah, Aditya, Shi, August, Gligoric, Milos
Format: Preprint
Veröffentlicht: 2024
Schlagworte:
Online-Zugang:
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
_version_ 1866911947783405568
author Zang, Zhiqiang
Yu, Fu-Yao
Thimmaiah, Aditya
Shi, August
Gligoric, Milos
author_facet Zang, Zhiqiang
Yu, Fu-Yao
Thimmaiah, Aditya
Shi, August
Gligoric, Milos
contents We present LeJit, a template-based framework for testing Java just-in-time (JIT) compilers. Like recent template-based frameworks, LeJit executes a template -- a program with holes to be filled -- to generate concrete programs given as inputs to Java JIT compilers. LeJit automatically generates template programs from existing Java code by converting expressions to holes, as well as generating necessary glue code (i.e., code that generates instances of non-primitive types) to make generated templates executable. We have successfully used LeJit to test a range of popular Java JIT compilers, revealing five bugs in HotSpot, nine bugs in OpenJ9, and one bug in GraalVM. All of these bugs have been confirmed by Oracle and IBM developers, and 11 of these bugs were previously unknown, including two CVEs (Common Vulnerabilities and Exposures). Our comparison with several existing approaches shows that LeJit is complementary to them and is a powerful technique for ensuring Java JIT compiler correctness.
format Preprint
id arxiv_https___arxiv_org_abs_2403_11281
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Java JIT Testing with Template Extraction
Zang, Zhiqiang
Yu, Fu-Yao
Thimmaiah, Aditya
Shi, August
Gligoric, Milos
Software Engineering
We present LeJit, a template-based framework for testing Java just-in-time (JIT) compilers. Like recent template-based frameworks, LeJit executes a template -- a program with holes to be filled -- to generate concrete programs given as inputs to Java JIT compilers. LeJit automatically generates template programs from existing Java code by converting expressions to holes, as well as generating necessary glue code (i.e., code that generates instances of non-primitive types) to make generated templates executable. We have successfully used LeJit to test a range of popular Java JIT compilers, revealing five bugs in HotSpot, nine bugs in OpenJ9, and one bug in GraalVM. All of these bugs have been confirmed by Oracle and IBM developers, and 11 of these bugs were previously unknown, including two CVEs (Common Vulnerabilities and Exposures). Our comparison with several existing approaches shows that LeJit is complementary to them and is a powerful technique for ensuring Java JIT compiler correctness.
title Java JIT Testing with Template Extraction
topic Software Engineering
url https://arxiv.org/abs/2403.11281