Commits on Source (5)
-
Hannes Siebenhandl authored
Bump haddock submodule for IfLclName changes
f6d49535 -
Hannes Siebenhandl authored
The type `IfaceType` is a highly redundant, tree-like data structure. While benchmarking, we realised that the high redundancy of `IfaceType` causes high memory consumption in GHCi sessions. We fix this by adding a deduplication table to the serialisation of `ModIface`, similar to how we deduplicate `Name`s and `FastString`s. When reading the interface file back, the table allows us to automatically share identical values of `IfaceType`. This deduplication has the beneficial side effect to additionally reduce the size of the on-disk interface files tremendously. We also add IfaceType deduplication table to .hie serialisation and refactor .hie file serialisation to use the same infrastrucutre as `putWithTables`.
5297584c -
Introduce the flag `-fwrite-if-compression=<n>` which allows to configure the compression level of writing .hi files. Reading .hi files doesn't need to know the initial compression level, and can always deserialise a `ModIface`. This allows users to experiment with different compression levels for packages, without recompilation of dependencies. We introduce three compression levels: * `1`: `Normal` mode. This is the least amount of compression. It deduplicates only `Name` and `FastString`s, and is naturally the fastest compression mode. * `2`: `Safe` mode. It has a noticeable impact on .hi file size and is marginally slower than `Normal` mode. In general, it should be safe to always use `Safe` mode. * `3`: `Full` deduplication mode.
783a7308 -
various types
c75e9e5d -
Hannes Siebenhandl authored9eb585b9
Showing
- compiler/GHC/Core/Map/Expr.hs 3 additions, 0 deletionscompiler/GHC/Core/Map/Expr.hs
- compiler/GHC/Core/TyCo/Rep.hs 2 additions, 2 deletionscompiler/GHC/Core/TyCo/Rep.hs
- compiler/GHC/CoreToIface.hs 13 additions, 13 deletionscompiler/GHC/CoreToIface.hs
- compiler/GHC/Data/FastString.hs 4 additions, 1 deletioncompiler/GHC/Data/FastString.hs
- compiler/GHC/Data/TrieMap.hs 82 additions, 11 deletionscompiler/GHC/Data/TrieMap.hs
- compiler/GHC/Driver/DynFlags.hs 2 additions, 0 deletionscompiler/GHC/Driver/DynFlags.hs
- compiler/GHC/Driver/Main.hs 3 additions, 3 deletionscompiler/GHC/Driver/Main.hs
- compiler/GHC/Driver/Session.hs 2 additions, 0 deletionscompiler/GHC/Driver/Session.hs
- compiler/GHC/Iface/Binary.hs 100 additions, 23 deletionscompiler/GHC/Iface/Binary.hs
- compiler/GHC/Iface/Decl.hs 3 additions, 4 deletionscompiler/GHC/Iface/Decl.hs
- compiler/GHC/Iface/Env.hs 7 additions, 8 deletionscompiler/GHC/Iface/Env.hs
- compiler/GHC/Iface/Ext/Binary.hs 72 additions, 91 deletionscompiler/GHC/Iface/Ext/Binary.hs
- compiler/GHC/Iface/Ext/Utils.hs 3 additions, 3 deletionscompiler/GHC/Iface/Ext/Utils.hs
- compiler/GHC/Iface/Load.hs 11 additions, 3 deletionscompiler/GHC/Iface/Load.hs
- compiler/GHC/Iface/Recomp.hs 2 additions, 2 deletionscompiler/GHC/Iface/Recomp.hs
- compiler/GHC/Iface/Recomp/Binary.hs 7 additions, 2 deletionscompiler/GHC/Iface/Recomp/Binary.hs
- compiler/GHC/Iface/Syntax.hs 2 additions, 1 deletioncompiler/GHC/Iface/Syntax.hs
- compiler/GHC/Iface/Type.hs 115 additions, 46 deletionscompiler/GHC/Iface/Type.hs
- compiler/GHC/Iface/Type/Map.hs 180 additions, 0 deletionscompiler/GHC/Iface/Type/Map.hs
- compiler/GHC/IfaceToCore.hs 14 additions, 14 deletionscompiler/GHC/IfaceToCore.hs
compiler/GHC/Iface/Type/Map.hs
0 → 100644