Re: [GHC] #7307: Share top-level code for strings

#7307: Share top-level code for strings -------------------------------------+------------------------------------ Reporter: simonpj | Owner: parcs Type: bug | Status: new Priority: normal | Milestone: 7.8.1 Component: Compiler | Version: 7.6.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------ Comment (by parcs): Here's an experimental patch that achieves what's described in the ticket. It creates a new closure type, `StgTopUnpack` along with a new info table `stg_TOP_UNPACK_info`. All top-level strings are emitted as 4-word thunks (all thunks need to have the same closure representation), with the address of the static string being stored in the 2nd word. Miraculously, the code works. Binary sizes drop a further ~(2-3)% (on top of size reduction from #8590) and GHC can still bootstrap itself. But there are a few issues that I am having trouble with: 1. I am not sure what closure flags `TOP_UNPACK` should have. 2. I do not think entry code for `TOP_UNPACK` is correct. For starters, I mixed high-level Cmm (argument lists) with low-level Cmm (use of `Sp`). But the whole thing is likely wrong. Could somebody take a quick look? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/7307#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC