Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] View of /sml/trunk/src/compiler/FLINT/ChangeLog
ViewVC logotype

View of /sml/trunk/src/compiler/FLINT/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log

Revision 604 - (download) (annotate)
Fri Apr 7 13:53:08 2000 UTC (21 years, 2 months ago) by monnier
File size: 9156 byte(s)
* opt/switchoff.sml: Remove.
* reps/equal.sml: Rewritten to generate more CPS-like code.
* opt/fcontract.sml (fcLet): re-introduced the branch/switch code,
but without the deadly multiple traversals.
* */control.sml: Less flintopt and more cpsopt.
2000-04-07  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/switchoff.sml: Remove.

	* main/flintcomp.sml: Remove switchoff-code and fix the Stats.doPhase
	call for fcontract so as to get correct measurements.

	* reps/equal.sml: Rewritten to generate more CPS-like code.

	* opt/fcontract.sml (fcLet): re-introduced the branch/switch code,
	but without the deadly multiple traversals.

2000-02-18  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/switchoff.sml (inside/LET): use IH_MAYBE instead of IH_ALWAYS.

2000-01-31  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/fcontract.sml (fcLet/cassoc): don't do a second pass over the output
	  of the rewrite.  It leads to quadratic behavior for `x1 andalso x2 ...'.

1999-07-10  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/split.sml: don't burp when you can't split.

1999-03-08  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/split.sml (sexp): don't split HANDLE (it's incorrect).
	(funeffect): embryo to detect side-effect free APPs (non-functional).
	(splitThreshold): to put a cap on inlining.
	(stfn): don't bother splitting inlinable TFNs. 

	* main/control.sml (splitThreshold): new var.

	* opt/specialize (kBnd): be more conservative with nvars (it's too
	  conservative, now).

	* opt/fixfix.sml (curry): fixed bug when uncurrying cooked functions.

	* opt/fcontract.sml (fcFun):  fix bug when undertaking mut-rec functions.

	* main/flintcomp.sml:  added `recover' to help debugging.
	updated the fold to allow extraction of Fi and return it at the end.

	* lsplit/ls-inline.sml (oneBranch): fixed the wrapper function.

	* flint/flintutil.sml (freevars):  forgot to count the arg of SWITCH.

	* flint/flint.sig:  added a tfkind to TFN (only inlining for now).

	* main/control.sml: new file. Moved from TopLevel/viscomp/control.sml

1999-03-04  Stefan Monnier  <monnier@cs.yale.edu>

	* kernel/ltyextern.sml (tnarrow), reps/{reify,rttype,typeoper}.sml:
	  flatten arguments when reifying them since the pretty-printer doesn't
	  know how to deal with flattened reified TFNs.

1999-03-02  Stefan Monnier  <monnier@cs.yale.edu>

	* kernel/ltyextern.sml (tnarrow), reps/{reify,rttype,typeoper}.sml:
	  don't unflatten arguments when reifying them.

