|
@@ -11024,6 +11024,70 @@ completion without error.
|
|
|
\end{exercise}
|
|
|
|
|
|
|
|
|
+\begin{figure}[p]
|
|
|
+\begin{tikzpicture}[baseline=(current bounding box.center)]
|
|
|
+\node (R4) at (0,4) {\large $R_7$};
|
|
|
+\node (R4-2) at (3,4) {\large $R_7$};
|
|
|
+\node (R4-3) at (6,4) {\large $R_7$};
|
|
|
+\node (R4-4) at (9,4) {\large $R'_7$};
|
|
|
+\node (R4-5) at (12,2) {\large $R'_6$};
|
|
|
+\node (R4-6) at (12,0) {\large $R'_6$};
|
|
|
+
|
|
|
+\node (F1-2) at (9,0) {\large $R'_6$};
|
|
|
+\node (F1-3) at (6,0) {\large $R'_6$};
|
|
|
+\node (F1-4) at (3,0) {\large $R'_6$};
|
|
|
+\node (F1-5) at (0,0) {\large $R'_6$};
|
|
|
+\node (C3-2) at (3,-2) {\large $C_3$};
|
|
|
+
|
|
|
+\node (x86-2) at (3,-4) {\large $\text{x86}^{*}_3$};
|
|
|
+\node (x86-3) at (6,-4) {\large $\text{x86}^{*}_3$};
|
|
|
+\node (x86-4) at (9,-4) {\large $\text{x86}^{*}_3$};
|
|
|
+\node (x86-5) at (9,-6) {\large $\text{x86}^{\dagger}_3$};
|
|
|
+
|
|
|
+\node (x86-2-1) at (3,-6) {\large $\text{x86}^{*}_3$};
|
|
|
+\node (x86-2-2) at (6,-6) {\large $\text{x86}^{*}_3$};
|
|
|
+
|
|
|
+\path[->,bend left=15] (R4) edge [above] node
|
|
|
+ {\ttfamily\footnotesize shrink} (R4-2);
|
|
|
+\path[->,bend left=15] (R4-2) edge [above] node
|
|
|
+ {\ttfamily\footnotesize uniquify} (R4-3);
|
|
|
+\path[->,bend left=15] (R4-3) edge [above] node
|
|
|
+ {\ttfamily\footnotesize\color{red} reveal-functions} (R4-4);
|
|
|
+\path[->,bend left=15] (R4-4) edge [right] node
|
|
|
+ {\ttfamily\footnotesize\color{red} cast-insert} (R4-5);
|
|
|
+\path[->,bend left=15] (R4-5) edge [left] node
|
|
|
+ {\ttfamily\footnotesize\color{red} shrink} (R4-6);
|
|
|
+
|
|
|
+\path[->,bend left=15] (R4-6) edge [below] node
|
|
|
+ {\ttfamily\footnotesize\color{red} convert-to-clos.} (F1-2);
|
|
|
+\path[->,bend right=15] (F1-2) edge [above] node
|
|
|
+ {\ttfamily\footnotesize limit-fun.} (F1-3);
|
|
|
+\path[->,bend right=15] (F1-3) edge [above] node
|
|
|
+ {\ttfamily\footnotesize expose-alloc.} (F1-4);
|
|
|
+\path[->,bend right=15] (F1-4) edge [above] node
|
|
|
+ {\ttfamily\footnotesize remove-complex.} (F1-5);
|
|
|
+\path[->,bend right=15] (F1-5) edge [right] node
|
|
|
+ {\ttfamily\footnotesize\color{red} explicate-control} (C3-2);
|
|
|
+\path[->,bend left=15] (C3-2) edge [left] node
|
|
|
+ {\ttfamily\footnotesize\color{red} select-instr.} (x86-2);
|
|
|
+\path[->,bend right=15] (x86-2) edge [left] node
|
|
|
+ {\ttfamily\footnotesize uncover-live} (x86-2-1);
|
|
|
+\path[->,bend right=15] (x86-2-1) edge [below] node
|
|
|
+ {\ttfamily\footnotesize build-inter.} (x86-2-2);
|
|
|
+\path[->,bend right=15] (x86-2-2) edge [left] node
|
|
|
+ {\ttfamily\footnotesize allocate-reg.} (x86-3);
|
|
|
+\path[->,bend left=15] (x86-3) edge [above] node
|
|
|
+ {\ttfamily\footnotesize patch-instr.} (x86-4);
|
|
|
+\path[->,bend left=15] (x86-4) edge [right] node
|
|
|
+ {\ttfamily\footnotesize print-x86} (x86-5);
|
|
|
+\end{tikzpicture}
|
|
|
+ \caption{Diagram of the passes for $R_7$, a dynamically typed language.}
|
|
|
+\label{fig:R7-passes}
|
|
|
+\end{figure}
|
|
|
+
|
|
|
+Figure~\ref{fig:R7-passes} provides an overview of all the passes needed
|
|
|
+for the compilation of $R_7$.
|
|
|
+
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
\chapter{Gradual Typing}
|