- Jul 06, 2015
-
-
Ben Gamari authored
This reverts commit e1e68550 which was accidentally pushed.
-
- Aug 09, 2012
-
-
-package P means "the latest version of P" if multiple versions are installed. It was working as advertised, but we were eagerly *linking* all versions of P, which might cause an error if the package has some C code, because we can't link multiple instances of the same symbol. MERGED from commit 62164cf5
-
- Jun 21, 2012
- Jun 19, 2012
-
-
There was also a bug caused by INLINEs getting SCCs, but unfortunately I have lost the test case. The Note in the code describes the problem though. MERGED from commit 6181e007
-
- Jun 17, 2012
-
-
pcapriotti authored
Patch by Samuel Thibault. See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=659530. MERGED from commit d2b538c8
-
- Jun 15, 2012
-
-
We were keeping around the Task struct (216 bytes) for every worker we ever created, even though we only keep a maximum of 6 workers per Capability. These Task structs accumulate and cause a space leak in programs that do lots of safe FFI calls; this patch frees the Task struct as soon as a worker exits. One reason we were keeping the Task structs around is because we print out per-Task timing stats in +RTS -s, but that isn't terribly useful. What is sometimes useful is knowing how *many* Tasks there were. So now I'm printing a single-line summary, this is for the program in TASKS: 2001 (1 bound, 31 peak workers (2000 total), using -N1) So although we created 2k tasks overall, there were only 31 workers active at any one time (which is exactly what we expect: the program makes 30 safe FFI calls concurrently). This also gives an indication of how many capabilities were being used, which is handy if you use +RTS -N without an explicit number. MERGED from commit 085c7fe5
-
- Jun 11, 2012
-
-
pcapriotti authored
-
- Jun 08, 2012
-
-
MERGED from commit 20ba7f1a
-
A thunk with no free variables was not getting blackholed when -feager-blackholing was on, but we were nevertheless pushing the stg_bh_upd_frame version of the update frame that expects to see a black hole. I fixed this twice for good measure: - we now call blackHoleOnEntry when pushing the update frame to check whether the closure was actually blackholed, and so that we use the same predicate in both places - we now black hole thunks even if they have no free variables. These only occur when optimisation is off, but presumably if you say -feager-blackholing then that's what you want to happen. MERGED from commit 21a53a1c
-
- Jun 07, 2012
-
-
Ian Lynagh authored
-
- Jun 05, 2012
-
-
MERGED from commit d82da293
-
MERGED from commit c95342ce
-
pcapriotti authored
-
Hopefully should fix random "bad heap profile" failures in the nightly builds. MERGED from commit 634fb8d3
-
- Jun 01, 2012
-
-
Ian Lynagh authored
-
Ian Lynagh authored
-
- May 30, 2012
-
-
Ian Lynagh authored
Merge of: commit 4fa3f16d Author: Simon Peyton Jones <simonpj@microsoft.com> Date: Mon May 28 17:33:42 2012 +0100 Be less aggressive about the result discount This patch fixes Trac #6099 by reducing the result discount in CoreUnfold.conSize. See Note [Constructor size and result discount] in CoreUnfold. The existing version is definitely too aggressive. Simon M found it an "unambiguous win" but it is definitely what led to the bloat. In a function with a lot of case branches, all returning a constructor, the discount could grow arbitrarily large. I also had to increase the -funfolding-creation-threshold from 450 to 750, otherwise some functions that should inline simply never get an unfolding. (The massive result discount was allow the unfolding to appear before.) The nofib results are these, picking a handful of outliers to show. Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- fulsom -0.5% -1.6% -2.8% -2.6% +31.1% maillist -0.2% -0.0% 0.09 0.09 -3.7% mandel -0.4% +6.6% 0.12 0.12 +0.0% nucleic2 -0.2% +18.5% 0.11 0.11 +0.0% parstof -0.4% +4.0% 0.00 0.00 +0.0% -------------------------------------------------------------------------------- Min -0.9% -1.6% -19.7% -19.7% -3.7% Max +0.3% +18.5% +2.7% +2.7% +31.1% Geometric Mean -0.3% +0.4% -3.0% -3.0% +0.2% Turns out that nucleic2 has a function Main.$wabsolute_pos = \ (ww_s4oj :: Types.Tfo) (ww1_s4oo :: Types.FloatT) (ww2_s4op :: Types.FloatT) (ww3_s4oq :: Types.FloatT) -> case ww_s4oj of _ { Types.Tfo a_a1sS b_a1sT c_a1sU d_a1sV e_a1sW f_a1sX g_a1sY h_a1sZ i_a1t0 tx_a1t1 ty_a1t2 tz_a1t3 -> (# case ww1_s4oo of _ { GHC.Types.F# x_a2sO -> case a_a1sS of _ { GHC.Types.F# y_a2sS -> case ww2_s4op of _ { GHC.Types.F# x1_X2y9 -> case d_a1sV of _ { GHC.Types.F# y1_X2yh -> case ww3_s4oq of _ { GHC.Types.F# x2_X2yj -> case g_a1sY of _ { GHC.Types.F# y2_X2yr -> case tx_a1t1 of _ { GHC.Types.F# y3_X2yn -> GHC.Types.F# (GHC.Prim.plusFloat# (GHC.Prim.plusFloat# (GHC.Prim.plusFloat# (GHC.Prim.timesFloat# x_a2sO y_a2sS) (GHC.Prim.timesFloat# x1_X2y9 y1_X2yh)) (GHC.Prim.timesFloat# x2_X2yj y2_X2yr)) y3_X2yn) } } }}}}}, <similar>, <similar> ) This is pretty big, but inlining it does get rid of that F# allocation. But we'll also get rid of it with deep CPR: Trac #2289. For now we just accept the change.
-
- May 16, 2012
-
-
pcapriotti authored
-
pcapriotti authored
-
- May 08, 2012
-
-
pcapriotti authored
-
MERGED from commit b6e28266
-
MERGED from commit 4ca28182
-
pcapriotti authored
To prevent conflicts with GCC builtins, generate identical code for calls to mem primos and FFI calls. Based on a patch by Joachim Breitner. MERGED from commit 40c1106c
-
- May 03, 2012
-
-
Simon Marlow authored
The reasoning is that GHC will only skip recompilation if it has found a valid up-to-date object file and .hi file, so there is no need to also check that these flags have not changed, and indeed there are valid reasons to want to change them.
-
Nathan Howell authored
Fixes gas errors when -g is enabled: Error: can't resolve `.debug-ghc-link-info' {.debug-ghc-link-info section} - `.Ltext0' {.text section}
-
- Apr 27, 2012
-
-
pcapriotti authored
MERGED from commit 18c2a2f7
-
pcapriotti authored
MERGED from commit 44098b3d
-
- Apr 26, 2012
-
-
A long-standing and egregious bug in the worker/wrapper code meant that some functions with the CPR property weren't getting a CPR w/w. And that had the effect of making a tail-recursive function not tail recursive. As well as increasing allocation. Fixes Trac #5920, and #5997. Nofib results (highlights): Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- boyer2 -0.1% -15.3% 0.01 0.01 +0.0% mandel2 -0.0% -8.1% 0.01 0.01 +0.0% para -0.1% -11.8% -7.9% -7.8% +0.0% -------------------------------------------------------------------------------- Min -0.1% -15.3% -7.9% -7.8% -33.3% Max +0.0% +0.2% +6.3% +6.3% +3.7% Geometric Mean -0.0% -0.4% +0.1% +0.1% -0.5% Looks like a clear win. And I have not even recompiled the libraries, so it'll probably be a bit better in the ed. MERGED from commit b8ff4448
-
- Apr 16, 2012
-
-
pcapriotti authored
-
- Apr 12, 2012
-
-
MERGED from commit 5eabdc16
-
I don't think it was causing any problems, but TimeToUS(x+y) would have evaluated to x + (y / 1000) MERGED from commit 54121fff On the 7.4 branch, this was causing a wrong conversion in getDelayTarget. Signed-off-by:
Paolo Capriotti <p.capriotti@gmail.com>
-
The threaded RTS had a fix for this a long time ago (#1623) but this patch applies a similar fix to the non-threaded RTS. MERGED from commit dd24d6bc
-
Firstly, we were rounding up too much, such that the smallest delay was 20ms. Secondly, there is no need to use millisecond resolution on a 64-bit machine where we have room in the TSO to use the normal nanosecond resolution that we use elsewhere in the RTS. MERGED from commit 9d26519c
-
- Apr 06, 2012
-
-
This fixes haddock so it correctly reports the safe haskell mode of a module.
-
-
-
pcapriotti authored
MERGED from commit e7e5e277
-
This allows us to give a sensible error message when a Template Haskell splice generates an occurrence without a binding site. Fixes Trac #5959 and #5971 MERGED from commit cb5a3f2d
-
- Apr 02, 2012
-
-
pcapriotti authored
This reverts commit 6a217ed6.
-
pcapriotti authored
-