- Aug 25, 2019
-
-
Ben Gamari authored
Ensures that #15934 doesn't break the 32-bit Windows release build.
-
Ben Gamari authored
-
- Aug 22, 2019
-
-
Ben Gamari authored
For reasons I don't understand sphinx seems to fail to produce a .idx file for makeindex. (cherry picked from commit 9721b40d)
-
- Aug 21, 2019
-
-
Ben Gamari authored
-
Ben Gamari authored
When floating a single-alternative case we previously would set the context level to the level where we were floating the case. However, this is not what FloatOut did: it rather left
-
Ben Gamari authored
-
It is important that `heapCensus` and `LdvCensusForDead` traverse the same areas. `heapCensus` increases the `not_used` counter which tracks how many closures are live but haven't been used yet. `LdvCensusForDead` increases the `void_total` counter which tracks how many dead closures there are. The `LAG` is then calculated by substracting the `void_total` from `not_used` and so it is essential that `not_used >= void_total`. This fact is checked by quite a few assertions. However, if a program has low maximum residency but allocates a lot in the nursery then these assertions were failing (see #16753 and #15903) because `LdvCensusForDead` was observing dead closures from the nursery which totalled more than the `not_used`. The same closures were not counted by `heapCensus`. Therefore, it seems that the correct fix is to make `LdvCensusForDead` agree with `heapCensus` and not traverse the nursery for dead closures. Fixes #16100 #16753 #15903 #8982 (cherry picked from commit 1dc61c1a)
-
It is possible that void_total is exactly equal to not_used and the other assertions for this check for <= rather than <. (cherry picked from commit a196d9c3)
-
This implements the correct fix for #11627 by skipping over the slop (which is zeroed) rather than adding special case logic for LARGE ARR_WORDS which runs the risk of not performing a correct census by ignoring any subsequent blocks. This approach implements similar logic to that in Sanity.c (cherry picked from commit 808a87ff)
-
Simon Peyton Jones authored
The simple optimiser was making an invalid transformation to join points -- yikes. The fix is easy. I also added some documentation about the fact that GHC uses a slightly more restrictive version of join points than does the paper. Fix #16918 (cherry picked from commit d2e290d3)
-
Ömer Sinan Ağacan authored
When `join_ids` is empty `extendVarSetList existing_joins join_ids` is already no-op, so no need to check whether `join_ids` is empty or not before extending the joins set. (cherry picked from commit 897a59a5)
-
Ben Gamari authored
-
Ben Gamari authored
-
Ben Gamari authored
-
Ben Gamari authored
For some reason configure seems unable to find it on its own. Let's try giving it a hint. Addresses #16398. (cherry picked from commit 7e404afd)
-
Simon Peyton Jones authored
Ticket #16978 showed that we were floating a recursive, unlifted join point to top level. It's very much a corner case: joinrec j :: Int# j = jump j in ... But somehow it showed up in a real program. For non-recursive bindings in SetLevels.lvlBind we were already (correctly) checking for unlifted bindings, but when I wrote that code I didn't think that a /recursive/ binding could be unlifted but /join-points/ can be! Actually I don't think that SetLevels should be floating join points at all. SetLevels really floats things to move stuff out of loops and save allocation; but none of that applies to join points. The only reason to float join points is in cases like join j1 x = join j2 y = ... in ... which we might want to swizzle to join j2 x y = ... in join j1 x = ... in ... because now j1 looks small and might be inlined away altogether. But this is a very local float perhaps better done in the simplifier. Still: this patch fixes the crash, and does so in a way that is harmless if/when we change our strategy for floating join points. (cherry picked from commit 7d8d0012)
-
Ben Gamari authored
(cherry picked from commit 3b31a94d)
-
Ömer Sinan Ağacan authored
-
Ben Gamari authored
Issue #16893 reveals that the unsafeCoercion# in eqTypeRep can float in a way that compromises type safety. A real solution for this sadly won't be ready for 8.10 so this is a stop-gap measure for 8.8.
-
- Aug 09, 2019
-
-
Simon Peyton Jones authored
The `mkEtaWW` case for newtypes forgot to apply the substitution to the newtype coercion, resulting in the Core Lint errors observed in #16979. Easily fixed. Fixes #16979. Co-authored-by: Ryan Scott <ryan.gl.scott@gmail.com> (cherry picked from commit 2829f6da)
-
- Aug 06, 2019
-
-
Ben Gamari authored
This reverts commit 4e1dfc37. Due to #16943. (cherry picked from commit bbdd2c96)
-
- Aug 05, 2019
-
-
This adds lookup logic for _GLOBAL_OFFSET_TABLE_ as well as relocation logic for R_ARM_BASE_PREL and R_ARM_GOT_BREL which the gnu toolchain (gas, gcc, ...) prefers to produce. Apparently recent llvm toolchains will produce those as well. (cherry picked from commit 82693938)
-
Roland Senn authored
To display the free variables for a single breakpoint, GHCi pulls out the information from the fields `modBreaks_breakInfo` and `modBreaks_vars` of the `ModBreaks` data structure. For a specific breakpoint this gives 2 lists of types 'Id` (`Var`) and `OccName`. They are used to create the Id's for the free variables and must be kept in sync: If we remove an element from the Names list, then we also must remove the corresponding element from the OccNames list. (cherry picked from commit 32be4461)
-
Ben Gamari authored
-
- Aug 04, 2019
-
-
Ben Gamari authored
It looks like this was an incomplete cherry-pick.
-
- Aug 02, 2019
-
-
Ivan Kasatenko authored
Backport of the master changes to the comment to prevent merge conflicts.
-
- Jul 23, 2019
-
-
Ivan Kasatenko authored
1. Slightly increased the waiting time for the tested effect to be more profound. 2. Introduced measuring of the actual time spent waiting and adjusing CPU time by it to compensate for threadDelay waiting time inconsistencies.
-
Ivan Kasatenko authored
Kqueue/kevent implementation used to ignore events to be unsubscribed from when events to be subscribed to were provided. This resulted in a lost notification subscription, when GHC runtime didn't listen for any events, yet the kernel considered otherwise and kept waking up the IO manager thread. This commit fixes this issue by always adding and removing all of the provided subscriptions.
-
- Jul 21, 2019
-
-
Ben Gamari authored
* Use show! in source tarball job. Since we aren't actually building anything in this job `show` won't work. * Fix Docker image name * Make `version` file contain only version string
-
Ben Gamari authored
-
- Jul 20, 2019
-
-
Ben Gamari authored
As fromFlag is partial. The only case where we used fromFlag is when determining whether to strip libraries; we now assume that we shouldn't.
-
Ben Gamari authored
-
Ben Gamari authored
-
Ben Gamari authored
-
- Jul 15, 2019
-
-
Ben Gamari authored
-
- Jul 13, 2019
-
-
Ben Gamari authored
This will hopefully become release 0.10.8.3.
-
- Jul 05, 2019
-
-
Ben Gamari authored
-
- Jul 04, 2019
-
-
Ben Gamari authored
-
- Jul 01, 2019
-
-
Ben Gamari authored
This is the initial commit of a utility that I have been using to compare the user-facing interfaces exposed by GHC across releases