26 |
val lcontract = phase "Compiler 052 lcontract" LContract.lcontract |
val lcontract = phase "Compiler 052 lcontract" LContract.lcontract |
27 |
val fcollect = phase "Compiler 052a fcollect" Collect.collect |
val fcollect = phase "Compiler 052a fcollect" Collect.collect |
28 |
val fcontract = phase "Compiler 052b fcontract" FContract.contract |
val fcontract = phase "Compiler 052b fcontract" FContract.contract |
29 |
val fcontract = fn f => (lcontract f; fcontract(fcollect f, Stats.newCounter[])) |
val fcontract = fn f => (fcontract(fcollect f, Stats.newCounter[])) |
30 |
|
|
31 |
|
val loopify = phase "Compiler 057 loopify" Loopify.loopify |
32 |
|
|
33 |
val specialize= phase "Compiler 053 specialize" Specialize.specialize |
val specialize= phase "Compiler 053 specialize" Specialize.specialize |
34 |
val wrapping = phase "Compiler 054 wrapping" Wrapping.wrapping |
val wrapping = phase "Compiler 054 wrapping" Wrapping.wrapping |
124 |
fun runphase (p as "fcontract",(f,r,l)) = (fcontract f, r, p) |
fun runphase (p as "fcontract",(f,r,l)) = (fcontract f, r, p) |
125 |
| runphase (p as "lcontract",(f,r,l)) = (lcontract f, r, p) |
| runphase (p as "lcontract",(f,r,l)) = (lcontract f, r, p) |
126 |
| runphase (p as "fixfix",(f,r,l)) = (fixfix f, r, p) |
| runphase (p as "fixfix",(f,r,l)) = (fixfix f, r, p) |
127 |
|
| runphase (p as "loopify",(f,r,l)) = (loopify f, r, p) |
128 |
| runphase (p as "wrap",(f,false,l)) = (wrapping f, false, p) |
| runphase (p as "wrap",(f,false,l)) = (wrapping f, false, p) |
129 |
| runphase (p as "specialize",(f,false,l)) = (specialize f, false, p) |
| runphase (p as "specialize",(f,false,l)) = (specialize f, false, p) |
130 |
| runphase (p as "reify",(f,false,l)) = (reify f, true, p) |
| runphase (p as "reify",(f,false,l)) = (reify f, true, p) |
155 |
dumpTerm(PPFlint.printFundec,"FLINT.core", f); |
dumpTerm(PPFlint.printFundec,"FLINT.core", f); |
156 |
raise x) |
raise x) |
157 |
|
|
158 |
(* the "id" phases is just added to do the print/check at the entrance *) |
(* the "id" phase is just added to do the print/check at the entrance *) |
159 |
val (flint,r,_) = foldl runphase' |
val (flint,r,_) = foldl runphase' |
160 |
(flint,false,"flintnm") |
(flint,false,"flintnm") |
161 |
((* "id" :: *) !CTRL.phases) |
((* "id" :: *) !CTRL.phases) |