diff options
author | Edward Z. Yang <ezyang@cs.stanford.edu> | 2014-10-20 16:01:45 -0700 |
---|---|---|
committer | Edward Z. Yang <ezyang@cs.stanford.edu> | 2014-10-20 16:28:42 -0700 |
commit | a3860fc4e253ecb4854e86aed78c56e72f318840 (patch) | |
tree | d04b362212bf2a4a073d1147ad583a4e92a0ec5f /compiler/cmm | |
parent | 126b0c410f2596d1bf7ba6a1af872487c5bb2b52 (diff) | |
download | haskell-a3860fc4e253ecb4854e86aed78c56e72f318840.tar.gz |
Revert "BC-breaking changes to C-- CLOSURE syntax."
This reverts commit 3b5a840bba375c4c4c11ccfeb283f84c3a1ef22c.
Diffstat (limited to 'compiler/cmm')
-rw-r--r-- | compiler/cmm/CLabel.hs | 4 | ||||
-rw-r--r-- | compiler/cmm/CmmLex.x | 2 | ||||
-rw-r--r-- | compiler/cmm/CmmParse.y | 17 |
3 files changed, 10 insertions, 13 deletions
diff --git a/compiler/cmm/CLabel.hs b/compiler/cmm/CLabel.hs index c5afa09d75..0f2c0ae7fa 100644 --- a/compiler/cmm/CLabel.hs +++ b/compiler/cmm/CLabel.hs @@ -333,9 +333,9 @@ data CmmLabelInfo | CmmEntry -- ^ misc rts entry points, suffix _entry | CmmRetInfo -- ^ misc rts ret info tables, suffix _info | CmmRet -- ^ misc rts return points, suffix _ret - | CmmData -- ^ misc rts data bits + | CmmData -- ^ misc rts data bits, eg CHARLIKE_closure | CmmCode -- ^ misc rts code - | CmmClosure -- ^ misc rts closures, suffix _closure + | CmmClosure -- ^ closures eg CHARLIKE_closure | CmmPrimCall -- ^ a prim call to some hand written Cmm code deriving (Eq, Ord) diff --git a/compiler/cmm/CmmLex.x b/compiler/cmm/CmmLex.x index dfbb751021..f56db7bd4c 100644 --- a/compiler/cmm/CmmLex.x +++ b/compiler/cmm/CmmLex.x @@ -135,7 +135,6 @@ data CmmToken | CmmT_Ne | CmmT_BoolAnd | CmmT_BoolOr - | CmmT_ANONYMOUS_CLOSURE | CmmT_CLOSURE | CmmT_INFO_TABLE | CmmT_INFO_TABLE_RET @@ -219,7 +218,6 @@ name span buf len = reservedWordsFM = listToUFM $ map (\(x, y) -> (mkFastString x, y)) [ - ( "ANONYMOUS_CLOSURE", CmmT_ANONYMOUS_CLOSURE ), ( "CLOSURE", CmmT_CLOSURE ), ( "INFO_TABLE", CmmT_INFO_TABLE ), ( "INFO_TABLE_RET", CmmT_INFO_TABLE_RET ), diff --git a/compiler/cmm/CmmParse.y b/compiler/cmm/CmmParse.y index 3bd0053cfc..db6cc49927 100644 --- a/compiler/cmm/CmmParse.y +++ b/compiler/cmm/CmmParse.y @@ -300,7 +300,6 @@ import Data.Maybe '||' { L _ (CmmT_BoolOr) } 'CLOSURE' { L _ (CmmT_CLOSURE) } - 'ANONYMOUS_CLOSURE'{ L _ (CmmT_ANONYMOUS_CLOSURE) } 'INFO_TABLE' { L _ (CmmT_INFO_TABLE) } 'INFO_TABLE_RET'{ L _ (CmmT_INFO_TABLE_RET) } 'INFO_TABLE_FUN'{ L _ (CmmT_INFO_TABLE_FUN) } @@ -370,10 +369,10 @@ cmmtop :: { CmmParse () } : cmmproc { $1 } | cmmdata { $1 } | decl { $1 } - | 'CLOSURE' '(' NAME lits ')' ';' + | 'CLOSURE' '(' NAME ',' NAME lits ')' ';' {% withThisPackage $ \pkg -> - do lits <- sequence $4; - staticClosure pkg $3 (map getLit lits) } + do lits <- sequence $6; + staticClosure pkg $3 $5 (map getLit lits) } -- The only static closures in the RTS are dummy closures like -- stg_END_TSO_QUEUE_closure and stg_dummy_ret. We don't need @@ -412,7 +411,7 @@ static :: { CmmParse [CmmStatic] } | typenot8 '[' INT ']' ';' { return [CmmUninitialised (widthInBytes (typeWidth $1) * fromIntegral $3)] } - | 'ANONYMOUS_CLOSURE' '(' NAME lits ')' + | 'CLOSURE' '(' NAME lits ')' { do { lits <- sequence $4 ; dflags <- getDynFlags ; return $ map CmmStaticLit $ @@ -1102,11 +1101,11 @@ profilingInfo dflags desc_str ty_str else ProfilingInfo (stringToWord8s desc_str) (stringToWord8s ty_str) -staticClosure :: PackageKey -> FastString -> [CmmLit] -> CmmParse () -staticClosure pkg label payload +staticClosure :: PackageKey -> FastString -> FastString -> [CmmLit] -> CmmParse () +staticClosure pkg cl_label info payload = do dflags <- getDynFlags - let lits = mkStaticClosure dflags (mkCmmInfoLabel pkg label) dontCareCCS payload [] [] [] - code $ emitStaticClosure (mkCmmClosureLabel pkg label) lits + let lits = mkStaticClosure dflags (mkCmmInfoLabel pkg info) dontCareCCS payload [] [] [] + code $ emitStaticClosure (mkCmmDataLabel pkg cl_label) lits foreignCall :: String |