
#10316: Move Typeable type-rep generation from use site to definition site -------------------------------------+------------------------------------- Reporter: simonpj | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: Related Tickets: | Blocking: | Differential Revisions: Phab:757 -------------------------------------+------------------------------------- Changes (by simonpj): * differential: => Phab:757 Comment: I tried to reduce the per-tycon overheads as far as possible. For a data type {{{ data Foo = Foo1 | Foo2 }}} in module `M`, you get {{{ $moduleM :: Module $moduleM = Module "mypackage-2.3"# "M"# $tcFoo :: TyCon $tcFoo = TyCon xxx yyy "Foo"# $moduleM $tcFoo1 :: TyCon $tcFoo1 = TyCon xxx yyy "Foo1"# $moduleM ..similarly Foo2... }}} That is, a sharted record for the module, plus a `TyCon` for each type constructor and data constructor. All C strings, all static data, no thunks, no code. At the moment these definitions are injected at the beginning of the optimisation pipeline, but since they are so static they could equally well go at the end, and that woudl save fruitless attempts to optimise them. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10316#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler