Just-in-time compilation ≈ Just-in-time compilation
View article
DR.JIT Open
DR.JIT is a new just-in-time compiler for physically based rendering and its derivative. DR.JIT expedites research on these topics in two ways: first, it traces high-level simulation code (e.g., written in Python) and aggressively simplifi…
View article
Compiler-Assisted Code Randomization Open
Despite decades of research on software diversification, only address space layout randomization has seen widespread adoption. Code randomization, an effective defense against return-oriented programming exploits, has remained an academic …
View article
Initialize once, start fast: application initialization at build time Open
Arbitrary program extension at run time in language-based VMs, e.g., Java's dynamic class loading, comes at a startup cost: high memory footprint and slow warmup. Cloud computing amplifies the startup overhead. Microservices and serverless…
View article
HHVM JIT: a profile-guided, region-based compiler for PHP and Hack Open
Dynamic languages such as PHP, JavaScript, Python, and Ruby have been gaining popularity over the last two decades. A very popular domain for these languages is web development, including server-side development of large-scale websites. As…
View article
HPVM Open
We propose a parallel program representation for heterogeneous systems, designed to enable performance portability across a wide range of popular parallel hardware, including GPUs, vector instruction sets, multicore CPUs and potentially FP…
View article
Memento mori: dynamic allocation-site-based optimizations Open
Languages that lack static typing are ubiquitous in the world of mobile and web applications. The rapid rise of larger applications like interactive web GUIs, games, and cryptography presents a new range of implementation challenges for mo…
View article
AnyDSL: a partial evaluation framework for programming high-performance libraries Open
This paper advocates programming high-performance code using partial evaluation. We present a clean-slate programming system with a simple, annotation-based, online partial evaluator that operates on a CPS-style intermediate representation…
View article
Stream fusion, to completeness Open
Stream processing is mainstream (again): Widely-used stream libraries are now available for virtually all modern OO and functional languages, from Java to C# to Scala to OCaml to Haskell. Yet expressivity and performance are still lacking.…
View article
A fast in-place interpreter for WebAssembly Open
WebAssembly (Wasm) is a compact, well-specified bytecode format that offers a portable compilation target with near-native execution speed. The bytecode format was specifically designed to be fast to parse, validate, and compile, positioni…
View article
Pythran: enabling static optimization of scientific Python programs Open
Pythran is an open source static compiler that turns modules written in a subset of Python language into native ones. Assuming that scientific modules do not rely much on the dynamic features of the language, it trades them for powerful, p…
View article
Tidy Tuples and Flying Start: fast compilation and fast execution of relational queries in Umbra Open
Although compiling queries to efficient machine code has become a common approach for query execution, a number of newly created database system projects still refrain from using compilation. It is sometimes claimed that the intricacies of…
View article
Tracing vs. partial evaluation: comparing meta-compilation approaches for self-optimizing interpreters Open
Tracing and partial evaluation have been proposed as meta-compilation techniques for interpreters. They promise that programs executing on simple interpreters can reach per-formance of the same order of magnitude as if they would be execut…
View article
Formally Verified Native Code Generation in an Effectful JIT: Turning the CompCert Backend into a Formally Verified JIT Compiler Open
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, JI…
View article
JIT Leaks: Inducing Timing Side Channels through Just-In-Time Compilation Open
Side-channel vulnerabilities in software are caused by an observable imbalance in resource usage across different program paths. We show that just-in-time (JIT) compilation, which is crucial to the runtime performance of modern interpreted…
View article
JavaScript AOT compilation Open
International audience
View article
Translation Validation for JIT Compiler in the V8 JavaScript Engine Open
We present TurboTV, a translation validator for the JavaScript (JS) just-in-time (JIT) compiler of V8. While JS engines have become a crucial part of various software systems, their emerging adaption of JIT compilation makes it increasingl…
View article
Gerenuk Open
Big Data systems are typically implemented in object-oriented languages such as Java and Scala due to the quick development cycle they provide. These systems are executed on top of a managed runtime such as the Java Virtual Machine (JVM), …
View article
Simple and Effective Type Check Removal through Lazy Basic Block Versioning Open
Dynamically typed programming languages such as JavaScript and Python defer type checking to run time. In order to maximize performance, dynamic language VM implementations must attempt to eliminate redundant dynamic type checks. However, …
View article
Verified compilation of CakeML to multiple machine-code targets Open
This paper describes how the latest CakeML compiler supports verified compilation down to multiple realistically modelled target architectures. In particular, we describe how the compiler definition, the various language semantics, and the…
View article
DeJITLeak: eliminating JIT-induced timing side-channel leaks Open
Timing side-channels can be exploited to infer secret information when the execution time of a program is correlated with secrets. Recent work has shown that Just-In-Time (JIT) compilation can introduce new timing side-channels in programs…
View article
Cakes That Bake Cakes: Dynamic Computation in CakeML Open
We have extended the verified CakeML compiler with a new language primitive, Eval, which permits evaluation of new CakeML syntax at runtime. This new implementation supports an ambitious form of compilation at runtime and dynamic execution…
View article
DiffStream: differential output testing for stream processing programs Open
High performance architectures for processing distributed data streams, such as Flink, Spark Streaming, and Storm, are increasingly deployed in emerging data-driven computing systems. Exploiting the parallelism afforded by such platforms, …
View article
Codon: A Compiler for High-Performance Pythonic Applications and DSLs Open
Domain-specific languages (DSLs) are able to provide intuitive high-level abstractions that are easy to work with while attaining better performance than general-purpose languages. Yet, implementing new DSLs is a burdensome task. As a resu…
View article
Of JavaScript AOT compilation performance Open
The fastest JavaScript production implementations use just-in-time (JIT) compilation and the vast majority of academic publications about implementations of dynamic languages published during the last two decades focus on JIT compilation. …
View article
ShareJIT: JIT code cache sharing across processes and its practical implementation Open
Just-in-time (JIT) compilation coupled with code caching are widely used to improve performance in dynamic programming language implementations. These code caches, along with the associated profiling data for the hot code, however, consume…
View article
Exploring Aspects of Polyglot High-Performance Virtual Machine GraalVM Open
Contemporary software often becomes vastly complex, and we are required to use a variety of technologies and different programming languages for its development. As interoperability between programming languages could cause high overhead r…
View article
Torchy: A Tracing JIT Compiler for PyTorch Open
Machine learning (ML) models keep getting larger and more complex. Whereas before models used to be represented by static data-flow graphs, they are now implemented via arbitrary Python code. Eager-mode frameworks, such as PyTorch, are now…
View article
CryptOpt: Verified Compilation with Randomized Program Search for Cryptographic Primitives Open
Most software domains rely on compilers to translate high-level code to multiple different machine languages, with performance not too much worse than what developers would have the patience to write directly in assembly language. However,…
View article
Robustly Safe Compilation, an Efficient Form of Secure Compilation Open
Security-preserving compilers generate compiled code that withstands target-level attacks such as alteration of control flow, data leaks, or memory corruption. Many existing security-preserving compilers are proven to be fully abstract, me…
View article
Collapsing towers of interpreters Open
Given a tower of interpreters, i.e., a sequence of multiple interpreters interpreting one another as input programs, we aim to collapse this tower into a compiler that removes all interpretive overhead and runs in a single pass. In the rea…