- 09 Apr, 2021 27 commits
-
-
Matthew Pickering authored
-
Matthew Pickering authored
-
Matthew Pickering authored
-
Matthew Pickering authored
-
Matthew Pickering authored
-
Matthew Pickering authored
This instance is only used in rare code paths such as HieFiles
-
Matthew Pickering authored
-
Matthew Pickering authored
We need something compactable here, as a FastString ends up getting compacted.
-
Matthew Pickering authored
-
Matthew Pickering authored
This is a defensive incase someone tries to add back something which mentions ByteString into a ModIface See #17097
-
Matthew Pickering authored
See #17097
-
Matthew Pickering authored
This is towards being able to compact a ModIface (see #17097)
-
Matthew Pickering authored
This is necessary as functions can't be compacted. See #17097
-
Matthew Pickering authored
Not sure this is the best choice but manipulating ShortByteStrings is also awkward
-
Matthew Pickering authored
This change will allow `ModIface` to be compacted. Related to #17097
-
-
-
Also includes small unrelated type fix
-
The test max memory usage improves dramatically with the fixes to memory usage in demand analyser from #15455
-
There used to be some cases were kinds were not generalised properly before being printed in GHCi. This seems to have changed in the past so now it's uncessary to tidy before printing out the test case. ``` > :set -XPolyKinds > data A x y > :k A k1 -> k2 -> A ``` This tidying was causing issues with an attempt to increase sharing by making `mkTyConApp` (see !4762)
-
The approach taking in this patch is that the tcl_bndrs in TcLclEnv are zonked and tidied eagerly, so that work can be shared across multiple calls to `relevant_bindings`. To test this patch I tried without the `keepThisHole` filter and the test finished quickly. Fixes #14766
-
-
-
In commit f3c23939 T18623 is disabled for aarch64. The limit seems to be too low for powerpc64le, too. This could be because tables next to code is not supported and our code generator produces larger code on PowerPC.
-
This allows us to use the unsafe shifts in non-debug builds for performance. For older versions of base we instead export Data.Bits See also #19618
-
Metric Decrease: T16577
-
-
- 08 Apr, 2021 10 commits
-
-
This commit moves the error-related functions in `GHC.Iface.Load` into a brand new module called `GHC.Iface.Errors`. This will avoid boot files and circular dependencies in the context of #18516, in the pretty-printing modules.
-
Previously, associated type family instances would incorrectly claim to implicitly quantify over type variables bound by the instance head in the `HsOuterImplicit`s that `rnFamEqn` returned. This is fixed by using `filterInScopeM` to filter out any type variables that the instance head binds. Fixes #19649.
-
Fixes #11545
-
This avoids a big spike in memory usage during demand analysis. Part of fixing #15455 ------------------------- Metric Decrease: T18698a T18698b T9233 T9675 T9961 -------------------------
-
It seems that these places were supposed to be forced anyway but the forcing has no effect because the result was immediately placed in a lazy box.
-
In the particular case of `DmdEnv`, not applying this function strictly meant 500MB of thunks were accumulated before the values were forced at the end of demand analysis.
-
This can lead to a classic thunk build-up in a TcRef Fixes #19596
-
-
-
Related to #15455
-
- 07 Apr, 2021 3 commits
-
-
And though partially applied foldl' is now again inlined, #4301 has not resurfaced, and appears to be resolved.
-
Dynamic-by-default was a mechanism to automatically select the -dynamic way for some targets. It was implemented in a convoluted way: it was defined as a flavour option, hence it couldn't be passed as a global settings (which are produced by `configure` before considering flavours), so a build system rule was used to pass -DDYNAMIC_BY_DEFAULT to the C compiler so that deriveConstants could infer it. * Make build system has it disabled for 8 years (951e28c0) * It has never been implemented in Hadrian * Last time someone tried to enable it 1 year ago it didn't work (!2436) * Having this as a global constant impedes making GHC multi-target (see !5427) This commit fully removes support for dynamic-by-default. If someone wants to reimplement something like this, it would probably need to move the logic in the compiler. (Doing this would probably need some refactoring of the way the compiler handles DynFlags: DynFlags are used to store and to pass enabled ways to many parts of the compiler. It can be set by command-line flags, GHC API, global settings. In multi-target GHC, we will use DynFlags to load the target platform and its constants: but at this point with the current DynFlags implementation we can't easily update the existing DynFlags with target-specific options such as dynamic-by-default without overriding ways previously set by the user.)
-
Workaround for #19624
-