Merge FUN_STATIC closure with its SRT
authorSimon Marlow <marlowsd@gmail.com>
Sun, 22 Apr 2018 18:34:32 +0000 (19:34 +0100)
committerSimon Marlow <marlowsd@gmail.com>
Wed, 16 May 2018 12:36:13 +0000 (13:36 +0100)
commit838b69032566ce6ab3918d70e8d5e098d0bcee02
treeac764fcb2dc421a13fd76fec1a1d6d01fd0b4f1c
parent2b0918c9834be1873728176e4944bec26271234a
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
12 files changed:
compiler/cmm/Cmm.hs
compiler/cmm/CmmBuildInfoTables.hs
compiler/cmm/CmmInfo.hs
compiler/cmm/CmmParse.y
compiler/codeGen/StgCmmBind.hs
compiler/codeGen/StgCmmClosure.hs
includes/rts/storage/ClosureMacros.h
rts/RetainerProfile.c
rts/sm/Compact.c
rts/sm/Evac.c
rts/sm/Sanity.c
rts/sm/Scav.c