Remove CONSTR_STATIC
authorSimon Marlow <marlowsd@gmail.com>
Wed, 9 Nov 2016 09:20:02 +0000 (09:20 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Mon, 14 Nov 2016 14:43:35 +0000 (14:43 +0000)
commit55d535da10dd63bbaf03fb176ced7179087cd0d4
tree57bdbf04381fe08d90c384f5b10e77c3384227d9
parent6c0f10fac767c49b65ed71e8eb8e78ca4f9062d5
Remove CONSTR_STATIC

Summary:
We currently have two info tables for a constructor

* XXX_con_info: the info table for a heap-resident instance of the
  constructor, It has type CONSTR, or one of the specialised types like
  CONSTR_1_0

* XXX_static_info: the info table for a static instance of this
  constructor, which has type CONSTR_STATIC or CONSTR_STATIC_NOCAF.

I'm getting rid of the latter, and using the `con_info` info table for
both static and dynamic constructors.  For rationale and more details
see Note [static constructors] in SMRep.hs.

I also removed these macros: `isSTATIC()`, `ip_STATIC()`,
`closure_STATIC()`, since they relied on the CONSTR/CONSTR_STATIC
distinction, and anyway HEAP_ALLOCED() does the same job.

Test Plan: validate

Reviewers: bgamari, simonpj, austin, gcampax, hvr, niteria, erikd

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2690

GHC Trac Issues: #12455
24 files changed:
compiler/cmm/CLabel.hs
compiler/cmm/SMRep.hs
compiler/codeGen/StgCmm.hs
compiler/codeGen/StgCmmClosure.hs
compiler/ghci/RtClosureInspect.hs
docs/rts/rts.tex
includes/rts/storage/ClosureTypes.h
includes/rts/storage/InfoTables.h
rts/CheckUnload.c
rts/ClosureFlags.c
rts/Interpreter.c
rts/LdvProfile.c
rts/Prelude.h
rts/Printer.c
rts/ProfHeap.c
rts/Profiling.c
rts/RetainerProfile.c
rts/StgMiscClosures.cmm
rts/sm/CNF.c
rts/sm/Compact.c
rts/sm/Evac.c
rts/sm/GCAux.c
rts/sm/Sanity.c
rts/sm/Scav.c