[commit: ghc] master: Make clearNursery free (e22bc0d)

git at git.haskell.org git at git.haskell.org
Tue Nov 25 14:37:37 UTC 2014


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

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

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

commit e22bc0dedb9e9da0176ad7ce4a74acbefedc7207
Author: Simon Marlow <marlowsd at gmail.com>
Date:   Tue Oct 7 10:30:36 2014 +0100

    Make clearNursery free
    
    Summary:
    clearNursery resets all the bd->free pointers of nursery blocks to
    make the blocks empty.  In profiles we've seen clearNursery taking
    significant amounts of time particularly with large -N and -A values.
    
    This patch moves the work of clearNursery to the point at which we
    actually need the new block, thereby introducing an invariant that
    blocks to the right of the CurrentNursery pointer still need their
    bd->free pointer reset.  This should make things faster overall,
    because we don't need to clear blocks that we don't use.
    
    Test Plan: validate
    
    Reviewers: AndreasVoellmy, ezyang, austin
    
    Subscribers: thomie, carter, ezyang, simonmar
    
    Differential Revision: https://phabricator.haskell.org/D318


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

e22bc0dedb9e9da0176ad7ce4a74acbefedc7207
 includes/rts/storage/GC.h                          | 21 ++++++
 rts/Capability.h                                   |  6 +-
 rts/HeapStackCheck.cmm                             |  5 ++
 rts/Schedule.c                                     | 18 ++---
 rts/Stats.c                                        | 21 +-----
 rts/sm/Storage.c                                   | 76 +++++++++++++++++-----
 rts/sm/Storage.h                                   | 22 ++++++-
 testsuite/tests/codeGen/should_run/all.T           |  1 +
 testsuite/tests/codeGen/should_run/cgrun074.hs     | 24 +++++++
 testsuite/tests/codeGen/should_run/cgrun074.stdout |  1 +
 utils/deriveConstants/DeriveConstants.hs           |  1 +
 11 files changed, 144 insertions(+), 52 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 e22bc0dedb9e9da0176ad7ce4a74acbefedc7207


More information about the ghc-commits mailing list