[cvs-nhc98] patch applied (hat): Modified combinators and also
slightly the transformation.
Malcolm Wallace
Malcolm.Wallace at cs.york.ac.uk
Tue Oct 10 07:02:39 EDT 2006
Wed Mar 28 10:33:56 PST 2001 olaf
* Modified combinators and also slightly the transformation.
Moved introduction of Sat's from functions side (fun?, prim?) to
application side (ap?, rap?).
- Removes previous bug that transformed program was too eager,
e.g. in (True || h True) the application of h was evaluated.
- Creation of Sat and App? trace nodes now next to each other.
Integration of writing a Sat and an App? now straightforward.
- Subsequent RHS-optimisation possible.
Corrected bug in transformation of let. Expression after in is only
in projective context if whole let is in projective context.
This bug could lead to missing Hidden node in trusted code and
too eager evaluation when the RHS-optimisation is used.
Introduced separate combinator trif for if in projective context.
The use of original tif could lead to too eager evaluation
(never observed) and this would have become worse with the
RHS-optimisation.
RHS-optimisation: If an application (or if) is in projective context,
then it doesn't need a Sat, because the application node only serves
as a parent, but is never pointed to from an App? as an argument.
So modified rap? and trif to not produce Sats. This halfs the number
of SatCs and reduces runtime by ~10%.
M ./src/compiler98/DbgId.hs -2 +4
M ./src/compiler98/DbgTrans.hs -4 +4
More information about the Cvs-nhc98
mailing list