[store constant parts of the rts as ByteStrings rather than Haskell Strings
John Meacham <john@repetae.net>**20100328223258
 Ignore-this: 596d1612e4d70c9fbb870aed3134547f
] hunk ./src/C/FromGrin2.hs 39
+import qualified Data.ByteString.Lazy as LBS
+import qualified Data.ByteString.UTF8 as BS
+import qualified Data.ByteString as BS
hunk ./src/C/FromGrin2.hs 132
-compileGrin :: Grin -> (String,[String])
-compileGrin grin = (hsffi_h ++ jhc_rts_header_h ++ jhc_rts_alloc_c ++ jhc_rts_c ++ jhc_rts2_c ++ generateArchAssertions ++ P.render ans ++ "\n", snub (reqLibraries req))  where
+compileGrin :: Grin -> (LBS.ByteString,[String])
+compileGrin grin = (LBS.fromChunks [hsffi_h,jhc_rts_header_h,jhc_rts_alloc_c,jhc_rts_c,jhc_rts2_c,BS.fromString generateArchAssertions,BS.fromString $ P.render ans, BS.fromString "\n"], snub (reqLibraries req))  where
hunk ./src/Grin/Main.hs 3
+import Control.Monad
hunk ./src/Grin/Main.hs 5
+import qualified Data.ByteString.Lazy.UTF8 as LBS
+import qualified Data.ByteString.Lazy as LBS
+import qualified Data.Map as Map
+import qualified System
hunk ./src/Grin/Main.hs 10
-import Control.Monad
hunk ./src/Grin/Main.hs 14
-import Grin.FromE
hunk ./src/Grin/Main.hs 18
+import Grin.SSimplify
hunk ./src/Grin/Main.hs 25
-import qualified Data.Map as Map
hunk ./src/Grin/Main.hs 27
-import Grin.SSimplify
hunk ./src/Grin/Main.hs 28
-import qualified System
hunk ./src/Grin/Main.hs 99
-        globalvar n c = "char " ++ n ++ "[] = \"" ++ c ++ "\";"
+        globalvar n c = LBS.fromString $ "char " ++ n ++ "[] = \"" ++ c ++ "\";"
hunk ./src/Grin/Main.hs 101
-    writeFile cf $ unlines [globalvar "jhc_c_compile" comm, globalvar "jhc_command" argstring,globalvar "jhc_version" sversion,"",cg]
+    LBS.writeFile cf $ LBS.intercalate (LBS.fromString "\n") [globalvar "jhc_c_compile" comm, globalvar "jhc_command" argstring,globalvar "jhc_version" sversion,LBS.empty,cg]
hunk ./src/Ho/Build.hs 19
-import Version.Config(version)
hunk ./src/Ho/Build.hs 25
+import Version.Config(version)
+import qualified Data.ByteString as BS
hunk ./src/Ho/Build.hs 650
-m4Prelude = writeFile "/tmp/jhc_prelude.m4" prelude_m4 >> return "/tmp/jhc_prelude.m4"
+m4Prelude = BS.writeFile "/tmp/jhc_prelude.m4" prelude_m4 >> return "/tmp/jhc_prelude.m4"
hunk ./src/Main.hs 8
+import qualified Data.ByteString.UTF8 as BS
hunk ./src/Main.hs 47
-        VersionCtx      -> putStrLn (versionString ++ versionContext)
+        VersionCtx      -> putStrLn (versionString ++ BS.toString versionContext)
hunk ./src/Options.hs 42
+import qualified Data.ByteString.UTF8 as BS
hunk ./src/Options.hs 328
-    inis <- parseIniFiles (optVerbose o2 > 0) targets_ini [confDir ++ "/targets.ini", confDir ++ "/targets-local.ini", home ++ "/etc/jhc/targets.ini", home ++ "/.jhc/targets.ini"] (optArch o2)
+    inis <- parseIniFiles (optVerbose o2 > 0) (BS.toString targets_ini) [confDir ++ "/targets.ini", confDir ++ "/targets-local.ini", home ++ "/etc/jhc/targets.ini", home ++ "/.jhc/targets.ini"] (optArch o2)
hunk ./src/Version/Version.hs 10
+import qualified Data.ByteString.UTF8 as BS
hunk ./src/Version/Version.hs 16
-versionSimple = concat [package, " ", version, " (", shortchange_txt, ")"]
+versionSimple = concat [package, " ", version, " (", BS.toString shortchange_txt, ")"]
hunk ./utils/op_raw.prl 9
-print "module $mod where\n\n\n";
+print "module $mod where\n\n";
+print "import Data.ByteString.Unsafe\n";
+print "import Data.ByteString\n";
+print "import System.IO.Unsafe\n\n";
hunk ./utils/op_raw.prl 25
-    print "$nn :: String\n";
-    print "$nn = \"\\\n \\";
+    print "$nn :: ByteString\n";
+    print "$nn = unsafePerformIO \$ unsafePackAddress \"\\\n \\";
hunk ./utils/op_raw.prl 37
-    print "\"\n\n";
+    print "\"#\n\n";