
You mention that there are a lot of string literals in the Prelude. I would bet that the vast majority of those are error messages. Might it be
#9577: String literals are wasting space -------------------------------------+------------------------------------- Reporter: xnyhps | Owner: xnyhps Type: bug | Status: new Priority: low | Milestone: Component: Compiler | Version: 7.8.2 (NCG) | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: Runtime | Related Tickets: performance bug | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by rwbarton): Replying to [comment:4 dfeuer]: possible to specifically target ''exceptional'' strings that should never be anywhere speed-critical, and pack them all together? Putting them all together, ideally starting or ending on a page boundary, would (hopefully) mean that they wouldn't even need to be swapped in unless an error occurred. I think this is easy to do as far as the linker side of things is concerned (just put the exceptional strings in their own section); the only bit that might be tricky is identifying which string literals should be considered exceptional and plumbing that information through the compiler. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9577#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler