this is for holding javascript data
Daniele Cono D'Elia edited abstract.tex
over 8 years ago
Commit id: 3ad1cea242a406d0648e51744852577d20df8a7c
deletions | additions
diff --git a/abstract.tex b/abstract.tex
index be05da4..51169a0 100644
--- a/abstract.tex
+++ b/abstract.tex
...
On-Stack Replacement (OSR) is a technique that allows to
interrupt halt the execution of a function and continue from the same program state with a different version of the function. OSR is often used in virtual machines to interrupt a long-running function and recompile it at a higher optimization level, or to
invalidate no longer holding replace it with a different one when a speculative
assumptions assumption made during
the its compilation
of that function. no longer holds.
In this paper we present a novel framework to perform OSR transitions. Compared to extant OSR techniques, our approach is platform-independent as transitions are encoded entirely at the Intermediate Representation (IR)
level, level; it supports OSR-point insertion at arbitrary locations in a function, and it allows a function version reached via OSR to fire an OSR itself, either to a more optimized version or to a less optimized one from which it was derived.
We implement and evaluate our technique in the LLVM compiler infrastructure, which is nowadays being increasingly used as Just-In-Time (JIT) compiler in
several virtual machines for dynamic languages such as Javascript, MATLAB, Python and Ruby. We
thus then present a case study on the integration of our technique in the McVM virtual machine for MATLAB, showing interesting speedups
achieved from the optimization of a popular construct of the language.