- 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
-
- Apr 01, 2012
-
-
If we overflow the current stack chunk and copy its entire contents into the next stack chunk, we could end up with two UNDERFLOW_FRAMEs. We had a special case to catch this in the case when the old stack chunk was the last one (ending in STOP_FRAME), but it went wrong for other chunks. I found this bug while poking around in the core dump attached to options and running the nofib suite: imaginary/wheel_sieve2 crashed with +RTS -kc600 -kb300. I don't know if this is the cause of all the symptoms reported in MERGED from commit 734f1d48
-
- Mar 31, 2012
-
-
pcapriotti authored
MERGED from commit a39a1925
-
- Mar 30, 2012
-
-
pcapriotti authored
MERGED from commit ac2fbb4f
-
Add support for ELF objects on ARM to the runtime linker. While the list of relocation types in the "ELF for the ARM Architecture" specification spans four pages, we thankfully only see a handful of these in the wild. Thus, at the moment we only support the following .rel relocation types, * R_ARM_ABS32 * R_ARM_TARGET1 * R_ARM_REL32 * R_ARM_CALL * R_ARM_JUMP24 * R_ARM_MOVT_ABS * R_ARM_MOVW_ABS_NC * R_ARM_THM_CALL * R_ARM_THM_JUMP24 * R_ARM_THM_MOVT_ABS * R_ARM_THM_MOVW_ABS_NC * R_ARM_THM_JUMP8 * R_ARM_THM_JUMP11 Signed-off-by: Ben Gamari <bgamari.foss@gmail.com> MERGED from commit b22501b4
-
- Mar 28, 2012
- Mar 26, 2012
-
-
pcapriotti authored
MERGED from commit d2d5ee16
-
Signed-off-by: David Terei <davidterei@gmail.com> MERGED from commit 766da942
-
MERGED from commit 4bbe9f71
-
- Mar 23, 2012
-
-
MERGED from commit 42c8e80165bb087493b95a768bbbf276870c7056
-