[commit: ghc] master: Refactored SymbolInfo to lower memory usage in RTS (3747372)

git at git.haskell.org git at git.haskell.org
Fri Jun 3 20:12:17 UTC 2016


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

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

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

commit 37473722960a1066c3b45c94377ba08769b1375b
Author: Tamar Christina <tamar at zhox.com>
Date:   Fri Jun 3 21:42:16 2016 +0200

    Refactored SymbolInfo to lower memory usage in RTS
    
    Previously as part of #11223 a new struct `SymbolInfo` was introduced to
    keep track it the weak symbol status of a symbol.
    
    This structure also kept a copy of the calculated address of the symbol
    which turns out was useful in ignoring non-weak zero-valued symbols.
    
    The information was kept in an array so it means for every symbol two
    extra bytes were kept even though the vast majority of symbols are
    non-weak and non-zero valued.
    
    This changes the array into a sparse map keeping this information only
    for the symbols that are weak or zero-valued. This allows for a
    reduction in the amount of information needed to be kept while giving up
    a small (negligable) hit in performance as this information now has to
    be looked up in hashmaps.
    
    Test Plan: ./validate on all platforms that use the runtime linker.
    
    For unix platforms please ensure `DYNAMIC_GHC_PROGRAMS=NO` is added to
    your validate file.
    
    Reviewers: simonmar, austin, erikd, bgamari
    
    Reviewed By: simonmar, bgamari
    
    Subscribers: thomie, #ghc_windows_task_force
    
    Differential Revision: https://phabricator.haskell.org/D2184
    
    GHC Trac Issues: #11816


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

37473722960a1066c3b45c94377ba08769b1375b
 rts/Linker.c                                       | 93 ++++++++++++++--------
 rts/LinkerInternals.h                              | 23 ++----
 rts/RtsSymbolInfo.c                                | 72 +++++++++++++++++
 rts/RtsSymbolInfo.h                                | 17 ++++
 .../T11223_simple_duplicate_lib.stderr-mingw32     |  2 +-
 5 files changed, 155 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 37473722960a1066c3b45c94377ba08769b1375b


More information about the ghc-commits mailing list