Demo Data from VLDB 2026 / reviewers in the wild / expert
Gilles Duboscq
dblp:120/5119
· DBLP profile ↗
5ranked-venue papers
0as first author
0since 2021 · last 2019
0000-0003-3261-4309ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 4Systems, architecture and hardware · 2
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
3 papers |
Runtime systems and virtual machines · 48% Compilers and program optimization · 32% Empirical software engineering · 14% |
Topics — the 9 heaviest of 9, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation |
0.7 | 2 | 2019 | Renaissance: benchmarking suite for parallel applications on the JVM · PLDI 2019 Practical partial evaluation for high-performance dynamic language runtimes · PLDI 2017 |
Empirical software engineering
benchmarking |
0.4 | 1 | 2019 | Renaissance: benchmarking suite for parallel applications on the JVM · PLDI 2019 |
Compilers and program optimization
compiler optimization |
0.4 | 1 | 2019 | Renaissance: benchmarking suite for parallel applications on the JVM · PLDI 2019 |
Runtime systems and virtual machines › virtual machine implementation
java virtual machine |
0.4 | 1 | 2019 | Renaissance: benchmarking suite for parallel applications on the JVM · PLDI 2019 |
Runtime systems and virtual machines › dynamic language implementation
dynamic language runtime |
0.3 | 1 | 2017 | Practical partial evaluation for high-performance dynamic language runtimes · PLDI 2017 |
Compilers and program optimization
partial evaluation |
0.3 | 1 | 2017 | Practical partial evaluation for high-performance dynamic language runtimes · PLDI 2017 |
Compilers and program optimization
intermediate representation |
0.2 | 1 | 2015 | Snippets: Taking the High Road to a Low Level · ACM Trans. Archit. Code Optim. 2015 |
Concurrent programming
concurrency primitives |
0.1 | 1 | 2019 | Renaissance: benchmarking suite for parallel applications on the JVM · PLDI 2019 |
Programming languages and type systems
dynamic languages |
0.1 | 1 | 2017 | Practical partial evaluation for high-performance dynamic language runtimes · PLDI 2017 |
Methods — techniques the papers use, named apart from their topics
benchmarking · 0.4speculation · 0.3profiling · 0.3partial evaluation · 0.3domain-specific language embedding · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2019 | An Optimization-Driven Incremental Inline Substitution Algorithm for Just-in-Time CompilersabstractInlining is one of the most important compiler optimizations. It reduces call overheads and widens the scope of other optimizations. But, inlining is somewhat of a black art of an optimizing compiler, and was characterized as a computationally intractable problem. Intricate heuristics, tuned during countless hours of compiler engineering, are often at the core of an inliner implementation. And despite decades of research, well established inlining heuristics are still missing. In this paper, we describe a novel inlining algorithm for JIT compilers that incrementally explores a program's call graph, and alternates between inlining and optimizations. We devise three novel heuristics that guide our inliner: adaptive decision thresholds, callsite clustering, and deep inlining trials. We implement the algorithm inside Graal, a dynamic JIT compiler for the HotSpot JVM. We evaluate our algorithm on a set of industry-standard benchmarks, including Java DaCapo, Scalabench, Spark-Perf, STMBench7 and other benchmarks, and we conclude that it significantly improves performance, surpassing state-of-the-art inlining approaches with speedups ranging from 5% up to 3×. Aleksandar Prokopec, Gilles Duboscq, David Leopoldseder, Thomas Würthinger |
CGO | 2 |
| 2019 | Renaissance: benchmarking suite for parallel applications on the JVMabstractEstablished benchmark suites for the Java Virtual Machine (JVM), such as DaCapo, ScalaBench, and SPECjvm2008, lack workloads that take advantage of the parallel programming abstractions and concurrency primitives offered by the JVM and the Java Class Library. However, such workloads are fundamental for understanding the way in which modern applications and data-processing frameworks use the JVM's concurrency features, and for validating new just-in-time (JIT) compiler optimizations that enable more efficient execution of such workloads. We present Renaissance, a new benchmark suite composed of modern, real-world, concurrent, and object-oriented workloads that exercise various concurrency primitives of the JVM. We show that the use of concurrency primitives in these workloads reveals optimization opportunities that were not visible with the existing workloads. We use Renaissance to compare performance of two state-of-the-art, production-quality JIT compilers (HotSpot C2 and Graal), and show that the performance differences are more significant than on existing suites such as DaCapo and SPECjvm2008. We also use Renaissance to expose four new compiler optimizations, and we analyze the behavior of several existing ones. We use Renaissance to compare performance of two state-of-the-art, production-quality JIT compilers (HotSpot C2 and Graal), and show that the performance differences are more significant than on existing suites such as DaCapo and SPECjvm2008. We also use Renaissance to expose four new compiler optimizations, and we analyze the behavior of several existing ones. Aleksandar Prokopec, Andrea Rosà, David Leopoldseder, Gilles Duboscq, Petr Tuma 0001, Martin Studener, Lubomír Bulej, Yudi Zheng, Alex Villazón, Doug Simon, Thomas Würthinger, Walter Binder |
PLDI | 4 |
| 2017 | Practical partial evaluation for high-performance dynamic language runtimesabstractMost high-performance dynamic language virtual machines duplicate language semantics in the interpreter, compiler, and runtime system. This violates the principle to not repeat yourself. In contrast, we define languages solely by writing an interpreter. The interpreter performs specializations, e.g., augments the interpreted program with type information and profiling information. Compiled code is derived automatically using partial evaluation while incorporating these specializations. This makes partial evaluation practical in the context of dynamic languages: It reduces the size of the compiled code while still compiling all parts of an operation that are relevant for a particular program. When a speculation fails, execution transfers back to the interpreter, the program re-specializes in the interpreter, and later partial evaluation again transforms the new state of the interpreter to compiled code. We evaluate our approach by comparing our implementations of JavaScript, Ruby, and R with best-in-class specialized production implementations. Our general-purpose compilation system is competitive with production systems even when they have been heavily optimized for the one language they support. For our set of benchmarks, our speedup relative to the V8 JavaScript VM is 0.83x, relative to JRuby is 3.8x, and relative to GNU R is 5x. Thomas Würthinger, Christian Wimmer, Christian Humer, Andreas Wöß, Lukas Stadler, Chris Seaton, Gilles Duboscq, Doug Simon, Matthias Grimmer |
PLDI | 7 |
| 2015 | Snippets: Taking the High Road to a Low LevelabstractWhen building a compiler for a high-level language, certain intrinsic features of the language must be expressed in terms of the resulting low-level operations. Complex features are often expressed by explicitly weaving together bits of low-level IR, a process that is tedious, error prone, difficult to read, difficult to reason about, and machine dependent. In the Graal compiler for Java, we take a different approach: we use snippets of Java code to express semantics in a high-level, architecture-independent way. Two important restrictions make snippets feasible in practice: they are compiler specific, and they are explicitly prepared and specialized. Snippets make Graal simpler and more portable while still capable of generating machine code that can compete with other compilers of the Java HotSpot VM. Doug Simon, Christian Wimmer, Bernhard Urban, Gilles Duboscq, Lukas Stadler, Thomas Würthinger |
ACM Trans. Archit. Code Optim. | 4 |
| 2012 | Self-optimizing AST interpretersabstractAn abstract syntax tree (AST) interpreter is a simple and natural way to implement a programming language. However, it is also considered the slowest approach because of the high overhead of virtual method dispatch. Language implementers therefore define bytecodes to speed up interpretation, at the cost of introducing inflexible and hard to maintain bytecode formats. We present a novel approach to implementing AST interpreters in which the AST is modified during interpretation to incorporate type feedback. This tree rewriting is a general and powerful mechanism to optimize many constructs common in dynamic programming languages. Our system is implemented in Java and uses the static typing and primitive data types of Java elegantly to avoid the cost of boxed representations of primitive values in dynamic programming languages. Thomas Würthinger, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Doug Simon, Christian Wimmer |
DLS | 4 |