% -*- mode: latex -*- \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm, semithick,font={\footnotesize}] \tikzstyle{basic-state} = [draw, fill=white, circle, minimum width=5em, node distance=10em] \ifthenelse{\boolean{preview}} {\tikzstyle{state} = [basic-state]} {\tikzstyle{state} = [basic-state, drop shadow]} \tikzstyle{lbl} = [font={\scriptsize\it}] \node[state, name=interp] {Interpretation}; \node[state, name=tracing, above right of=interp] {Tracing}; \node[state, name=compile, right of=tracing] {Compilation}; \node[state, name=running, below right of=compile] {Running}; \path (interp) edge[bend left] node[lbl] {hot loop detected} (tracing) (running) edge[<-,bend left=20] node[lbl] {entering compiled loop} (interp) (tracing) edge[bend left] (compile) (compile) edge[bend left] (running) (running) edge[bend left=50] node[lbl] {cold guard failed} (interp) (running) edge[bend left=15] node[lbl] {guard failure $\rightarrow$ hot} (tracing) (running) edge[loop below] node[lbl] {hot guard failed} (running) ; \end{tikzpicture}