Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/vis12-cl/src/compiler/c-util/tree-to-c.sml
ViewVC logotype

Diff of /branches/vis12-cl/src/compiler/c-util/tree-to-c.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1803, Fri Apr 6 13:46:37 2012 UTC revision 1807, Sat Apr 7 12:00:48 2012 UTC
# Line 486  Line 486 
486              (fn (x, env) => V.Map.insert(env, x, V(trType(V.ty x), V.name x)))              (fn (x, env) => V.Map.insert(env, x, V(trType(V.ty x), V.name x)))
487                env locals                env locals
488    
489    (* generate code to check the status of runtime-system calls *)    (* generate code to check the status of runtime-system calls; this code assumes that
490       * we are in a function with a boolean return type
491       *)
492      fun checkSts mkDecl = let      fun checkSts mkDecl = let
493            val sts = freshVar "sts"            val sts = freshVar "sts"
494            in            in
495              mkDecl sts @              mkDecl sts @
496              [CL.mkIfThen(              [CL.mkIfThen(
497                CL.mkBinOp(CL.mkVar "DIDEROT_OK", CL.#!=, CL.mkVar sts),                CL.mkBinOp(CL.mkVar "DIDEROT_OK", CL.#!=, CL.mkVar sts),
498                CL.mkCall("exit", [intExp 1]))]                CL.mkReturn(SOME(CL.mkVar "true")))]
499            end            end
500    
501      fun trStms (env, stms) = let      fun trStms (env, stms) = let
# Line 520  Line 522 
522                        in [                        in [
523                          CL.mkDecl(                          CL.mkDecl(
524                            CL.T_Named N.statusTy, sts,                            CL.T_Named N.statusTy, sts,
525                            SOME(CL.I_Exp(CL.E_Apply(loadFn, [name, addrOf lhs]))))                            SOME(CL.I_Exp(CL.E_Apply(loadFn, [
526                                  CL.mkCast(CL.T_Ptr(CL.T_Named "WorldPrefix_t"), CL.mkVar "wrld"),
527                                  name, addrOf lhs
528                                ]))))
529                        ] end)                        ] end)
530                    | IL.S_Input(_, _, _, NONE) => []                    | IL.S_Input(_, _, _, NONE) => []
531                    | IL.S_Input(lhs, name, _, SOME dflt) => [                    | IL.S_Input(lhs, name, _, SOME dflt) => [
532                          CL.mkAssign(VarToC.lvalueVar(env, lhs), trExp(env, dflt))                          CL.mkAssign(VarToC.lvalueVar(env, lhs), trExp(env, dflt))
533                        ]                        ]
534                    | IL.S_Exit args => [CL.mkReturn NONE]                    | IL.S_Exit args => []
535                    | IL.S_Active => [CL.mkReturn(SOME(CL.mkVar N.kActive))]                    | IL.S_Active => [CL.mkReturn(SOME(CL.mkVar N.kActive))]
536                    | IL.S_Stabilize => [CL.mkReturn(SOME(CL.mkVar N.kStabilize))]                    | IL.S_Stabilize => [CL.mkReturn(SOME(CL.mkVar N.kStabilize))]
537                    | IL.S_Die => [CL.mkReturn(SOME(CL.mkVar N.kDie))]                    | IL.S_Die => [CL.mkReturn(SOME(CL.mkVar N.kDie))]

Legend:
Removed from v.1803  
changed lines
  Added in v.1807

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0