[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