[commit: ghc] master: Implement late lambda lift (b2950e0)

git at git.haskell.org git at git.haskell.org
Fri Nov 23 15:26:58 UTC 2018


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/b2950e03b551d82d62ec25eb232284aaf121b4e2/ghc

>---------------------------------------------------------------

commit b2950e03b551d82d62ec25eb232284aaf121b4e2
Author: Sebastian Graf <sebastian.graf at kit.edu>
Date:   Fri Nov 23 16:24:18 2018 +0100

    Implement late lambda lift
    
    Summary:
    This implements a selective lambda-lifting pass late in the STG
    pipeline.
    
    Lambda lifting has the effect of avoiding closure allocation at the cost
    of having to make former free vars available at call sites, possibly
    enlarging closures surrounding call sites in turn.
    
    We identify beneficial cases by means of an analysis that estimates
    closure growth.
    
    There's a Wiki page at
    https://ghc.haskell.org/trac/ghc/wiki/LateLamLift.
    
    Reviewers: simonpj, bgamari, simonmar
    
    Reviewed By: simonpj
    
    Subscribers: rwbarton, carter
    
    GHC Trac Issues: #9476
    
    Differential Revision: https://phabricator.haskell.org/D5224


>---------------------------------------------------------------

b2950e03b551d82d62ec25eb232284aaf121b4e2
 compiler/basicTypes/Demand.hs                   |  16 +-
 compiler/basicTypes/Id.hs                       |   3 +-
 compiler/codeGen/StgCmm.hs                      |   4 +-
 compiler/codeGen/StgCmmBind.hs                  |   7 +-
 compiler/codeGen/StgCmmExpr.hs                  |   4 +-
 compiler/ghc.cabal.in                           |   5 +
 compiler/main/DynFlags.hs                       |  26 ++
 compiler/simplStg/SimplStg.hs                   | 117 +++--
 compiler/simplStg/StgCse.hs                     |   8 +-
 compiler/simplStg/StgLiftLams.hs                | 102 +++++
 compiler/simplStg/StgLiftLams/Analysis.hs       | 566 ++++++++++++++++++++++++
 compiler/simplStg/StgLiftLams/LiftM.hs          | 349 +++++++++++++++
 compiler/simplStg/StgLiftLams/Transformation.hs | 155 +++++++
 compiler/simplStg/StgStats.hs                   |   4 +-
 compiler/simplStg/UnariseStg.hs                 |   8 +-
 compiler/stgSyn/CoreToStg.hs                    |   4 +-
 compiler/stgSyn/StgFVs.hs                       |  51 ++-
 compiler/stgSyn/StgLint.hs                      |  39 +-
 compiler/stgSyn/StgSubst.hs                     |  80 ++++
 compiler/stgSyn/StgSyn.hs                       | 104 +++--
 docs/users_guide/using-optimisation.rst         |  52 +++
 inplace/test                                    |   3 -
 inplace/test   spaces                           |   1 -
 testsuite/tests/perf/join_points/all.T          |   2 +-
 24 files changed, 1565 insertions(+), 145 deletions(-)

Diff suppressed because of size. To see it, use:

    git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc b2950e03b551d82d62ec25eb232284aaf121b4e2


More information about the ghc-commits mailing list