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