000232671 001__ 232671
000232671 005__ 20190317000901.0
000232671 0247_ $$2doi$$a10.5075/epfl-thesis-7979
000232671 02470 $$2urn$$aurn:nbn:ch:bel-epfl-thesis7979-8
000232671 02471 $$2nebis$$a11086533
000232671 037__ $$aTHESIS
000232671 041__ $$aeng
000232671 088__ $$a7979
000232671 245__ $$aDesign and implementation of an optimizing type-centric compiler for a high-level language
000232671 260__ $$aLausanne$$bEPFL$$c2017
000232671 269__ $$a2017
000232671 300__ $$a183
000232671 336__ $$aTheses
000232671 502__ $$aProf. Michael Christoph Gastpar (président) ; Prof. Martin Odersky (directeur de thèse) ; Prof. Viktor Kuncak, Prof. Ondřej Lhoták, Dr Cliff Click (rapporteurs)
000232671 520__ $$aProduction compilers for programming languages face multiple requirements.  They should be correct, as we rely on them to produce code.  They should be fast, in order to provide a good developer experience.  They should also be easy to maintain and evolve.  This thesis shows how an expressive high level type system can be used to simplify the development of a compiler and demonstrates this on a compiler for Scala.  First, it shows how expressive types of high level languages can be used to build internal data structures that provide a statically checked API, ensuring that important properties hold at compile time.  Second, we also show how high level language features can be used to abstract the components of a compiler. We demonstrate this by introducing a type-safe layer on top of the bytecode emission phase. This makes it possible to abstract away the implementation details of the compiler frontend and run the same bytecode emission phase in two different Scala compilers.  Third, it presents MiniPhases, a novel way to organize transformation passes in a compiler. MiniPhases impose constraints on the organization of passes that are beneficial for maintainability, performance, and testability. We include a detailed performance evaluation of MiniPhases which indicates that their speedup is due to improved cache friendliness and to a lower rate of promotions of objects into the old generations of garbage collectors.  Finally, we demonstrate how the expressive type system of the language being compiled can be used for static analysis. We present a novel call graph construction algorithm which uses the typing context for context sensitivity. The resulting algorithm is both substantially faster and more precise than existing alternatives. We demonstrate the applicability of this analysis by extending common subexpression elimination to idempotent expression elimination.
000232671 6531_ $$acompiler design
000232671 6531_ $$aoptimizing compiler
000232671 6531_ $$acompiler performance
000232671 6531_ $$atree traversal fusion
000232671 6531_ $$acache locality
000232671 6531_ $$acall graphs
000232671 6531_ $$aparametric polymorphism
000232671 6531_ $$astatic analysis
000232671 6531_ $$aScala
000232671 700__ $$0248093$$aPetrashko, Dmytro$$g233192
000232671 720_2 $$0241835$$aOdersky, Martin$$edir.$$g126003
000232671 8564_ $$s1890028$$uhttps://infoscience.epfl.ch/record/232671/files/EPFL_TH7979.pdf$$yn/a$$zn/a
000232671 909C0 $$0252187$$pLAMP$$xU10409
000232671 909CO $$ooai:infoscience.tind.io:232671$$pthesis-bn2018$$pDOI$$pIC$$pthesis$$qDOI2$$qGLOBAL_SET
000232671 917Z8 $$x108898
000232671 917Z8 $$x108898
000232671 918__ $$aIC$$cIINFCOM$$dEDIC
000232671 919__ $$aLAMP1
000232671 920__ $$a2017-12-11$$b2017
000232671 970__ $$a7979/THESES
000232671 973__ $$aEPFL$$sPUBLISHED
000232671 980__ $$aTHESIS