add some UNPACKs to improve performance a bit
authorSimon Marlow <marlowsd@gmail.com>
Tue, 12 Jun 2012 09:56:43 +0000 (10:56 +0100)
committerSimon Marlow <marlowsd@gmail.com>
Tue, 12 Jun 2012 09:56:43 +0000 (10:56 +0100)
Control/Concurrent/STM/TChan.hs

index aea5176..713624e 100644 (file)
@@ -43,11 +43,15 @@ import GHC.Conc
 
 import Data.Typeable (Typeable)
 
+#define _UPK_(x) {-# UNPACK #-} !(x)
+
 -- | 'TChan' is an abstract type representing an unbounded FIFO channel.
-data TChan a = TChan (TVar (TVarList a)) (TVar (TVarList a)) deriving Typeable
+data TChan a = TChan _UPK_(TVar (TVarList a))
+                     _UPK_(TVar (TVarList a))
+  deriving Typeable
 
 type TVarList a = TVar (TList a)
-data TList a = TNil | TCons a (TVarList a)
+data TList a = TNil | TCons a _UPK_(TVarList a)
 
 -- |Build and returns a new instance of 'TChan'
 newTChan :: STM (TChan a)