[commit: ghc] master: Improve accuracy of get/setAllocationCounter (a1a689d)

git at git.haskell.org git at git.haskell.org
Mon Jan 8 08:41:58 UTC 2018


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

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

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

commit a1a689dda48113f3735834350fb562bb1927a633
Author: Simon Marlow <marlowsd at gmail.com>
Date:   Fri Jan 5 16:12:49 2018 +0000

    Improve accuracy of get/setAllocationCounter
    
    Summary:
    get/setAllocationCounter didn't take into account allocations in the
    current block. This was known at the time, but it turns out to be
    important to have more accuracy when using these in a fine-grained
    way.
    
    Test Plan:
    New unit test to test incrementally larger allocaitons.  Before I got
    results like this:
    
    ```
    +0
    +0
    +0
    +0
    +0
    +4096
    +0
    +0
    +0
    +0
    +0
    +4064
    +0
    +0
    +4088
    +4056
    +0
    +0
    +0
    +4088
    +4096
    +4056
    +4096
    ```
    
    Notice how the results aren't always monotonically increasing.  After
    this patch:
    
    ```
    +344
    +416
    +488
    +560
    +632
    +704
    +776
    +848
    +920
    +992
    +1064
    +1136
    +1208
    +1280
    +1352
    +1424
    +1496
    +1568
    +1640
    +1712
    +1784
    +1856
    +1928
    +2000
    +2072
    +2144
    ```
    
    Reviewers: niteria, bgamari, hvr, erikd
    
    Subscribers: rwbarton, thomie, carter
    
    Differential Revision: https://phabricator.haskell.org/D4288


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

a1a689dda48113f3735834350fb562bb1927a633
 compiler/codeGen/StgCmmForeign.hs                   |  4 ++--
 compiler/prelude/primops.txt.pp                     | 14 ++++++++++++++
 includes/rts/Threads.h                              |  2 --
 includes/stg/MiscClosures.h                         |  3 +++
 libraries/base/GHC/Conc/Sync.hs                     | 21 +++++----------------
 rts/PrimOps.cmm                                     | 20 ++++++++++++++++++++
 rts/RtsSymbols.c                                    |  4 ++--
 rts/Threads.c                                       | 13 +------------
 testsuite/tests/rts/all.T                           |  7 +++++++
 testsuite/tests/rts/alloccounter1.hs                | 19 +++++++++++++++++++
 .../tests/rts/alloccounter1.stdout                  |  0
 11 files changed, 73 insertions(+), 34 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 a1a689dda48113f3735834350fb562bb1927a633


More information about the ghc-commits mailing list