this is for holding javascript data
Camil Demetrescu edited approach.tex
over 8 years ago
Commit id: 144621991e390a5927246d6ad81558e971923321
deletions | additions
diff --git a/approach.tex b/approach.tex
index 357d425..910825f 100644
--- a/approach.tex
+++ b/approach.tex
...
\subsection{Overview}
\label{ss:overview}
Consider the generic OSR scenario shown in Figure~\ref{fi:osr-dynamics}. A base function \textsf{f} is executed and it can either terminate normally (dashed lines), or an OSR event may transfer control to a variant \textsf{f'}. The decision of whether an OSR should be fired at a given point \textsf{L} is based on an {\em OSR condition}. A typical example is a guard testing whether a function \textsf{f} has become unsafe and
a fallback execution needs to fall back to a safe version
\textsf{f'} is in order. \textsf{f'}. This scenario includes deoptimization of functions generated with aggressive speculative optimizations. Another example is a profile counter reaching a certain hotness threshold, which indicates that \textsf{f} is taking longer than expected and is worth optimizing. This is a frequent scenario in JIT-based virtual machines.
Classical OSR implementations adjust the stack so that execution can continue in \textsf{f'} with the current frame \mynote{add citations}. This requires manipulating the program at machine code level and is highly ABI- and compiler-dependent. A simpler approach, which we follow in this article, consists of creating a new frame every time an OSR is fired, essentially regarding an OSR transition as a function call \mynote{cite WebKit and McVM}.
...