- Nov 02, 1999
-
-
sof authored
Simple example of callback'ery in action
-
sof authored
updated with expected-output files
-
Simon Peyton Jones authored
Fix bug in instance Dynamic (Either a b)
-
- Nov 01, 1999
-
-
Julian Seward authored
Computation of max-stack-use during BCO generation was completely bogus. Fix it. Also, add a i_STK_CHECK_big insn with 16-bit opcode.
-
Julian Seward authored
Correctly evacuate BCOs on the large object list. Was causing okeefe_neural to fail.
-
Simon Peyton Jones authored
A regrettably-gigantic commit that puts in place what Simon PJ has been up to for the last month or so, on and off. The basic idea was to restore unfoldings to *occurrences* of variables without introducing a space leak. I wanted to make sure things improved relative to 4.04, and that proved depressingly hard. On the way I discovered several quite serious bugs in the simplifier. Here's a summary of what's gone on. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * No commas between for-alls in RULES. This makes the for-alls have the same syntax as in types. * Arrange that simplConArgs works in one less pass than before. This exposed a bug: a bogus call to completeBeta. * Add a top-level flag in CoreUnfolding, used in callSiteInline * Extend w/w to use etaExpandArity, so it does eta/coerce expansion * Implement inline phases. The meaning of the inline pragmas is described in CoreUnfold.lhs. You can say things like {#- INLINE 2 build #-} to mean "inline build in phase 2" * Don't float anything out of an INLINE. Don't float things to top level unless they also escape a value lambda. [see comments with SetLevels.lvlMFE Without at least one of these changes, I found that {-# INLINE concat #-} concat = __inline (/\a -> foldr (++) []) was getting floated to concat = __inline( /\a -> lvl a ) lvl = ...inlined version of foldr... Subsequently I found that not floating constants out of an INLINE gave really bad code like __inline (let x = e in \y -> ...) so I now let things float out of INLINE * Implement the "reverse-mapping" idea for CSE; actually it turned out to be easier to implement it in SetLevels, and may benefit full laziness too. * It's a good idea to inline inRange. Consider index (l,h) i = case inRange (l,h) i of True -> l+i False -> error inRange itself isn't strict in h, but if it't inlined then 'index' *does* become strict in h. Interesting! * Big change to the way unfoldings and occurrence info is propagated in the simplifier The plan is described in Subst.lhs with the Subst type Occurrence info is now in a separate IdInfo field than user pragmas * I found that (coerce T (coerce S (\x.e))) y didn't simplify in one round. First we get to (\x.e) y and only then do the beta. Solution: cancel the coerces in the continuation * Amazingly, CoreUnfold wasn't counting the cost of a function an application. * Disable rules in initial simplifier run. Otherwise full laziness doesn't get a chance to lift out a MFE before a rule (e.g. fusion) zaps it. queens is a case in point * Improve float-out stuff significantly. The big change is that if we have \x -> ... /\a -> ...let p = ..a.. in let q = ...p... where p's rhs doesn't x, we abstract a from p, so that we can get p past x. (We did that before.) But we also substitute (p a) for p in q, and then we can do the same thing for q. (We didn't do that, so q got stuck.) This is much better. It involves doing a substitution "as we go" in SetLevels, though.
-
Simon Peyton Jones authored
fromInt stuff and other wibbles
-
Simon Peyton Jones authored
Minor tweaks to intro, and description of RULES
-
sof authored
ppr change that should have been included with prev absCSyn/ commit
-
Julian Seward authored
Increase NUM_TEXT to 100000 so okeefe_neural will parse.
-
Julian Seward authored
Nuke #if OVERLOADED_CONSTANTS, since H98 requires it by default.
-
Julian Seward authored
Fix codegen bug causing cg028.hs to fail. namePmDouble was not bound to anything, which caused translations of patterns containing doubles to contain NILs. Also bound namePmInteger since it didn't seem to be bound to anything.
-
sof authored
updated
-
sof authored
formatRealFloat: Fixed some e==0 confusion in the default case for FFExponent
-
AndyGill authored
wibble in derive.c Changing stdout's buffering. fflush in the program does not flush the dll's private buffer space on Win32.
-
AndyGill authored
Adding commands to generate the std H98 libs for STG Hugs.
-
AndyGill authored
minor tweaks to do with H98 (like sequence => sequence_, etc) Removing the lib/*hs standard libs to make way for the automatically generated ones.
-
AndyGill authored
Changing to use the new IO primitives. Addr is no longer a synonym of Int.
-
AndyGill authored
Adding type signature to main.
-
- Oct 31, 1999
-
-
sof authored
To workaround gcc/egcs bugs re: handling of non-toplevel "extern" decls, lift them out to the top. i.e., extend mechanism by which "typedefs" are lifted out to the toplevel (for the same reasons) to also encompass "extern"s. Note: the default is not to emit an "extern" decl for every _ccall_, as this runs the chance of (trivially) conflicting with header file includes. So, to enable, use -optC-femit-extern-decls.
-
- Oct 29, 1999
-
-
Julian Seward authored
#include wibble
-
Julian Seward authored
portability wibble
-
Julian Seward authored
Minor efficiency improvements to Prelude I/O functions.
-
sof authored
Pure Win32 builds doesn't support non-blocking IO
-
sof authored
wibble
-
sof authored
attach version info
-
sof authored
s/TargetPlatform/TARGETPLATFORM/g
-
sof authored
Support for baking version info into the gen'ed Prelude DLL
-
sof authored
cbits/ is now also built in a DLL way, if needs be.
-
sof authored
INSTALL_* tweaks
-
Julian Seward authored
Make foreign import and thus the Prelude work on cygwin.
-
Julian Seward authored
Basic #ifdeffery to make StgHugs compile out of the box on cygwin.
-
AndyGill authored
Adding in the modified versions of the Standard Haskell 98 libraries. These should compile under both Hugs and GHC. use the flags -D__HUGS__ -DUSE_REPORT_PRELUDE to extract the Hugs src.
-
AndyGill authored
Fixing bug with derived Read/Show of labeled fields. (showField and readField were undefined).
-
- Oct 28, 1999
-
-
AndyGill authored
Wibble in printing of type contexts.
-
sof authored
When generating C stubs, honour -osuf <x> option
-
sof authored
More {-# OPTIONS .. #-} tweaks: handle -#include "..." (where 'handle' == 'ignore'.)
-
Julian Seward authored
Make platform-specific dynamic loaders add ".so", ".dll" etc to library names, so that f-i decls can be written without them. Modify Prelude accordingly. Remove unused functionality in dynamic.c and make err msgs a bit better.
-
sof authored
Don't warn user of unrecognised options when processing {-# OPTIONS .. #-} pragmas.
-
Simon Peyton Jones authored
More RULES documentation
-