% This is various discarded slides.  May want to keep them around.

\begin{slide}{What is a Box?}
We wanted to write this:

\begin{tabbing}
\qquad \= {\tt Value * pV = ...;}\\
       \> {\tt *pV = new Local(...);}
\end{tabbing}


\vspace*{-0.05in}
\begin{itemize}
\item Pointers allow indirection.
\end{itemize}

Problem: Java doesn't expose pointers

\vspace*{0.05in}
\begin{tabbing}
\quad \= {\tt ValueBox b = s.getUseBoxes().get(0);}\\
       \>{\tt b.setValue(new Local(...));}
\end{tabbing}

\[ \fbox{\tt i} \: \mathop{\longrightarrow}^{\small \tt getValue()} \: \mbox{\tt i} \]

\end{slide}

\begin{slide}{{\tt getDefBoxes()} et al.}

\begin{center}
\fbox{\tt s: \fbox{x} = \fbox{y} op \fbox{z};}
\end{center}

\quad

{\tt getDefBoxes(s) = \{\fbox{x}\}}\\

\quad

{\tt getUseBoxes(s) = \{\fbox{y}, \fbox{z}\}}\\

\quad

{\tt getUseAndDefBoxes(s) = \{\fbox{x}, \fbox{y}, \fbox{z}\}}\\

\end{slide}

\begin{slide}{Another Example of Live Locals}
A local variable {\tt v} is {\red live} at $s$ if there exists some
statement $s'$ using {\tt v} and a control-flow path from $s$ to $s'$ free
of definitions of {\tt v}.

\quad

\begin{center}
\input{lv-example-specific.eepic}
\end{center}
\end{slide}

\begin{slide}{Example: Branched nullness}

A local variable {\tt v} is {\red non-null} at $s$ if all control-flow
paths from a method's start node to $s$ result in {\tt v} being
assigned a value different from {\tt null} at $s$.

\begin{center}
\input{lv-example-specific.eepic}
\end{center}

\end{slide}
