157 lines
4.7 KiB
TeX
157 lines
4.7 KiB
TeX
% vim: spell spelllang=en
|
|
|
|
\documentclass[11pt,xcolor={usenames,dvipsnames}]{beamer}
|
|
\usetheme{Warsaw}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[english]{babel}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage{amsmath}
|
|
\usepackage{amsfonts}
|
|
\usepackage{amssymb}
|
|
\usepackage{graphicx}
|
|
\usepackage{my_listings}
|
|
\usepackage{math}
|
|
\usepackage{tikz}
|
|
\setbeamertemplate{navigation symbols}{}
|
|
|
|
\newcommand{\wrt}{\textit{wrt.}}
|
|
|
|
\newcommand*\oldmacro{}%
|
|
\let\oldmacro\insertshorttitle%
|
|
\renewcommand*\insertshorttitle{%
|
|
\oldmacro\hfill%
|
|
\insertframenumber\,/\,\inserttotalframenumber}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\author{Théophile \textsc{Bastian}}
|
|
\title[Tracing Compilation by Abstract Interpretation]
|
|
{Tracing Compilation by Abstract Interpretation \\
|
|
{\small{}S. Dissegna, F. Logozzo, F. Ranzato}}
|
|
\date{March 7, 2018}
|
|
|
|
\begin{document}
|
|
|
|
\begin{frame}
|
|
\addtocounter{framenumber}{-1}
|
|
\titlepage{}
|
|
|
|
Slides: \url{https://tiny.tobast.fr/m2-absint-slides} \\
|
|
Article: \url{https://tiny.tobast.fr/m2-absint-article}
|
|
\end{frame}
|
|
|
|
\begin{frame}
|
|
\addtocounter{framenumber}{-1}
|
|
\tableofcontents
|
|
\end{frame}
|
|
|
|
\section{Just-In-Time compilation}
|
|
|
|
\begin{frame}{Just-In-Time (JIT) compilation}
|
|
\begin{itemize}
|
|
\item Dynamic languages: \alert{hard to compile} (rely on runtime)
|
|
\item Yet \alert{ubiquitous}: javascript, python, \ldots
|
|
\item Idea: compile \alert{at runtime} the \alert{most used} program
|
|
parts
|
|
\item Used in browsers (JS), PyPy (Python), most JVMs (Java), \ldots
|
|
\end{itemize}
|
|
|
|
\vspace{1em}
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}[xscale=0.6, fill=GreenYellow]
|
|
\fill (-8, 0) rectangle (-4, 2)
|
|
node[pos=.5] {Source code};
|
|
\fill (-2, 0) rectangle (2, 2)
|
|
node[pos=.5] {Byte code};
|
|
\fill (4, 0) rectangle (8, 2)
|
|
node[pos=.5, align=center] {Byte/machine\\code};
|
|
|
|
\draw[->, line width=2] (-4,1) -- (-2,1);
|
|
\draw[->, line width=2] (2,1) -- (4,1);
|
|
\node [rotate=60, anchor=west] at (-3.75, 1.1) {Bytecode compiler};
|
|
\node [rotate=60, anchor=west] at (2.25, 1.1) {JIT compiler};
|
|
|
|
\draw[RubineRed, line width=1] (0, 2) -- (0, 4);
|
|
\draw[RubineRed, line width=1, dotted] (0, 0) -- (0, 2);
|
|
\draw[RubineRed, line width=1] (0, -0.2) -- (0, 0);
|
|
|
|
\node [rotate=90, anchor=south, RubineRed] at (-0.1, 3) {Offline};
|
|
\node [rotate=-90, anchor=south, RubineRed] at (0.1, 3) {Runtime};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
\end{frame}
|
|
|
|
\begin{frame}{How is it done?}
|
|
\begin{itemize}
|
|
\item (In most cases) strong \alert{interaction} interpreter
|
|
$\leftrightarrow$ JIT compiler
|
|
\vspace{1em}
|
|
\item \textit{Article claim}: mostly done using \alert{hot paths}
|
|
within loops (in a single function); most speedup is \alert{type
|
|
specialization}.
|
|
\begin{itemize}
|
|
\item Hot path: path \alert{used $\geq N$ times} at runtime in
|
|
a \alert{given} (abstract) \alert{store state}
|
|
\end{itemize}
|
|
\pause{}
|
|
\item \alert{Wrong}. But, heh, we'll deal with it nevertheless. \\
|
|
{\small (Inlining, translation to machine code, global
|
|
optimizations, lock elimination, non-volatile-write
|
|
elimination/propagation, \ldots)}
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\section{Study setup}
|
|
|
|
\begin{frame}{Study objectives}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Studied language}
|
|
\end{frame}
|
|
|
|
\section{Abstract interpretation}
|
|
|
|
\begin{frame}{AbsInt hot path extraction}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Value type specialization}
|
|
\end{frame}
|
|
|
|
\section{Correctness proof}
|
|
|
|
\begin{frame}{Correctness proof sketch}
|
|
\end{frame}
|
|
|
|
\section*{Conclusion}
|
|
|
|
\begin{frame}{Conclusion}
|
|
\begin{columns}[c]
|
|
\column{.8 \textwidth}
|
|
\begin{exampleblock}{Pros}
|
|
\begin{itemize}
|
|
\item Opens the way for AbsInt formalism in JIT
|
|
\item Provides an (implemented?) framework for JIT study
|
|
\end{itemize}
|
|
\end{exampleblock}
|
|
|
|
\begin{alertblock}{Cons}
|
|
\begin{itemize}
|
|
\item Overly restrictive in JIT features, pretends otherwise
|
|
\item Unusably small toy language
|
|
\item Absurdly hard to read toy language
|
|
\item Proof \wrt{} some $\alpha$ which is not
|
|
\textit{that much} realistic
|
|
\end{itemize}
|
|
\end{alertblock}
|
|
|
|
\column{.2 \textwidth}
|
|
\begin{figure}
|
|
\centering
|
|
\hspace*{-1em}
|
|
\includegraphics[width=1.4\textwidth]{img/absint.jpg}
|
|
\end{figure}
|
|
\end{columns}
|
|
\end{frame}
|
|
|
|
\end{document}
|