[GHC] #12357: Increasing maximum constraint tuple size significantly blows up compiler allocations

GHC ghc-devs at haskell.org
Tue Jul 19 15:51:21 UTC 2016


#12357: Increasing maximum constraint tuple size significantly blows up compiler
allocations
-------------------------------------+-------------------------------------
        Reporter:  bgamari           |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.10.3
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D2400
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by bgamari):

 Replying to [comment:23 simonpj]:
 > Why/how does the `TcTypeable` impl rely on them being there???   There
 jolly well ought to be a comment to say so.
 >

 It looks like my memory failed me here: `TcTypeable` relies on
 `primTyCons`, not `allKnownKeyNames`, to create the representations for
 primitive types.

 That being said, excluding tuples from the name cache nevertheless poses a
 problem for `Typeable`: Currently type representations for tuples are
 known key. If we exclude tuple type representations from the known key
 list then they will be loaded from `GHC/Tuple.hi` with the wrong unique.
 There are two ways of dealing with this that are immediately obvious but
 not terribly appealing,

  * Add a special encoding to the symbol table format for type rep names.
 However, it seems odd to add special encodings in the interface file
 format for such a narrow case

  * Add support to the `isBuiltInOcc_maybe` parser for identifying `$tc`
 names.



 > All I see is
 >
 > * `knownKeyNames` used in building `knownKeyNamesMap` in `BinIface`.
 Waste of time having tuples in there because they are treated specially by
 `BinIface`.
 >
 > * Initialising the name cache in `HscMain`.
 >
 > And that's really it.

 Yes, I agree.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12357#comment:26>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list