this is for holding javascript data
Camil Demetrescu edited osr-llvm.tex
over 8 years ago
Commit id: 53e6705098fedf1d578bc5b4bbf6c59cc7c0dce6
deletions | additions
diff --git a/osr-llvm.tex b/osr-llvm.tex
index 1377ba3..82bf4e0 100644
--- a/osr-llvm.tex
+++ b/osr-llvm.tex
...
\paragraph{OSR Instrumentation.}
We use deferred compilation by instrumenting {\tt isord} in \tinyvm\ with an open OSR at the beginning of the loop body, as shown in \myfigure\ref{fig:isordfrom}. Portions added to the original code by OSR istrumentation are highlighted in grey.
%The figure illustrates how the original {\tt isord} code is instrumented by \tinyvm, highlighting in grey the added portions.
A new basic block is placed at the beginning of the loop body, incrementing the hotness counter {\tt p.osr} and jumping to an OSR-firing block if the counter reaches the threshold (1000 iterations in this example). The OSR block contains a tail call to the target generation stub, which receives as parameters the four live variables at the OSR point ({\tt v}, {\tt n}, {\tt i}, {\tt c}). Notice that maintaining the SSA form requires adjusting phi nodes. The stub (see \myfigure[...]) calls a code generator
that that: 1) builds an optimized version of {\tt isord} by inlining the
comparator comparator, and 2) uses it to create the continuation function {\tt isordto} shown in \myfigure\ref{fig:isordascto}.
\paragraph{Generation of Notice that instrumentation replaces the
Continuation Function.}
[...] function entry point, removes dead code, replaces live variables with the function parameters, and fixes phi nodes accordingly. Additions resulting from the IR instrumentation are in grey, while removals are struck-through.
\paragraph{x86-64 Lowering.}
[...]