1999-02-28  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/fcontract.sml (fcEta): do the known->unknown eta-reduce if the
	  `known' function is not locally defined (in which case the known/unknown
	  distinction is pointless anyway).
	(wrap):  don't forget to junk dead inlinable functions.

1999-02-26  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/split.sml: seriously reworked.  Now splits TFNs as well.

1999-02-25  Stefan Monnier  <monnier@cs.yale.edu>

	* kernel/primop.sml (effect): removed DEREF and MAKEREF from the pure

1999-02-24  Stefan Monnier  <monnier@cs.yale.edu>

	* flint/flintutil.sml (copy): sort the type-map since {lt,tc}_subst
	  actually expects it to be sorted.

1999-02-23  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/recover.sml (lt_nvpoly): moved to ltyextern.sml

	* kernel/ltyextern.{sml,sig} (lt_nvpoly): new function (digged from
	  recover.sml to build a LT_POLY in the case of named tvars.

1999-02-20  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/recover.sml: removed unused depth arguments left behind from before
	  we switched to named tvars.
	(addLty): added for the benefit of opt/split.sml

1999-02-17  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/split.sml: new file.  Does the lambda-splitting for cross-module
	  inlining.  Currently in a simplified form.

	* opt/fcontract.sml (fcEta): bug with (mutually) recursive eta redexes.

1998-12-18  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/fcontract.sml: turned fcFun into a foldable function.

1998-12-17  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/loopify.sml: fix (TR-ing would fail if not LR-ing also)

1998-12-16  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/loopify.sml: make dropinvariant optional.

1998-12-15  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/loopify.sml: drop invariant arguments in loops.

	* opt/optutils.sml (filter): curried.

1998-12-12  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/fcontract.sml (fcFun): value-specialization (turned off: useless)
	(fcApp): use IH_MAYBE.

	* opt/fixfix.sml: improved the inlining heuristic by using the IH_MAYBE.

1998-11-29  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/fcontract.sml (fcFun): only update the binding (after contracting
	  the function) if there are more functions to contract (the unusual case)

1998-11-28  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/[lf]contract.sml,collect.sml: use PO.purePrimop

	* opt/fcontract.sml: generalized the BRANCH thing.
	It should now be faster to detect and avoid potential code blowups while
	applying to more cases.  But it requires one more pass to generate the
	same code quality :-(
	(fcexp): straightforward split into functions
	(fcLet): do the BRANCH thing after contraction (plus force an additional
	  contraction, so the total is 3 passes for a fairly good handling of
	  wrap's equality-primop compilation)
	(fcLet): drop TAPP if the output is unused.

1998-11-25  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/loopify.sml: improved tail-calls recognition.
	Also be more careful about wrapping loops into functions (so contraction
	is not needed to cleanup).

	* opt/fixfix.sml: pretend loops are smaller to increase their inlining.

	* kernel/ltyextern.sml: commented out Stats calls.

	* flint/flint.sig: changed LK_WHILE to LK_TAIL.

1998-11-21  Stefan Monnier  <monnier@cs.yale.edu>

	* reps/rttype.sml: changes from Bratin.
	(rtLexp): define the NVAR case (return the tvar as an lvar).

	* opt/[fl]contract.sml: removed the restriction on inlining at the same
	  deBruijn depth.

	* opt/lift.sml: new file for typelifting.

	* flint/flintutil.sml (copy): added tvar renaming.

	* flint/tvarcvt.sml: new file for named tvar <-> deBruijn conversions.

1998-11-19  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/loopify.sml: new file

	* cps/convert.sml: added code to take advantage of LK_WHILE loops.

	* opt/optutils.sml (id): removed.  That was stupid.

	* opt/collect.sml: drop support for actuals (was only used for cstargs).

	* opt/lcontract.sml (lpfd): reset the inline bit to a safe value.

	* opt/fcontract.sml (cstargs): eliminated.  Might reappear in a
	  specialization phase some day.
	(inline): turned off unrolling because it's buggy.
	(APP): use the new ifs, damit!

1998-11-11  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/fcontract.sml (sval): ref svals rather than going through F.value

	* opt/collect.sml: switched back to a read-only collect phase.  Also try
	  to export the info to allow fcontract to circumvent some of the get calls.
	(info): got rid of Transfer by using the intmap for redirection.
	(unuselexp): junk the fundec part.
	(unuse): return a boolean instead of calling an undertaker.

1998-11-09  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/fcontract.sml: take advantage of single-arm SWITCH (aka decon)
	(SWITCH(CON)): just compare the conreps because types may differ (?)
	(inlineWitness): ugly hack used to figure out if inlining happened,
	  in order to decide whether to keep the inline bit or not (in cfun).

1998-11-06  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/fcontract.sml: added unrolling support

	* reps/coerce.sml: replaced FK_FCT by fkfct, itself defined "sanely"

	* opt/fixfix.sml: adapted to the new fkind and introduced unrolling

1998-11-05  Stefan Monnier  <monnier@cs.yale.edu>

	* flint/flint.sig: changed fkind to have most annotations valid on
	  functors as well.  It also adds a loopkind annotation as well as extends
	  the inline boolean into a three-way alternative.

1998-10-30  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/fcontract.sml (dropcstargs): replace constant args by the constant.
	(cexp): switched to a continuation passing style to implement the
	  let-associativity rule in a better way.

	* opt/fixfix.sml (curry): correctly handle "impossible" cases.

	* opt/collect.sml: completely revisited:  no distinction between
	  internal/external uses, dead-code elimination done right away.  This
	  makes fcontract a little simpler.

1998-10-28  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/fcontract.sml (inline): do simple inlining only for non-isrec
	  functions (to ensure we never silently turn external uses into internal
	  uses) and correspondingly change the agressive inlining to inline
	  non-inlinable functions as long as its their last use.
	(dropargs): new functions to drop unused arguments.

1998-10-27  Stefan Monnier  <monnier@cs.yale.edu>

	* opt/optutils.sml: trying to reuse code between fixfix and fcontract.

	* opt/collect.sml (called): added for eta-expand.

	* opt/fcontract.sml (inline): allow single inlining of FK_FCT.

	* lsplit/ls-inline.sml: don't call lcontract anymore.

1998-10-26  Stefan Monnier  <monnier@cs.yale.edu>

	* cps/cpstrans.sml (spillOut): fix from Zhong.

	* cpsopt/cpsopt.sml: use Control.CG.cpsopt and fold over it.

	* main/flintcomp.sml: use Control.FLINT.phases and fold over it.

	* opt/fixfix.sml (curry): use Control.FLINT.maxargs to bound the uncurrying

ViewVC Help
Powered by ViewVC 1.0.0