2 research outputs found
On Evaluating the Renaissance Benchmarking Suite: Variety, Performance, and Complexity
The recently proposed Renaissance suite is composed of modern, real-world,
concurrent, and object-oriented workloads that exercise various concurrency
primitives of the JVM. Renaissance was used to compare performance of two
stateof-the-art, production-quality JIT compilers (HotSpot C2 and Graal), and
to show that the performance differences are more significant than on existing
suites such as DaCapo and SPECjvm2008.
In this technical report, we give an overview of the experimental setup that
we used to assess the variety and complexity of the Renaissance suite, as well
as its amenability to new compiler optimizations. We then present the obtained
measurements in detail
Supporting On-Stack Replacement in Unstructured Languages by Loop Reconstruction and Extraction
On-stack replacement (OSR) is a common technique employed by dynamic
compilers to reduce program warm-up time. OSR allows switching from interpreted
to compiled code during the execution of this code. The main targets are long
running loops, which need to be represented explicitly, with dedicated
information about condition and body, to be optimized at run time. Bytecode
interpreters, however, represent control flow implicitly via unstructured jumps
and thus do not exhibit the required high-level loop representation. To enable
OSR also for jump-based - often called unstructured - languages, we propose the
partial reconstruction of loops in order to explicitly represent them in a
bytecode interpreter. Besides an outline of the general idea, we implemented
our approach in Sulong, a bytecode interpreter for LLVM bitcode, which allows
the execution of C/C++. We conducted an evaluation with a set of C benchmarks,
which showed speed-ups in warm-up of up to 9x for certain benchmarks. This
facilitates execution of programs with long-running loops in rarely called
functions, which would yield significant slowdown without OSR. While shown with
a prototype implementation, the overall idea of our approach is generalizable
for all bytecode interpreters.Comment: Accepted at MPLR 2019. This is the author's version of the wor