- 19 Mar, 2009 2 commits
-
-
Simon Marlow authored
-
chak@cse.unsw.edu.au. authored
-
- 18 Mar, 2009 3 commits
-
-
dias@eecs.tufts.edu authored
-
Simon Marlow authored
I'm not sure if this is the correct fix. If targetPlatform is really NCG-specific, then maybe we should call it asmTargetPlatform or something.
-
dias@eecs.tufts.edu authored
-
- 17 Mar, 2009 1 commit
-
-
dias@eecs.tufts.edu authored
- yet another wrong calling convention; this one was a special case for returning one value.
-
- 16 Mar, 2009 2 commits
-
-
dias@eecs.tufts.edu authored
- The function argument was stripped from the argument list but not from the type. Now they're both stripped.
-
dias@eecs.tufts.edu authored
1. Stack overflow fixed by making dataflow monad strict in the state. 2. Out of memory fixed by "forgetting" lastoutfacts in the dataflow monad where we should. We were creating an unnecessarily long list that grew exponentially...
-
- 18 Mar, 2009 2 commits
-
-
simonpj@microsoft.com authored
This patch adds an optional CONLIKE modifier to INLINE/NOINLINE pragmas, {-# NOINLINE CONLIKE [1] f #-} The effect is to allow applications of 'f' to be expanded in a potential rule match. Example {-# RULE "r/f" forall v. r (f v) = f (v+1) #-} Consider the term let x = f v in ..x...x...(r x)... Normally the (r x) would not match the rule, because GHC would be scared about duplicating the redex (f v). However the CONLIKE modifier says to treat 'f' like a constructor in this situation, and "look through" the unfolding for x. So (r x) fires, yielding (f (v+1)). The main changes are: - Syntax - The inlinePragInfo field of an IdInfo has a RuleMatchInfo component, which records whether or not the Id is CONLIKE. Of course, this needs to be serialised in interface files too. - The occurrence analyser (OccAnal) and simplifier (Simplify) treat CONLIKE thing like constructors, by ANF-ing them - New function coreUtils.exprIsExpandable is like exprIsCheap, but additionally spots applications of CONLIKE functions - A CoreUnfolding has a field that caches exprIsExpandable - The rule matcher consults this field. See Note [Expanding variables] in Rules.lhs. On the way I fixed a lurking variable bug in the way variables are expanded. See Note [Do not expand locally-bound variables] in Rule.lhs. I also did a bit of reformatting and refactoring in Rules.lhs, so the module has more lines changed than are really different.
-
Simon Marlow authored
-
- 17 Mar, 2009 3 commits
-
-
Simon Marlow authored
Generate binary log files from the RTS containing a log of runtime events with timestamps. The log file can be visualised in various ways, for investigating runtime behaviour and debugging performance problems. See for example the forthcoming ThreadScope viewer. New GHC option: -eventlog (link-time option) Enables event logging. +RTS -l (runtime option) Generates <prog>.eventlog with the binary event information. This replaces some of the tracing machinery we already had in the RTS: e.g. +RTS -vg for GC tracing (we should do this using the new event logging instead). Event logging has almost no runtime cost when it isn't enabled, though in the future we might add more fine-grained events and this might change; hence having a link-time option and compiling a separate version of the RTS for event logging. There's a small runtime cost for enabling event-logging, for most programs it shouldn't make much difference. (Todo: docs)
-
Simon Marlow authored
Since we introduced pointer tagging, we no longer always enter a closure to evaluate it. However, the biographical profiler relies on closures being entered in order to mark them as "used", so we were getting spurious amounts of data attributed to VOID. It turns out there are various places that need to be fixed, and I think at least one of them was also wrong before pointer tagging (CgCon.cgReturnDataCon).
-
Simon Marlow authored
Somebody needs to implement getNumberOfProcessors() for MacOS X, currently it will return 1.
-
- 16 Mar, 2009 3 commits
-
-
Simon Marlow authored
Also remove some unused cruft
-
Simon Marlow authored
Fixes heapprof001(prof_hp) after fix for #2917
-
Simon Marlow authored
Fixes heapprof001(prof_hp) following the recent HpLim patch, which depended on the lack of slop in the heap.
-
- 13 Mar, 2009 2 commits
-
-
Simon Marlow authored
-
Simon Marlow authored
-
- 17 Feb, 2009 1 commit
-
-
Simon Marlow authored
-
- 16 Mar, 2009 4 commits
-
-
simonpj@microsoft.com authored
-
simonpj@microsoft.com authored
-
simonpj@microsoft.com authored
-
simonpj@microsoft.com authored
We were't checking that a 'data/type instance' was extending a family type constructor. Merge to 6.10 if we ever release 6.10.3 (or do it for 6.10.2).
-
- 15 Mar, 2009 1 commit
-
-
chak@cse.unsw.edu.au. authored
- During fianlisation we use to occasionally swivel variable-variable equalities - Now, normalisation ensures that they are always oriented as appropriate for instantation. - Also fixed #1899 properly; the previous fix fixed a symptom, not the cause.
-
- 13 Mar, 2009 6 commits
-
-
Simon Marlow authored
New flag: "+RTS -qb" disables load-balancing in the parallel GC (though this is subject to change, I think we will probably want to do something more automatic before releasing this). To get the "PARGC3" configuration described in the "Runtime support for Multicore Haskell" paper, use "+RTS -qg0 -qb -RTS". The main advantage of this is that it allows us to easily disable load-balancing altogether, which turns out to be important in parallel programs. Maintaining locality is sometimes more important that spreading the work out in parallel GC. There is a side benefit in that the parallel GC should have improved locality even when load-balancing, because each processor prefers to take work from its own queue before stealing from others.
-
simonpj@microsoft.com authored
This patch generates code in deriving(Data) for dataCast1 or 2 as appropriate. While I was there I did some refactoring (of course), pulling out the TcDeriv.inferConstraints as a separate function. I don't think it's worth merging this to 6.10.2, even though it's a bugfix, because it modifies code that I added in the HEAD only (for deriving Functor) so the merge will be sligtly awkward. And there's an easy workaround.
-
simonpj@microsoft.com authored
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
-
- 12 Mar, 2009 1 commit
-
-
Simon Marlow authored
-
- 13 Mar, 2009 1 commit
-
-
Simon Marlow authored
This reduces the latency between a context-switch being triggered and the thread returning to the scheduler, which in turn should reduce the cost of the GC barrier when there are many cores. We still retain the old context_switch flag which is checked at the end of each block of allocation. The idea is that setting HpLim may fail if the the target thread is modifying HpLim at the same time; the context_switch flag is a fallback. It also allows us to "context switch soon" without forcing an immediate switch, which can be costly.
-
- 12 Mar, 2009 1 commit
-
-
Simon Marlow authored
I ended up rewriting this horrible bit of code, using (yikes) lazy I/O to slurp in the source file a chunk at a time. The old code tried to read the file a chunk at a time, but failed with LANGUAGE pragmas because the parser for LANGUAGE has state and the state wasn't being saved between chunks. We're still closing the Handle eagerly, so there shouldn't be any problems here.
-
- 11 Mar, 2009 6 commits
-
-
Simon Marlow authored
-
Ian Lynagh authored
-
Simon Marlow authored
This is just a hack, since we don't have correct unicode output for Handles in general, I just fixed a couple of places where we were not converting to UTF-8 for output.
-
Simon Marlow authored
Evidently I misread the docs for CreateEvent: if you pass a name to CreateEvent, then it creates a single shared system-wide Event with that name. So all Haskell processes on the machine were sharing the same Event object. duh.
-
Simon Marlow authored
Now ghc --info reports whether-split-objs is supported, rather than whether the libraries were built using -split-objs.
-
Simon Marlow authored
-
- 10 Mar, 2009 1 commit
-
-
Ian Lynagh authored
-