[GHC] #4936: Unbox sum types without fields

GHC cvs-ghc at haskell.org
Mon Jan 31 23:15:26 CET 2011


#4936: Unbox sum types without fields
---------------------------------+------------------------------------------
    Reporter:  tibbe             |       Owner:              
        Type:  feature request   |      Status:  new         
    Priority:  normal            |   Component:  Compiler    
     Version:  7.0.1             |    Keywords:              
    Testcase:                    |   Blockedby:              
          Os:  Unknown/Multiple  |    Blocking:              
Architecture:  Unknown/Multiple  |     Failure:  None/Unknown
---------------------------------+------------------------------------------
 In the new I/O manager we use newtyped `Int`s instead of an ADT to squeeze
 out every drop of performance GHC can give us. It's a bit unfortunate that
 we have to make a choice between performance and safety here. Using an ADT
 have many benefits. For example, all possible values are grouped together
 neatly under the data type and the compiler can make sure we check all
 possible cases in case statements.

 Pointer tagging helps quite a bit here, if you have fewer than 4 (or 8)
 constructors. If you have more you don't get the benefit.

 Given a simple sum type like this:

 {{{
 data Color = Red | Green | Blue | Yellow
 }}}

 change its representation to an `Int`, allowing it to be unboxed into data
 types.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4936>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the Glasgow-haskell-bugs mailing list