\relax \@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{\thepage }} \newlabel{intro-sect}{{1}{\thepage }} \citation{KiczalesEtAl97} \citation{RigoPedroni06} \@writefile{toc}{\contentsline {section}{\numberline {2}A Gentle Introduction to \\ RPython}{\thepage }} \newlabel{rpython-intro}{{2}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {2.1}The \emph {PyPy} project}{\thepage }} \newlabel{pypy-intro}{{2.1}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2}RPython as a language}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Type system and object model}{\thepage }} \newlabel{typesystem}{{2.3}{\thepage }} \citation{PythonMixIn} \citation{VanRossum} \@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Initialization-time, translation-time and run-time}{\thepage }} \citation{GoF95} \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces From Python sources to compiled executables.}}{\thepage }} \newlabel{fig:translation}{{1}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {2.5}Useful RPython programming patterns}{\thepage }} \@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.1}Automatically generated source code}{\thepage }} \@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.2}Initialization of complex constants}{\thepage }} \citation{MertzSimionato03} \citation{VanRossum} \citation{GoF95} \citation{ECMA-334} \citation{multijava} \@writefile{toc}{\contentsline {subsubsection}{\numberline {2.5.3}Extending the language through metaclasses}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {2.6}A complete example}{\thepage }} \citation{RigoPedroni06} \citation{D05.1} \citation{PyPyTrans} \citation{ananian99static} \@writefile{toc}{\contentsline {section}{\numberline {3}RPython Front-end}{\thepage }} \newlabel{frontend-sect}{{3}{\thepage }} \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces The compiler architecture.}}{\thepage }} \newlabel{arch-fig}{{2}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Flow Graph Generator and Annotator}{\thepage }} \newlabel{sect:annot}{{3.1}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2}RTyper}{\thepage }} \citation{D12.1} \citation{Mono} \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1}The \emph {lltype}\xspace and \emph {ootype}\xspace type systems}{\thepage }} \newlabel{sect:ootype}{{3.2.1}{\thepage }} \@writefile{toc}{\contentsline {section}{\numberline {4}Back-end Implementations}{\thepage }} \newlabel{backend-sect}{{4}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {4.1}GenCLI: The .NET back-end}{\thepage }} \newlabel{gencli-sect}{{4.1}{\thepage }} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}.NET in a Nutshell}{\thepage }} \citation{JvmSpec} \citation{JLS} \citation{JvmSpec} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Mapping RPython types to .NET}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2}GenJVM: The JVM back-end}{\thepage }} \newlabel{genjvm-sect}{{4.2}{\thepage }} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}JVM in a Nutshell}{\thepage }} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}Translation from RPython}{\thepage }} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.3}Register- to stack-machine translation}{\thepage }} \citation{286957} \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces The naive type hierarchy that results from translating each RPython class to a corresponding Java class. Note that "Object" refers to the RPython class, and "java.lang.Object" to the Java class.}}{\thepage }} \newlabel{fig:jvm-exception-hierarchy}{{3}{\thepage }} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.4}Unsigned values}{\thepage }} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.5}Generic typing and boxed values}{\thepage }} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.6}First-class functions and classes}{\thepage }} \@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces The actual hierarchy that is generated by PyPy's JVM backend. The RPython "Object" class has been split into two implementations of the same interface, one for exceptions and one for other classes.}}{\thepage }} \newlabel{fig:jvm-exception-hierarchy}{{4}{\thepage }} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.7}Exceptions}{\thepage }} \citation{Jython} \bibstyle{abbrv} \bibdata{main} \bibcite{ananian99static}{1} \bibcite{286957}{2} \bibcite{D12.1}{3} \bibcite{ECMA-334}{4} \bibcite{PythonMixIn}{5} \bibcite{GoF95}{6} \bibcite{JLS}{7} \bibcite{Jython}{8} \bibcite{KiczalesEtAl97}{9} \bibcite{JvmSpec}{10} \bibcite{MertzSimionato03}{11} \bibcite{multijava}{12} \bibcite{PyPyTrans}{13} \bibcite{D05.1}{14} \bibcite{RigoPedroni06}{15} \bibcite{Mono}{16} \bibcite{VanRossum}{17} \@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Benchmarks and Comparisons with Other Compilers}{\thepage }} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.1}Jython}{\thepage }} \@writefile{toc}{\contentsline {section}{\numberline {5}Towards a Fully Fledged Programming Language}{\thepage }} \newlabel{futureWork-sect}{{5}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Support for Separate Compilation and Interoperability}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2}More Expressive Type Systems}{\thepage }} \@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Exploiting Next Generation Support for Dynamic Languages}{\thepage }} \@writefile{toc}{\contentsline {section}{\numberline {6}Conclusion}{\thepage }} \newlabel{conclusion-sect}{{6}{\thepage }} \@writefile{toc}{\contentsline {section}{\numberline {7}References}{\thepage }}