Ian Lynagh wrote:
On Thu, Jan 03, 2008 at 07:07:56AM -0500, Isaac Dupree wrote:
even have memory leaks. To partially remedy this, What if in data types everywhere
data Foo = Foo FastInt
becomes
data Foo = Foo !FastInt
(the strictness annotation simply has no additional effect when FastInt = Int# )
or even
data Foo = Foo {-#UNPACK#-}!FastInt

Once this is done, it may be possible to go even further: If modern GHC
can optimise code using Int to the same code that we would get if we
used Int#, then it would be nice to de-hash as much of GHC's code as
possible, and use the standard (+), (>) etc.

okay then, first step is the "safe" one of augmenting FastTypes, removing nonportable unboxing from most of the code, and adding those strictness annotations. I'm not going to have time to do more than a very cursory inspection of varying performance, this time.

We might need to give it a little help, e.g. using STRICT(x) in the odd
pattern, where:

#if __GLASGOW_HASKELL__ >= 608
#define STRICT(x) !(x)
#else
#define STRICT(x) (x)
#endif

sounds alright. (weren't bang-patterns introduced in GHC-6.6, so __GLASGOW_HASKELL__ >= 606 ?)


~Isaac

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to