phase name id description ---------- -- ----------- parser 1 parse source into ASTs, perform simple desugaring namer 2 resolve names, attach symbols to named trees packageobjects 3 load package objects typer 4 the meat and potatoes: type the trees superaccessors 5 add super accessors in traits and nested classes pickler 6 serialize symbol tables refchecks 7 reference/override checking, translate nested objects uncurry 8 uncurry, translate function values to anonymous classes tailcalls 9 replace tail calls by jumps specialize 10 @specialized-driven class and method specialization explicitouter 11 this refs to outer pointers, translate patterns erasure 12 erase types, add interfaces for traits lazyvals 13 allocate bitmaps, translate lazy vals into lazified defs lambdalift 14 move nested functions to top level constructors 15 move field definitions into constructors flatten 16 eliminate inner classes mixin 17 mixin composition cleanup 18 platform-specific cleanups, generate reflective calls icode 19 generate portable intermediate code inliner 20 optimization: do inlining inlineExceptionHandlers 21 optimization: inline exception handlers closelim 22 optimization: eliminate uncalled closures dce 23 optimization: eliminate dead code jvm 24 generate JVM bytecode terminal 25 The last phase in the compiler chain