Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : master
http://hackage.haskell.org/trac/ghc/changeset/5cf718261506cfc25c089e57c4d5c46111dbe6a1 >--------------------------------------------------------------- commit 5cf718261506cfc25c089e57c4d5c46111dbe6a1 Author: Simon Marlow <[email protected]> Date: Mon Sep 24 11:12:35 2012 +0100 Misc tidyup >--------------------------------------------------------------- compiler/cmm/CmmBuildInfoTables.hs | 15 +++++++-------- compiler/cmm/CmmInfo.hs | 7 +++++++ compiler/cmm/CmmLayoutStack.hs | 6 +++--- compiler/cmm/CmmRewriteAssignments.hs | 3 ++- compiler/cmm/CmmSink.hs | 2 +- compiler/codeGen/StgCmmUtils.hs | 7 +------ 6 files changed, 21 insertions(+), 19 deletions(-) diff --git a/compiler/cmm/CmmBuildInfoTables.hs b/compiler/cmm/CmmBuildInfoTables.hs index d587d60..54edb73 100644 --- a/compiler/cmm/CmmBuildInfoTables.hs +++ b/compiler/cmm/CmmBuildInfoTables.hs @@ -19,19 +19,15 @@ where #include "HsVersions.h" --- These should not be imported here! -import StgCmmUtils import Hoopl - import Digraph -import qualified Prelude as P -import Prelude hiding (succ) - import BlockId import Bitmap import CLabel +import PprCmmDecl () import Cmm import CmmUtils +import CmmInfo import Data.List import DynFlags import Maybes @@ -47,6 +43,9 @@ import Data.Set (Set) import qualified Data.Set as Set import Control.Monad +import qualified Prelude as P +import Prelude hiding (succ) + foldSet :: (a -> b -> b) -> b -> Set a -> b foldSet = Set.foldr @@ -228,7 +227,7 @@ maxBmpSize dflags = widthInBits (wordWidth dflags) `div` 2 -- Adapted from codeGen/StgCmmUtils, which converts from SRT to C_SRT. to_SRT :: DynFlags -> CLabel -> Int -> Int -> Bitmap -> UniqSM (Maybe CmmDecl, C_SRT) to_SRT dflags top_srt off len bmp - | len > maxBmpSize dflags || bmp == [toStgWord dflags (fromStgHalfWord (srt_escape dflags))] + | len > maxBmpSize dflags || bmp == [toStgWord dflags (fromStgHalfWord (srtEscape dflags))] = do id <- getUniqueM let srt_desc_lbl = mkLargeSRTLabel id tbl = CmmData RelocatableReadOnlyData $ @@ -236,7 +235,7 @@ to_SRT dflags top_srt off len bmp ( cmmLabelOffW dflags top_srt off : mkWordCLit dflags (toStgWord dflags (fromIntegral len)) : map (mkWordCLit dflags) bmp) - return (Just tbl, C_SRT srt_desc_lbl 0 (srt_escape dflags)) + return (Just tbl, C_SRT srt_desc_lbl 0 (srtEscape dflags)) | otherwise = return (Nothing, C_SRT top_srt off (toStgHalfWord dflags (fromStgWord (head bmp)))) -- The fromIntegral converts to StgHalfWord diff --git a/compiler/cmm/CmmInfo.hs b/compiler/cmm/CmmInfo.hs index 9d335c6..6aa4d6c 100644 --- a/compiler/cmm/CmmInfo.hs +++ b/compiler/cmm/CmmInfo.hs @@ -9,6 +9,7 @@ module CmmInfo ( mkEmptyContInfoTable, cmmToRawCmm, mkInfoTable, + srtEscape ) where #include "HsVersions.h" @@ -384,3 +385,9 @@ newStringLit bytes = do { uniq <- getUniqueUs ; return (mkByteStringCLit uniq bytes) } + +-- Misc utils + +-- | Value of the srt field of an info table when using an StgLargeSRT +srtEscape :: DynFlags -> StgHalfWord +srtEscape dflags = toStgHalfWord dflags (-1) diff --git a/compiler/cmm/CmmLayoutStack.hs b/compiler/cmm/CmmLayoutStack.hs index b4ca273..6f75f54 100644 --- a/compiler/cmm/CmmLayoutStack.hs +++ b/compiler/cmm/CmmLayoutStack.hs @@ -3,9 +3,9 @@ module CmmLayoutStack ( cmmLayoutStack, setInfoTableStackMap ) where -import StgCmmUtils ( callerSaveVolatileRegs ) -- XXX -import StgCmmForeign ( saveThreadState, loadThreadState ) -- XXX -import StgCmmLayout ( entryCode ) -- XXX +import StgCmmUtils ( callerSaveVolatileRegs ) -- XXX layering violation +import StgCmmForeign ( saveThreadState, loadThreadState ) -- XXX layering violation +import StgCmmLayout ( entryCode ) -- XXX layering violation import Cmm import BlockId diff --git a/compiler/cmm/CmmRewriteAssignments.hs b/compiler/cmm/CmmRewriteAssignments.hs index 585d78e..0f2aeaa 100644 --- a/compiler/cmm/CmmRewriteAssignments.hs +++ b/compiler/cmm/CmmRewriteAssignments.hs @@ -15,10 +15,11 @@ module CmmRewriteAssignments ( rewriteAssignments ) where +import StgCmmUtils -- XXX layering violation + import Cmm import CmmUtils import CmmOpt -import StgCmmUtils import DynFlags import UniqSupply diff --git a/compiler/cmm/CmmSink.hs b/compiler/cmm/CmmSink.hs index 28e3b77..7acc4dd 100644 --- a/compiler/cmm/CmmSink.hs +++ b/compiler/cmm/CmmSink.hs @@ -3,7 +3,7 @@ module CmmSink ( cmmSink ) where -import StgCmmUtils (callerSaves) +import CodeGen.Platform (callerSaves) import Cmm import BlockId diff --git a/compiler/codeGen/StgCmmUtils.hs b/compiler/codeGen/StgCmmUtils.hs index f5dc2b6..386e7f4 100644 --- a/compiler/codeGen/StgCmmUtils.hs +++ b/compiler/codeGen/StgCmmUtils.hs @@ -37,9 +37,7 @@ module StgCmmUtils ( mkWordCLit, newStringCLit, newByteStringCLit, packHalfWordsCLit, - blankWord, - - srt_escape + blankWord ) where #include "HsVersions.h" @@ -719,6 +717,3 @@ assignTemp' e let reg = CmmLocal lreg emitAssign reg e return (CmmReg reg) - -srt_escape :: DynFlags -> StgHalfWord -srt_escape dflags = toStgHalfWord dflags (-1) _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
