Javascript must be enabled to continue!
Formally Verified Native Code Generation in an Effectful JIT: Turning the CompCert Backend into a Formally Verified JIT Compiler
View through CrossRef
Modern Just-in-Time compilers (or JITs) typically interleave several mechanisms to execute a program. For faster startup times and to observe the initial behavior of an execution, interpretation can be initially used. But after a while, JITs dynamically produce native code for parts of the program they execute often. Although some time is spent compiling dynamically, this mechanism makes for much faster times for the remaining of the program execution. Such compilers are complex pieces of software with various components, and greatly rely on a precise interplay between the different languages being executed, including on-stack-replacement. Traditional static compilers like CompCert have been mechanized in proof assistants, but JITs have been scarcely formalized so far, partly due to their impure nature and their numerous components. This work presents a model JIT with dynamic generation of native code, implemented and formally verified in Coq. Although some parts of a JIT cannot be written in Coq, we propose a proof methodology to delimit, specify
and reason on the impure effects of a JIT. We argue that the daunting task of formally verifying a complete JIT should draw on existing proofs of native code generation. To this end, our work successfully reuses CompCert and its correctness proofs during dynamic compilation.
Finally, our prototype can be extracted and executed.
Association for Computing Machinery (ACM)
Title: Formally Verified Native Code Generation in an Effectful JIT: Turning the CompCert Backend into a Formally Verified JIT Compiler
Description:
Modern Just-in-Time compilers (or JITs) typically interleave several mechanisms to execute a program.
For faster startup times and to observe the initial behavior of an execution, interpretation can be initially used.
But after a while, JITs dynamically produce native code for parts of the program they execute often.
Although some time is spent compiling dynamically, this mechanism makes for much faster times for the remaining of the program execution.
Such compilers are complex pieces of software with various components, and greatly rely on a precise interplay between the different languages being executed, including on-stack-replacement.
Traditional static compilers like CompCert have been mechanized in proof assistants, but JITs have been scarcely formalized so far, partly due to their impure nature and their numerous components.
This work presents a model JIT with dynamic generation of native code, implemented and formally verified in Coq.
Although some parts of a JIT cannot be written in Coq, we propose a proof methodology to delimit, specify
and reason on the impure effects of a JIT.
We argue that the daunting task of formally verifying a complete JIT should draw on existing proofs of native code generation.
To this end, our work successfully reuses CompCert and its correctness proofs during dynamic compilation.
Finally, our prototype can be extracted and executed.
Related Results
JIT production, JIT supply and performance: investigating the moderating effects
JIT production, JIT supply and performance: investigating the moderating effects
PurposeThe purpose of this paper is to study whether just in time (JIT) supply practices interact with JIT production practices by positively moderating the relationship between JI...
Formally verified compilation of low-level C code
Formally verified compilation of low-level C code
Compilation formellement vérifiée de code C de bas-niveau
Cette thèse présente une extension du compilateur CompCert permettant de fournir des garanties formelles d...
DRUID : Metacompilation of Baseline JIT Compilers
DRUID : Metacompilation of Baseline JIT Compilers
DRUID : Métacompilation des compilateurs JIT de base
Les machines virtuelles (VM) combinent des interprètes et des compilateurs à la volée (JIT) pour obtenir de bon...
Formal Verification of an SSA-Based Middle-End for CompCert
Formal Verification of an SSA-Based Middle-End for CompCert
CompCert is a formally verified compiler that generates compact and efficient code for a large subset of the C language. However, CompCert foregoes using SSA, an intermediate repre...
Impacts of man-made structures on marine biodiversity and species status - native & non-native species
Impacts of man-made structures on marine biodiversity and species status - native & non-native species
<p>Coastal environments are exposed to anthropogenic activities such as frequent marine traffic and restructuring, i.e., addition, removal or replacing with man-made structur...
The verified CakeML compiler backend
The verified CakeML compiler backend
AbstractThe CakeML compiler is, to the best of our knowledge, the most realistic verified compiler for a functional programming language to date. The architecture of the compiler, ...
EDI Implementation in JIT and Non‐JIT Manufacturing Firms:
A Comparative Study
EDI Implementation in JIT and Non‐JIT Manufacturing Firms:
A Comparative Study
To compete successfully in the global market, firms are adopting
new technologies and manufacturing strategies. The Just‐in‐Time (JIT)
philosophy and Electronic Data Interchange (E...
EDI Implementation: A Comparative Study of JIT and Non‐JIT Manufacturing Firms
EDI Implementation: A Comparative Study of JIT and Non‐JIT Manufacturing Firms
To compete successfully in the global market, firms are adopting
new technologies and manufacturing strategies. The just‐in‐time (JIT)
philosophy and electronic data interchange (E...

