- 11 Dec, 2001 5 commits
- 10 Dec, 2001 14 commits
-
-
sof authored
bdescr's back field is now inside a union
-
sewardj authored
Add just enough infrastructure to the NCG that it can deal with simple 64-bit code on 32-bit platforms. Main changes are: * Addition of a simple 64-bit instruction selection fn iselExpr64 to MachCode. This generates code for a 64-bit value and places the results into two virtual registers, related thusly: * Add a new type VRegUnique, which is used to label Stix virtual registers. This type used to be a plain Unique, but that forces the assumption that each Abstract-C level C temporary corresponds to exactly one Stix virtual register, which is untrue when the C temporary is 64-bit sized on a 32-bit machine. In the new scheme, the Unique for the C temporary can turn into two related VRegUniques, related by having the same embedded unique. * Made a start on 'target metrics' by adding ncg_target_is_32bits to the end of Stix.lhs. * Cleaned up numerous other gruesomenesses in the NCG which never came to light before now. Got rid of MachMisc.sizeOf, which doesn't make sense in a 64-bit setting, and replaced it by calls to PrimRep.getPrimRepArrayElemSize, which, as far as I'm concerned, is the definitive answer to the questio `How Big Is This PrimRep Really?' Result: on x86-linux, at least, you can now compile the Entire Prelude with -fasm! At this stage I cannot claim that the resulting code is correct, but it's a start.
-
sof authored
RTS_SYMBOLS: MainCapability is not defined in SMP-mode
-
sewardj authored
Fix a presumably long-standing cut-n-paste-o, wherein HP_CHK_L1 had exactly the same definition as HP_CHK_D1.
-
simonmar authored
Some lifting of the lazy parts of the parse tree so we don't parse too much when using happy --strict.
-
simonmar authored
The flag -fno-cpr is now only present in a DEBUG compiler.
-
simonmar authored
Make the inclusion of the old strictness analyser, CPR analyser, and the relevant IdInfo components, conditional on DEBUG. This makes IdInfo smaller by three fields in a non-DEBUG compiler, and reduces the risk that the unused fields could harbour space leaks. Eventually these passes will go away altogether.
-
simonmar authored
Note that the final call to coreBindsSize is still necessary to eliminate space leakage from the simplifier.
-
simonmar authored
Print the "type description" of a closure for profiling as the user string, not the Z-encoded string. Fixes problems with things like 'ZMZN' appearing in profiling output.
-
simonmar authored
Make the OccName and SrcLoc fields of a Name strict, to eliminate space leaks. This doesn't hurt performance.
-
simonmar authored
Don't force the IdInfo of a variable *occurrence* in exprSize, just the binding sites should be enough.
-
simonpj authored
------------------------------ Don't do CPR w/w for constants ------------------------------ We don't want to do a CPR split for a constant function. So if the worker will get no (value) args, we disable the CPR transformation. This infelicity exposed a buglet in the full laziness transformation; we were floating an expression outside an InlineMe context. I've take the blunderbuss approach now, of effectively disabling full laziness inside an InlineMe. Seems reasonable.
-
sebc authored
MacOS X 10.1 identifies as "darwin"
-
sebc authored
MacOS X 10.1 now has a libm
-
- 07 Dec, 2001 7 commits
-
-
sof authored
- tidy up TICK_ALLOC_TSO() uses. - scheduleThread: remove special-case for END_TSO_QUEUE. If you want to call schedule(), do so directly. (Only one of the scheduleThread() call sites depended on this feature).
-
simonpj authored
---------------------------- More jiggling in the renamer ---------------------------- I was a little hasty before. (Thanks Sigbjorn for finding this.) This commit tidies up the handling of AvailEnvs. Principally: * filterImports now deals completely with hiding (before it handed off part of the job to mkGlobalRdrEnv) * The AvailEnv in an ExportAvails does not have class ops and data constructors in its domain. This makes plusExportAvails more efficient, but the main thing is that it collects things up right. (Previously, if we had import M( C ) import M( op ) then we got an AvailEnv which had C |-> AvailTC C [C] (no 'op'). * In Rename, we do need a "filled-out" version of the overall AvailEnv, full_avail_env, which we construct on the spot in 'rename'.
-
sof authored
Track the removal of ReallyUnsafePtrEqualityOp + InterTo{Int,Word}64Op primops.
-
sewardj authored
Change the story on shifting primops: SllOp, SrlOp, ISllOp, ISraOp, ISrlOp. In the old primop story, these were implemented by C macros which checked that the shift amount did not exceed the word size, and if so returns a suitable value (0 or -1). This gives consistent, defined behaviour for any shift amount. However, these checks were not implemented on the NCG route, an inconsistency. New story: these primops do NOT check their args; they just do the shift. Shift values >= word size give undefined results. To reflect this, their Haskell names have been prefixed with 'unchecked'. The checks are now done on the Bits instances in the Prelude. This means all code generation routes are consistently checked, and hopefully the simplifier will remove the checks for literal shift amounts. I have tried to fix up the implementation for 64-bit platforms too, but not having one to hand, I don't know if it will work as-is.
-
sewardj authored
Comments only.
-
sof authored
mkExportAvails: computing the AvailEnv is rather delicate
-
sof authored
Tidyup - previous instance-decl commit fell a bit short: * RnEnv.lookupInstDeclBndr unceremoniously fell over when passed an out-of-scope class name. * the AvailEnv carried around didn't common up type/class info (i.e., AvailTCs), but rather type/class and method/label names, causing the renamer to (semi)randomly report instance methods as being out-of-scope in the presence of multiple imports for a module. * didn't support 'hiding' of class / method names (for the purposes of checking instance decls).
-
- 06 Dec, 2001 14 commits
-
-
simonmar authored
Make the Name field of a Var strict - it doesn't hurt performance (in fact it makes a tiny improvement) but it can help residency.
-
simonmar authored
Turn a lazy pattern match into a strict one in tidyIdBndr. This prevents us accidentally hanging onto stuff in the OccName field of a Name after tidying.
-
simonmar authored
- Fix THUNK_SELECTOR printing code - change some more stderrs into stdouts
-
sewardj authored
Make it compile -DDEBUG.
-
sewardj authored
Remove out-of-date ASSERT in deRefStablePtr_fast.
-
chak authored
Make prof package dependency more precise
-
sewardj authored
Add constructor CBytesPerWord to (the wildly-misnamed) CAddrMode, and use this in various places to remove word size dependencies in the C -> C simplification pass. Tart up the Stix constant folder a bit so as to be able to fold out the shift/mask literal expressions.
-
simonpj authored
-------------------------- Fix the instance-decl wart -------------------------- This commit implements the (proposed) H98 rule for resolving the class-method name in an instance decl. module M( C( op1, op2 ) ) where -- NB: op3 not exported class C a where op1, op2, op3 :: a -> a module N where import qualified M as P( C ) import qualified M as Q hiding( op2 ) instance P.C Int where op1 x = x -- op2, op3 both illegal here The point is that a) only methods that can be named are legal in the instance decl (so op2, op3 are not legal) b) but it doesn't matter *how* they can be named (in this case Q.op1 is in scope, though the class is called P.C) The AvailEnv carries the information about what's in scope, so we now have to carry it around in the monad, so that instance decl bindings can see it. Quite simple really. Same deal for export lists. E.g. module N( P.C( op1 ) ) where import qualified M as P( C ) import qualified M as Q hiding( op2 ) Actually this is what GHC has always implemented!
-
simonpj authored
Comments only
-
mbs authored
Established under cvs.
-
sewardj authored
Remove mention of PrimOpHelpers.h.
-
simonpj authored
Fix the simplIdInfo inconsistency Sigbjorn found
-
sof authored
package rts (mingw32): in installed mode, add gcc-lib/ to library_dirs, forcing it to be used by default. This allows other backend tools to be used (e.g., `dllwrap') without haphazardly mixing & matching (import) libs. MERGE TO STABLE.
-
sof authored
startupHaskell: if invoked more than once, do run initModules() each time, as there might be more than one 'root module'.
-