this is for holding javascript data
Camil Demetrescu edited osr-llvm.tex
over 8 years ago
Commit id: 4d3428177d0ac93c633d097b5a6fd45db4d43685
deletions | additions
diff --git a/osr-llvm.tex b/osr-llvm.tex
index 7a31250..1377ba3 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 1) builds an optimized version of {\tt isord} by inlining the comparator and 2) uses it to create the continuation function {\tt
isordto}. The stub is shown in \myfigure[...].
as isordto} shown in \myfigure\ref{fig:isordascto}.
\paragraph{Generation of the Continuation Function.}
[...]