Added an EXIT intrinsic that's useful for profiling

This commit is contained in:
Neil Brown 2009-05-25 17:08:11 +00:00
parent d98c5079ca
commit af1e4b6b7f
2 changed files with 5 additions and 0 deletions

View File

@ -2183,6 +2183,10 @@ cgenIntrinsicProc :: Meta -> String -> [A.Actual] -> CGen ()
cgenIntrinsicProc m "ASSERT" [A.ActualExpression e] = call genAssert m e cgenIntrinsicProc m "ASSERT" [A.ActualExpression e] = call genAssert m e
cgenIntrinsicProc _ "RESCHEDULE" [] = call genReschedule cgenIntrinsicProc _ "RESCHEDULE" [] = call genReschedule
cgenIntrinsicProc m "CAUSEERROR" [] = call genStop m "CAUSEERROR" cgenIntrinsicProc m "CAUSEERROR" [] = call genStop m "CAUSEERROR"
cgenIntrinsicProc m "EXIT" [A.ActualExpression e]
= do tell ["exit("]
call genExpression e
tell [");"]
cgenIntrinsicProc m "SETAFF" [A.ActualExpression e] = call genSetAff m e cgenIntrinsicProc m "SETAFF" [A.ActualExpression e] = call genSetAff m e
cgenIntrinsicProc m "SETPRI" [A.ActualExpression e] = call genSetPri m e cgenIntrinsicProc m "SETPRI" [A.ActualExpression e] = call genSetPri m e
cgenIntrinsicProc m s as = case lookup s intrinsicProcs of cgenIntrinsicProc m s as = case lookup s intrinsicProcs of

View File

@ -130,6 +130,7 @@ intrinsicProcs :: [(String, [(A.AbbrevMode, A.Type, String)])]
intrinsicProcs = intrinsicProcs =
[ ("ASSERT", [(A.ValAbbrev, A.Bool, "value")]) [ ("ASSERT", [(A.ValAbbrev, A.Bool, "value")])
, ("CAUSEERROR", []) , ("CAUSEERROR", [])
, ("EXIT", [(A.ValAbbrev, A.Int, "code")])
, ("RESCHEDULE", []) , ("RESCHEDULE", [])
, ("SETAFF", [(A.ValAbbrev, A.Int, "aff")]) , ("SETAFF", [(A.ValAbbrev, A.Int, "aff")])
, ("SETPRI", [(A.ValAbbrev, A.Int, "pri")]) , ("SETPRI", [(A.ValAbbrev, A.Int, "pri")])