this is for holding javascript data
Daniele Cono D'Elia edited case-study.tex
over 8 years ago
Commit id: 7ecba55ef2629d791549176da09fa0d269a40c9f
deletions | additions
diff --git a/case-study.tex b/case-study.tex
index 4d11f84..66ea1f7 100644
--- a/case-study.tex
+++ b/case-study.tex
...
\end{enumerate}
\end{enumerate}
The analysis pass is integrated in McVM's analysis manager and identifies optimization opportunities for functions containing {\tt feval} instructions. A function becomes a candidate for optimization when at least one of its {\tt feval} calls is inside a loop. We then group {\tt feval} instructions whose first argument is reached by the same definition, using reaching definition information already computed by the analysis manager for previous optimizations.
Grouping For each group we mark for instrumentation only those instructions
allows [...] that dominate the others, so that the function can be optimized as early as possible at run-time.
The analysis pass is also able to determine whether the value of the argument can change across two executions of the same {\tt feval} instruction,
and thus
discriminate whether discriminating when a run-time guard
should must be inserted during the run-time optimization phase. Compared to the OSR-based approach by Lameed and Hendren, our solution is cheaper because the types for the other arguments do not need to be cached or guarded: as we will see later, the type inference engine will compute the most accurate yet
still sound type information in the analysis of the
profile-driven generated optimized IIR
function. where direct calls are used.
When the IIR compiler processes
an annotated {\tt feval} instruction, it will store in the metadata of the function version being compiled a copy of its variable map (i.e., a map between IIR and IR objects), the current {\tt llvm::BasicBlock*} created for the call and the {\tt llvm::Value*} object corresponding to the first argument for the {\tt feval}. This information is then used by the helper component for OSR point insertion.
The helper will process the metadata and insert an open OSR point [...]