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