- { basicInfo $3 (mkIntCLit (fromIntegral $5)) 0 $7 $9 $11 }
-
- | 'INFO_TABLE_RET' '(' NAME ',' INT ',' INT ',' INT maybe_vec ')'
- { retInfo $3 $5 $7 $9 $10 }
-
-maybe_vec :: { [CmmLit] }
- : {- empty -} { [] }
- | ',' NAME maybe_vec { CmmLabel (mkRtsCodeLabelFS $2) : $3 }
+ { do prof <- profilingInfo $9 $11
+ return (mkRtsInfoLabelFS $3,
+ CmmInfoTable prof (fromIntegral $7)
+ (ThunkSelectorInfo (fromIntegral $5) NoC_SRT),
+ []) }
+
+ | 'INFO_TABLE_RET' '(' NAME ',' INT ')'
+ -- closure type (no live regs)
+ { return (mkRtsInfoLabelFS $3,
+ CmmInfoTable (ProfilingInfo zeroCLit zeroCLit) (fromIntegral $5)
+ (ContInfo [] NoC_SRT),
+ []) }
+
+ | 'INFO_TABLE_RET' '(' NAME ',' INT ',' formals0 ')'
+ -- closure type, live regs
+ { do live <- sequence (map (liftM Just) $7)
+ return (mkRtsInfoLabelFS $3,
+ CmmInfoTable (ProfilingInfo zeroCLit zeroCLit) (fromIntegral $5)
+ (ContInfo live NoC_SRT),
+ live) }