[change IO representation to use unboxed tuples internally 
John Meacham <john@repetae.net>**20061109050342] hunk ./E/E.hs 307
-tPtr t = ELit (litCons { litName = tc_Ptr, litArgs = [t], litType = eStar })
hunk ./E/FromHs.hs 204
-    ioLike ty = case followAliases dataTable ty of
+    ioLike ty = case ty of
hunk ./E/FromHs.hs 206
-        (EPi ioc (EPi tvr (ELit LitCons { litName = n, litArgs = [x] }))) | n == tc_IOResult -> Just x
+--        (EPi ioc (EPi tvr (ELit LitCons { litName = n, litArgs = [x] }))) | n == tc_IOResult -> Just x
hunk ./E/PrimOpt.hs 150
-        primopt (PrimPrim "newHole__") [y] (ELit LitCons { litName = name, litArgs = [b], litType = ESort EStar }) | name == tc_IOResult =
-            return $ eCaseTup' (EPrim (primPrim "newHole_") [y] (ltTuple' [tWorld__,b])) [a',b'] (eJustIO (EVar a') (EVar b')) where
-                (a':b':_) = vars [tWorld__,b,y]
+--        primopt (PrimPrim "newHole__") [y] (ELit LitCons { litName = name, litArgs = [b], litType = ESort EStar }) | tc_IOResult =
+--            return $ eCaseTup' (EPrim (primPrim "newHole_") [y] (ltTuple' [tWorld__,b])) [a',b'] (eJustIO (EVar a') (EVar b')) where
+--                (a':b':_) = vars [tWorld__,b,y]
hunk ./E/Values.hs 109
-eJustIO w x = ELit litCons { litName = dc_JustIO, litArgs = [w,x], litType = ELit litCons { litName = tc_IOResult, litArgs = [getType x], litType = eStar } }
+eJustIO w x = eTuple' [w,x] -- ELit litCons { litName = dc_JustIO, litArgs = [w,x], litType = ELit litCons { litName = tc_IOResult, litArgs = [getType x], litType = eStar } }
hunk ./Grin/FromE.hs 371
-    ce (EPrim ap@(APrim (PrimPrim "newHole_") _) [_] _) = do
+    ce (EPrim ap@(APrim (PrimPrim "newHole__") _) [_] _) = do
hunk ./Makefile 48
-	set -o pipefail; ./jhc -v $(RTSOPTS) $(JHC_TEST)  -ilib/base --noauto --build-hl lib/base/base.cabal -o $@ 2>&1 | tee base.log
+	set -o pipefail; ./jhc -v -funboxed-tuples $(RTSOPTS) $(JHC_TEST)  -ilib/base --noauto --build-hl lib/base/base.cabal -o $@ 2>&1 | tee base.log
hunk ./data/PrimitiveOperators-in.hs 19
+
+tPtr t = ELit (litCons { litName = tc_Ptr, litArgs = [t], litType = eStar, litAliasFor = Just (ELam tvr { tvrIdent = 2, tvrType = eStar} (ELit litCons { litName = tc_Addr, litType = eStar })) })
hunk ./lib/base/Jhc/Hole.hs 31
-    world' -> JustIO world' ()
+    world' -> (# world', () #)
hunk ./lib/base/Jhc/Hole.hs 33
-foreign import primitive newHole__  :: World__ -> IOResult (Hole a)
-foreign import primitive fillHole__ :: Hole a -> a -> World__ ->World__
+foreign import primitive newHole__  :: World__ -> (# World__, Hole a #)
+foreign import primitive fillHole__ :: Hole a -> a -> World__ -> World__
hunk ./lib/base/Jhc/IO.hs 1
+{-# OPTIONS_JHC -funboxed-tuples #-}
+
hunk ./lib/base/Jhc/IO.hs 5
-    IOResult(..),
+--    IOResult(..),
hunk ./lib/base/Jhc/IO.hs 31
-data IOResult a = JustIO World__ a
-newtype IO a = IO (IOErrorCont -> World__ -> IOResult a)
+-- data IOResult a = JustIO World__ a
+
+newtype IO a = IO (IOErrorCont -> World__ -> (# World__, a #))
hunk ./lib/base/Jhc/IO.hs 51
-            JustIO _ a -> a
+            (# _, a #) -> a
hunk ./lib/base/Jhc/IO.hs 55
-unsafeInterleaveIO action = IO $ \c w -> JustIO w $ case action' c w of
-    JustIO _ a -> a
-    where
-    IO action' = errorContinuation action
+unsafeInterleaveIO action = IO $ \c w -> (# w , case action' c w of (# _,  a #) -> a #)
+    where IO action' = errorContinuation action
hunk ./lib/base/Jhc/IO.hs 59
-    return x = IO $ \_ w -> JustIO w x
+    return x = IO $ \_ w -> (# w,  x #)
hunk ./lib/base/Jhc/IO.hs 61
-        JustIO w v -> case f v of
+        (# w, v #) -> case f v of
hunk ./lib/base/Jhc/IO.hs 64
-        JustIO w _ -> y c w
+        (# w,  _ #) -> y c w
hunk ./lib/base/Jhc/IO.hs 70
+data FixIO a = FixIO World__ a
hunk ./lib/base/Jhc/IO.hs 75
-                    IO z -> z c w
+                    IO z -> case z c w of
+                        (# w, r #) -> FixIO w r
hunk ./lib/base/Jhc/IO.hs 78
-                JustIO _ z  -> z
-               in r
+                FixIO _ z -> z
+               in case r of
+                FixIO w z -> (# w, z #)
hunk ./lib/base/Jhc/IO.hs 83
-getJumpPoint = IO $ \ ioe w -> JustIO w ioe
+getJumpPoint = IO $ \ ioe w -> (# w, ioe #)
hunk ./lib/base/Jhc/IO.hs 109
-strictReturn a = IO $ \_ w -> JustIO w (worldDep__ w a)
+strictReturn a = IO $ \_ w -> (# w, worldDep__ w a #)
hunk ./lib/base/Jhc/IO.hs 115
-        JustIO w _ -> w
+        (# w,  _ #) -> w
hunk ./lib/base/Jhc/IO.hs 132
-        JustIO w _ -> w
+        (# w, _ #) -> w
hunk ./lib/base/Jhc/IO.hs 137
-foreign import primitive exitFailure__ :: World__ -> IOResult a
+foreign import primitive exitFailure__ :: World__ -> (# World__, a #)