Merge FUN_STATIC closure with its SRT
Summary: The idea here is to save a little code size and some work in the GC, by collapsing FUN_STATIC closures and their SRTs. This is (4) in a series; see D4632 for more details. There's a tradeoff here: more complexity in the compiler in exchange for a modest code size reduction (probably around 0.5%). Results: * GHC binary itself (statically linked) is 1% smaller * -0.2% binary sizes in nofib (-0.5% module sizes) Full nofib results comparing D4634 with this: P177 (ignore runtimes, these aren't stable on my laptop) Test Plan: validate, nofib Reviewers: bgamari, niteria, simonpj, erikd Subscribers: thomie, carter Differential Revision: https://phabricator.haskell.org/D4637
Showing
- compiler/cmm/Cmm.hs 6 additions, 1 deletioncompiler/cmm/Cmm.hs
- compiler/cmm/CmmBuildInfoTables.hs 137 additions, 87 deletionscompiler/cmm/CmmBuildInfoTables.hs
- compiler/cmm/CmmInfo.hs 2 additions, 1 deletioncompiler/cmm/CmmInfo.hs
- compiler/cmm/CmmParse.y 6 additions, 6 deletionscompiler/cmm/CmmParse.y
- compiler/codeGen/StgCmmBind.hs 10 additions, 12 deletionscompiler/codeGen/StgCmmBind.hs
- compiler/codeGen/StgCmmClosure.hs 13 additions, 6 deletionscompiler/codeGen/StgCmmClosure.hs
- includes/rts/storage/ClosureMacros.h 0 additions, 3 deletionsincludes/rts/storage/ClosureMacros.h
- rts/RetainerProfile.c 1 addition, 1 deletionrts/RetainerProfile.c
- rts/sm/Compact.c 1 addition, 1 deletionrts/sm/Compact.c
- rts/sm/Evac.c 2 additions, 2 deletionsrts/sm/Evac.c
- rts/sm/Sanity.c 1 addition, 1 deletionrts/sm/Sanity.c
- rts/sm/Scav.c 3 additions, 1 deletionrts/sm/Scav.c
Loading
Please register or sign in to comment