SCM Repository
Annotation of /sml/trunk/src/compiler/FLINT/ChangeLog
Parent Directory
|
Revision Log
Revision 626 - (view) (download)
1 : | monnier | 626 | 2000-04-22 Stefan Monnier <monnier@cs.yale.edu> |
2 : | |||
3 : | * opt/flintopt.txt: New file. | ||
4 : | |||
5 : | * opt/abcopt.sml: New file. | ||
6 : | |||
7 : | * main/flintcomp.sml: Change `Compiler' to `FLINT' or `CPS' in the | ||
8 : | name of phases printed by Compiler.Stats. | ||
9 : | (abcopt): New phase. | ||
10 : | |||
11 : | * main/control.sml (phases): Move loopify+fixfix to before wrap. | ||
12 : | |||
13 : | * cpsopt/cpsopt.sml (zeroexpand): New function. | ||
14 : | |||
15 : | monnier | 622 | 2000-04-19 Stefan Monnier <monnier@cs.yale.edu> |
16 : | |||
17 : | * reps/typeoper.sml (tkAbsGen): Remove. | ||
18 : | |||
19 : | * opt/fixfix.sml (curry): Make sure that uncurrying will not make a | ||
20 : | function recursive, but allow uncurrying a mix of functor and function | ||
21 : | in some restricted cases. | ||
22 : | (uncurry): Properly handle the new functor/function case. | ||
23 : | (SWITCH): Don't change the ordering while folding over the arms. | ||
24 : | Plus some cosmetic code movements to avoid long lines. | ||
25 : | |||
26 : | * main/control.sml (phases): Move loopify (and its fixfix) to before | ||
27 : | `reify' (while still keeping a fixfix after reify). | ||
28 : | |||
29 : | monnier | 604 | 2000-04-07 Stefan Monnier <monnier@cs.yale.edu> |
30 : | |||
31 : | * opt/switchoff.sml: Remove. | ||
32 : | |||
33 : | * main/flintcomp.sml: Remove switchoff-code and fix the Stats.doPhase | ||
34 : | call for fcontract so as to get correct measurements. | ||
35 : | |||
36 : | * reps/equal.sml: Rewritten to generate more CPS-like code. | ||
37 : | |||
38 : | * opt/fcontract.sml (fcLet): re-introduced the branch/switch code, | ||
39 : | but without the deadly multiple traversals. | ||
40 : | |||
41 : | monnier | 540 | 2000-02-18 Stefan Monnier <monnier@cs.yale.edu> |
42 : | |||
43 : | * opt/switchoff.sml (inside/LET): use IH_MAYBE instead of IH_ALWAYS. | ||
44 : | |||
45 : | monnier | 529 | 2000-01-31 Stefan Monnier <monnier@cs.yale.edu> |
46 : | |||
47 : | * opt/fcontract.sml (fcLet/cassoc): don't do a second pass over the output | ||
48 : | of the rewrite. It leads to quadratic behavior for `x1 andalso x2 ...'. | ||
49 : | |||
50 : | monnier | 489 | 1999-07-10 Stefan Monnier <monnier@cs.yale.edu> |
51 : | |||
52 : | * opt/split.sml: don't burp when you can't split. | ||
53 : | |||
54 : | monnier | 220 | 1999-03-08 Stefan Monnier <monnier@cs.yale.edu> |
55 : | |||
56 : | * opt/split.sml (sexp): don't split HANDLE (it's incorrect). | ||
57 : | (funeffect): embryo to detect side-effect free APPs (non-functional). | ||
58 : | (splitThreshold): to put a cap on inlining. | ||
59 : | monnier | 523 | (stfn): don't bother splitting inlinable TFNs. |
60 : | monnier | 220 | |
61 : | * main/control.sml (splitThreshold): new var. | ||
62 : | |||
63 : | * opt/specialize (kBnd): be more conservative with nvars (it's too | ||
64 : | conservative, now). | ||
65 : | |||
66 : | * opt/fixfix.sml (curry): fixed bug when uncurrying cooked functions. | ||
67 : | |||
68 : | * opt/fcontract.sml (fcFun): fix bug when undertaking mut-rec functions. | ||
69 : | |||
70 : | * main/flintcomp.sml: added `recover' to help debugging. | ||
71 : | updated the fold to allow extraction of Fi and return it at the end. | ||
72 : | |||
73 : | * lsplit/ls-inline.sml (oneBranch): fixed the wrapper function. | ||
74 : | |||
75 : | * flint/flintutil.sml (freevars): forgot to count the arg of SWITCH. | ||
76 : | |||
77 : | * flint/flint.sig: added a tfkind to TFN (only inlining for now). | ||
78 : | |||
79 : | * main/control.sml: new file. Moved from TopLevel/viscomp/control.sml | ||
80 : | |||
81 : | 1999-03-04 Stefan Monnier <monnier@cs.yale.edu> | ||
82 : | |||
83 : | * kernel/ltyextern.sml (tnarrow), reps/{reify,rttype,typeoper}.sml: | ||
84 : | flatten arguments when reifying them since the pretty-printer doesn't | ||
85 : | know how to deal with flattened reified TFNs. | ||
86 : | |||
87 : | 1999-03-02 Stefan Monnier <monnier@cs.yale.edu> | ||
88 : | |||
89 : | * kernel/ltyextern.sml (tnarrow), reps/{reify,rttype,typeoper}.sml: | ||
90 : | don't unflatten arguments when reifying them. | ||
91 : | |||
92 : | 1999-02-28 Stefan Monnier <monnier@cs.yale.edu> | ||
93 : | |||
94 : | * opt/fcontract.sml (fcEta): do the known->unknown eta-reduce if the | ||
95 : | `known' function is not locally defined (in which case the known/unknown | ||
96 : | distinction is pointless anyway). | ||
97 : | (wrap): don't forget to junk dead inlinable functions. | ||
98 : | |||
99 : | 1999-02-26 Stefan Monnier <monnier@cs.yale.edu> | ||
100 : | |||
101 : | * opt/split.sml: seriously reworked. Now splits TFNs as well. | ||
102 : | |||
103 : | 1999-02-25 Stefan Monnier <monnier@cs.yale.edu> | ||
104 : | |||
105 : | * kernel/primop.sml (effect): removed DEREF and MAKEREF from the pure | ||
106 : | primops. | ||
107 : | |||
108 : | 1999-02-24 Stefan Monnier <monnier@cs.yale.edu> | ||
109 : | |||
110 : | * flint/flintutil.sml (copy): sort the type-map since {lt,tc}_subst | ||
111 : | actually expects it to be sorted. | ||
112 : | |||
113 : | 1999-02-23 Stefan Monnier <monnier@cs.yale.edu> | ||
114 : | |||
115 : | * opt/recover.sml (lt_nvpoly): moved to ltyextern.sml | ||
116 : | |||
117 : | * kernel/ltyextern.{sml,sig} (lt_nvpoly): new function (digged from | ||
118 : | recover.sml to build a LT_POLY in the case of named tvars. | ||
119 : | |||
120 : | 1999-02-20 Stefan Monnier <monnier@cs.yale.edu> | ||
121 : | |||
122 : | * opt/recover.sml: removed unused depth arguments left behind from before | ||
123 : | we switched to named tvars. | ||
124 : | (addLty): added for the benefit of opt/split.sml | ||
125 : | |||
126 : | 1999-02-17 Stefan Monnier <monnier@cs.yale.edu> | ||
127 : | |||
128 : | * opt/split.sml: new file. Does the lambda-splitting for cross-module | ||
129 : | inlining. Currently in a simplified form. | ||
130 : | |||
131 : | * opt/fcontract.sml (fcEta): bug with (mutually) recursive eta redexes. | ||
132 : | |||
133 : | monnier | 203 | 1998-12-18 Stefan Monnier <monnier@cs.yale.edu> |
134 : | |||
135 : | * opt/fcontract.sml: turned fcFun into a foldable function. | ||
136 : | |||
137 : | 1998-12-17 Stefan Monnier <monnier@cs.yale.edu> | ||
138 : | |||
139 : | * opt/loopify.sml: fix (TR-ing would fail if not LR-ing also) | ||
140 : | |||
141 : | 1998-12-16 Stefan Monnier <monnier@cs.yale.edu> | ||
142 : | |||
143 : | * opt/loopify.sml: make dropinvariant optional. | ||
144 : | |||
145 : | 1998-12-15 Stefan Monnier <monnier@cs.yale.edu> | ||
146 : | |||
147 : | * opt/loopify.sml: drop invariant arguments in loops. | ||
148 : | |||
149 : | * opt/optutils.sml (filter): curried. | ||
150 : | |||
151 : | monnier | 202 | 1998-12-12 Stefan Monnier <monnier@cs.yale.edu> |
152 : | |||
153 : | * opt/fcontract.sml (fcFun): value-specialization (turned off: useless) | ||
154 : | (fcApp): use IH_MAYBE. | ||
155 : | |||
156 : | * opt/fixfix.sml: improved the inlining heuristic by using the IH_MAYBE. | ||
157 : | |||
158 : | 1998-11-29 Stefan Monnier <monnier@cs.yale.edu> | ||
159 : | |||
160 : | * opt/fcontract.sml (fcFun): only update the binding (after contracting | ||
161 : | the function) if there are more functions to contract (the unusual case) | ||
162 : | |||
163 : | 1998-11-28 Stefan Monnier <monnier@cs.yale.edu> | ||
164 : | |||
165 : | * opt/[lf]contract.sml,collect.sml: use PO.purePrimop | ||
166 : | |||
167 : | * opt/fcontract.sml: generalized the BRANCH thing. | ||
168 : | It should now be faster to detect and avoid potential code blowups while | ||
169 : | applying to more cases. But it requires one more pass to generate the | ||
170 : | same code quality :-( | ||
171 : | (fcexp): straightforward split into functions | ||
172 : | (fcLet): do the BRANCH thing after contraction (plus force an additional | ||
173 : | contraction, so the total is 3 passes for a fairly good handling of | ||
174 : | wrap's equality-primop compilation) | ||
175 : | (fcLet): drop TAPP if the output is unused. | ||
176 : | |||
177 : | 1998-11-25 Stefan Monnier <monnier@cs.yale.edu> | ||
178 : | |||
179 : | * opt/loopify.sml: improved tail-calls recognition. | ||
180 : | Also be more careful about wrapping loops into functions (so contraction | ||
181 : | is not needed to cleanup). | ||
182 : | |||
183 : | * opt/fixfix.sml: pretend loops are smaller to increase their inlining. | ||
184 : | |||
185 : | * kernel/ltyextern.sml: commented out Stats calls. | ||
186 : | |||
187 : | * flint/flint.sig: changed LK_WHILE to LK_TAIL. | ||
188 : | |||
189 : | monnier | 197 | 1998-11-21 Stefan Monnier <monnier@cs.yale.edu> |
190 : | |||
191 : | * reps/rttype.sml: changes from Bratin. | ||
192 : | (rtLexp): define the NVAR case (return the tvar as an lvar). | ||
193 : | |||
194 : | * opt/[fl]contract.sml: removed the restriction on inlining at the same | ||
195 : | deBruijn depth. | ||
196 : | |||
197 : | * opt/lift.sml: new file for typelifting. | ||
198 : | |||
199 : | * flint/flintutil.sml (copy): added tvar renaming. | ||
200 : | |||
201 : | * flint/tvarcvt.sml: new file for named tvar <-> deBruijn conversions. | ||
202 : | |||
203 : | monnier | 191 | 1998-11-19 Stefan Monnier <monnier@cs.yale.edu> |
204 : | |||
205 : | * opt/loopify.sml: new file | ||
206 : | |||
207 : | * cps/convert.sml: added code to take advantage of LK_WHILE loops. | ||
208 : | |||
209 : | * opt/optutils.sml (id): removed. That was stupid. | ||
210 : | |||
211 : | * opt/collect.sml: drop support for actuals (was only used for cstargs). | ||
212 : | |||
213 : | * opt/lcontract.sml (lpfd): reset the inline bit to a safe value. | ||
214 : | |||
215 : | * opt/fcontract.sml (cstargs): eliminated. Might reappear in a | ||
216 : | specialization phase some day. | ||
217 : | (inline): turned off unrolling because it's buggy. | ||
218 : | (APP): use the new ifs, damit! | ||
219 : | |||
220 : | monnier | 187 | 1998-11-11 Stefan Monnier <monnier@cs.yale.edu> |
221 : | |||
222 : | monnier | 189 | * opt/fcontract.sml (sval): ref svals rather than going through F.value |
223 : | |||
224 : | monnier | 187 | * opt/collect.sml: switched back to a read-only collect phase. Also try |
225 : | to export the info to allow fcontract to circumvent some of the get calls. | ||
226 : | (info): got rid of Transfer by using the intmap for redirection. | ||
227 : | (unuselexp): junk the fundec part. | ||
228 : | (unuse): return a boolean instead of calling an undertaker. | ||
229 : | |||
230 : | monnier | 185 | 1998-11-09 Stefan Monnier <monnier@cs.yale.edu> |
231 : | |||
232 : | * opt/fcontract.sml: take advantage of single-arm SWITCH (aka decon) | ||
233 : | (SWITCH(CON)): just compare the conreps because types may differ (?) | ||
234 : | (inlineWitness): ugly hack used to figure out if inlining happened, | ||
235 : | in order to decide whether to keep the inline bit or not (in cfun). | ||
236 : | |||
237 : | monnier | 184 | 1998-11-06 Stefan Monnier <monnier@cs.yale.edu> |
238 : | |||
239 : | * opt/fcontract.sml: added unrolling support | ||
240 : | |||
241 : | * reps/coerce.sml: replaced FK_FCT by fkfct, itself defined "sanely" | ||
242 : | |||
243 : | * opt/fixfix.sml: adapted to the new fkind and introduced unrolling | ||
244 : | |||
245 : | 1998-11-05 Stefan Monnier <monnier@cs.yale.edu> | ||
246 : | |||
247 : | * flint/flint.sig: changed fkind to have most annotations valid on | ||
248 : | functors as well. It also adds a loopkind annotation as well as extends | ||
249 : | the inline boolean into a three-way alternative. | ||
250 : | |||
251 : | monnier | 164 | 1998-10-30 Stefan Monnier <monnier@cs.yale.edu> |
252 : | |||
253 : | * opt/fcontract.sml (dropcstargs): replace constant args by the constant. | ||
254 : | monnier | 184 | (cexp): switched to a continuation passing style to implement the |
255 : | let-associativity rule in a better way. | ||
256 : | monnier | 164 | |
257 : | monnier | 189 | * opt/fixfix.sml (curry): correctly handle "impossible" cases. |
258 : | monnier | 164 | |
259 : | * opt/collect.sml: completely revisited: no distinction between | ||
260 : | internal/external uses, dead-code elimination done right away. This | ||
261 : | makes fcontract a little simpler. | ||
262 : | |||
263 : | monnier | 163 | 1998-10-28 Stefan Monnier <monnier@cs.yale.edu> |
264 : | |||
265 : | * opt/fcontract.sml (inline): do simple inlining only for non-isrec | ||
266 : | functions (to ensure we never silently turn external uses into internal | ||
267 : | uses) and correspondingly change the agressive inlining to inline | ||
268 : | non-inlinable functions as long as its their last use. | ||
269 : | (dropargs): new functions to drop unused arguments. | ||
270 : | |||
271 : | |||
272 : | monnier | 162 | 1998-10-27 Stefan Monnier <monnier@cs.yale.edu> |
273 : | |||
274 : | monnier | 163 | * opt/optutils.sml: trying to reuse code between fixfix and fcontract. |
275 : | |||
276 : | * opt/collect.sml (called): added for eta-expand. | ||
277 : | |||
278 : | * opt/fcontract.sml (inline): allow single inlining of FK_FCT. | ||
279 : | |||
280 : | monnier | 162 | * lsplit/ls-inline.sml: don't call lcontract anymore. |
281 : | |||
282 : | 1998-10-26 Stefan Monnier <monnier@cs.yale.edu> | ||
283 : | |||
284 : | * cps/cpstrans.sml (spillOut): fix from Zhong. | ||
285 : | |||
286 : | * cpsopt/cpsopt.sml: use Control.CG.cpsopt and fold over it. | ||
287 : | |||
288 : | * main/flintcomp.sml: use Control.FLINT.phases and fold over it. | ||
289 : | |||
290 : | * opt/fixfix.sml (curry): use Control.FLINT.maxargs to bound the uncurrying |
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |