Commit a3860fc4 authored by Edward Z. Yang's avatar Edward Z. Yang

Revert "BC-breaking changes to C-- CLOSURE syntax."

This reverts commit 3b5a840b.
parent 126b0c41
......@@ -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)
......
......@@ -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 ),
......
......@@ -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
......
......@@ -457,7 +457,7 @@ INFO_TABLE_CONSTR(stg_C_FINALIZER_LIST,1,4,0,CONSTR,"C_FINALIZER_LIST","C_FINALI
INFO_TABLE_CONSTR(stg_NO_FINALIZER,0,0,0,CONSTR_NOCAF_STATIC,"NO_FINALIZER","NO_FINALIZER")
{ foreign "C" barf("NO_FINALIZER object entered!") never returns; }
CLOSURE(stg_NO_FINALIZER);
CLOSURE(stg_NO_FINALIZER_closure,stg_NO_FINALIZER);
/* ----------------------------------------------------------------------------
Stable Names are unlifted too.
......@@ -516,13 +516,13 @@ INFO_TABLE_CONSTR(stg_END_STM_CHUNK_LIST,0,0,0,CONSTR_NOCAF_STATIC,"END_STM_CHUN
INFO_TABLE_CONSTR(stg_NO_TREC,0,0,0,CONSTR_NOCAF_STATIC,"NO_TREC","NO_TREC")
{ foreign "C" barf("NO_TREC object entered!") never returns; }
CLOSURE(stg_END_STM_WATCH_QUEUE);
CLOSURE(stg_END_STM_WATCH_QUEUE_closure,stg_END_STM_WATCH_QUEUE);
CLOSURE(stg_END_INVARIANT_CHECK_QUEUE);
CLOSURE(stg_END_INVARIANT_CHECK_QUEUE_closure,stg_END_INVARIANT_CHECK_QUEUE);
CLOSURE(stg_END_STM_CHUNK_LIST);
CLOSURE(stg_END_STM_CHUNK_LIST_closure,stg_END_STM_CHUNK_LIST);
CLOSURE(stg_NO_TREC);
CLOSURE(stg_NO_TREC_closure,stg_NO_TREC);
/* ----------------------------------------------------------------------------
Messages
......@@ -553,7 +553,7 @@ INFO_TABLE_CONSTR(stg_MSG_NULL,1,0,0,PRIM,"MSG_NULL","MSG_NULL")
INFO_TABLE_CONSTR(stg_END_TSO_QUEUE,0,0,0,CONSTR_NOCAF_STATIC,"END_TSO_QUEUE","END_TSO_QUEUE")
{ foreign "C" barf("END_TSO_QUEUE object entered!") never returns; }
CLOSURE(stg_END_TSO_QUEUE);
CLOSURE(stg_END_TSO_QUEUE_closure,stg_END_TSO_QUEUE);
/* ----------------------------------------------------------------------------
GCD_CAF
......@@ -572,7 +572,7 @@ INFO_TABLE_CONSTR(stg_GCD_CAF,0,0,0,CONSTR_NOCAF_STATIC,"GCD_CAF","GCD_CAF")
INFO_TABLE_CONSTR(stg_STM_AWOKEN,0,0,0,CONSTR_NOCAF_STATIC,"STM_AWOKEN","STM_AWOKEN")
{ foreign "C" barf("STM_AWOKEN object entered!") never returns; }
CLOSURE(stg_STM_AWOKEN);
CLOSURE(stg_STM_AWOKEN_closure,stg_STM_AWOKEN);
/* ----------------------------------------------------------------------------
Arrays
......@@ -638,7 +638,7 @@ INFO_TABLE( stg_dummy_ret, 0, 0, CONSTR_NOCAF_STATIC, "DUMMY_RET", "DUMMY_RET")
{
return ();
}
CLOSURE(stg_dummy_ret);
CLOSURE(stg_dummy_ret_closure,stg_dummy_ret);
/* ----------------------------------------------------------------------------
MVAR_TSO_QUEUE
......@@ -673,8 +673,8 @@ INFO_TABLE_CONSTR(stg_MVAR_TSO_QUEUE,2,0,0,PRIM,"MVAR_TSO_QUEUE","MVAR_TSO_QUEUE
#endif
#define CHARLIKE_HDR(n) ANONYMOUS_CLOSURE(Char_hash_static_info, n)
#define INTLIKE_HDR(n) ANONYMOUS_CLOSURE(Int_hash_static_info, n)
#define CHARLIKE_HDR(n) CLOSURE(Char_hash_static_info, n)
#define INTLIKE_HDR(n) CLOSURE(Int_hash_static_info, n)
/* put these in the *data* section, since the garbage collector relies
* on the fact that static closures live in the data section.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment