Compact Regions
authorGiovanni Campagna <gcampagn@cs.stanford.edu>
Fri, 15 Jul 2016 18:47:26 +0000 (19:47 +0100)
committerSimon Marlow <marlowsd@gmail.com>
Wed, 20 Jul 2016 15:35:23 +0000 (16:35 +0100)
commitcf989ffe490c146be4ed0fd7e0c00d3ff8fe1453
tree1bdf626d6e713506852bf0015dae1e1be7d280c0
parent93acc02f7db7eb86967b4ec586359f408d62f75d
Compact Regions

This brings in initial support for compact regions, as described in the
ICFP 2015 paper "Efficient Communication and Collection with Compact
Normal Forms" (Edward Z. Yang et.al.) and implemented by Giovanni
Campagna.

Some things may change before the 8.2 release, but I (Simon M.) wanted
to get the main patch committed so that we can iterate.

What documentation there is is in the Data.Compact module in the new
compact package.  We'll need to extend and polish the documentation
before the release.

Test Plan:
validate
(new test cases included)

Reviewers: ezyang, simonmar, hvr, bgamari, austin

Subscribers: vikraman, Yuras, RyanGlScott, qnikst, mboes, facundominguez, rrnewton, thomie, erikd

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

GHC Trac Issues: #11493
49 files changed:
compiler/codeGen/StgCmmPrim.hs
compiler/prelude/PrelNames.hs
compiler/prelude/TysPrim.hs
compiler/prelude/primops.txt.pp
ghc.mk
includes/rts/storage/Block.h
includes/rts/storage/ClosureMacros.h
includes/rts/storage/ClosureTypes.h
includes/rts/storage/Closures.h
includes/rts/storage/GC.h
includes/stg/MiscClosures.h
libraries/compact/.gitignore [new file with mode: 0644]
libraries/compact/Data/Compact.hs [new file with mode: 0644]
libraries/compact/Data/Compact/Internal.hs [new file with mode: 0644]
libraries/compact/Data/Compact/Serialized.hs [new file with mode: 0644]
libraries/compact/LICENSE [new file with mode: 0644]
libraries/compact/README.md [new file with mode: 0644]
libraries/compact/Setup.hs [new file with mode: 0644]
libraries/compact/compact.cabal [new file with mode: 0644]
libraries/compact/tests/.gitignore [new file with mode: 0644]
libraries/compact/tests/Makefile [new file with mode: 0644]
libraries/compact/tests/all.T [new file with mode: 0644]
libraries/compact/tests/compact_append.hs [new file with mode: 0644]
libraries/compact/tests/compact_autoexpand.hs [new file with mode: 0644]
libraries/compact/tests/compact_loop.hs [new file with mode: 0644]
libraries/compact/tests/compact_serialize.hs [new file with mode: 0644]
libraries/compact/tests/compact_serialize.stderr [new file with mode: 0644]
libraries/compact/tests/compact_simple.hs [new file with mode: 0644]
libraries/compact/tests/compact_simple_array.hs [new file with mode: 0644]
rts/ClosureFlags.c
rts/LdvProfile.c
rts/PrimOps.cmm
rts/Printer.c
rts/ProfHeap.c
rts/RetainerProfile.c
rts/RtsStartup.c
rts/RtsSymbols.c
rts/StgMiscClosures.cmm
rts/sm/BlockAlloc.c
rts/sm/CNF.c [new file with mode: 0644]
rts/sm/CNF.h [new file with mode: 0644]
rts/sm/Compact.c
rts/sm/Evac.c
rts/sm/GC.c
rts/sm/Sanity.c
rts/sm/Scav.c
rts/sm/Storage.c
utils/deriveConstants/Main.hs
utils/genprimopcode/Main.hs