Author: Carl Friedrich Bolz <cfb...@gmx.de>
Branch: extradoc
Changeset: r4846:cfdba0fcd517
Date: 2012-10-11 14:07 +0200
http://bitbucket.org/pypy/extradoc/changeset/cfdba0fcd517/

Log:    fill the slides with a first rough draft

diff --git a/talk/vmil2012/presentation/talk.tex 
b/talk/vmil2012/presentation/talk.tex
--- a/talk/vmil2012/presentation/talk.tex
+++ b/talk/vmil2012/presentation/talk.tex
@@ -90,6 +90,7 @@
       \begin{itemize}
           \item for interesting, commonly executed code paths
           \item produces a linear list of operations (trace)
+          \item automatically does (potentially deep) inlining
       \end{itemize}
       \item trace is optimized and then turned into machine code
   \end{itemize}
@@ -97,7 +98,19 @@
 
 \begin{frame}
   \frametitle{Guards}
-
+  \begin{itemize}
+      \item Points of control flow divergence are marked with guards
+      \item Operations that check whether conditions are still true
+      \item When a guard fails, execution of the trace stops and continues in 
the interpreter
+      \pause
+      \begin{block}{Guard Characteristics}
+          \begin{itemize}
+              \item lots of them, up to 20\% guards
+              \item most never fail
+              \item costly to implement
+          \end{itemize}
+      \end{block}
+  \end{itemize}
 \end{frame}
 
 % this talk wants to go over a lot of details that are usually glossed over as
@@ -105,10 +118,21 @@
 
 \begin{frame}
   \frametitle{Bridges}
+  \begin{itemize}
+      \item When a trace fails often, it becomes worth to attach a new trace 
to it
+          \item This is called a bridge
+          \item The bridge is attached by patching the guard machine code
+          \item when this guard fails in the future, the new trace is executed 
instead
+  \end{itemize}
 \end{frame}
 
 \begin{frame}
   \frametitle{RPython and PyPy}
+  \begin{itemize}
+      \item Context: RPython
+      \item a generic tracing JIT, applicable to many languages
+      \item main use: PyPy, an efficient Python interpreter
+  \end{itemize}
 \end{frame}
 
 \begin{frame}
@@ -119,14 +143,38 @@
 
 \begin{frame}
   \frametitle{Symbolic Frame Capturing}
+  \begin{itemize}
+      \item Guard can fail deep inside inlined function
+      \item when going back to the interpreter, call stack needs to be 
re-created
+      \item done with the help of symbolic frame stacks
+      \item these show how trace trace variables fill the to-be-built stack 
frames
+  \end{itemize}
 \end{frame}
 
 \begin{frame}
   \frametitle{Symbolic Frame Compression}
+  \begin{itemize}
+      \item There are \emph{a lot of} guards
+      \item Naively storing symbolic frames would be costly in terms of memory
+      \item need to store them compactly
+      \item observation: from one guard to the next, the non-top stack frames 
don't change
+      \item share these between subsequent guards
+      \pause
+      \item also need a byte-saving binary representation, but that's just 
boring work
+  \end{itemize}
 \end{frame}
 
 \begin{frame}
   \frametitle{Interaction with Optimization}
+  \begin{itemize}
+      \item Some optimizations make it necessary to store extra information in 
symbolic frames
+      \item examples:
+          \begin{itemize}
+              \item delayed heap stores (need to do stores before resuming 
interpreter)
+              \item allocation remvoal (need to allocate objects before 
resuming)
+          \end{itemize}
+      \item can be compressed using similar techniques
+  \end{itemize}
 \end{frame}
 
 \begin{frame}
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to