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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/simplify/inliner.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/simplify/inliner.sml

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

revision 3456, Mon Nov 23 15:49:56 2015 UTC revision 3465, Sun Nov 29 20:04:16 2015 UTC
# Line 39  Line 39 
39                    S.Block(List.rev stms)                    S.Block(List.rev stms)
40                  end                  end
41            and doStmt (env, isTop, stm) = (case stm            and doStmt (env, isTop, stm) = (case stm
42                   of S.S_Var x => let                   of S.S_Var(x, optE) => let
43                        val x' = V.copy x                        val x' = V.copy(x, V.kindOf x)
44                          val optE' = Option.map (doExp env) optE
45                        in                        in
46                          (V.Map.insert(env, x, x'), S.S_Var x')                          (V.Map.insert(env, x, x'), S.S_Var(x', optE'))
47                        end                        end
48                    | S.S_Assign(x, e) => (case V.Map.find(env, x)                    | S.S_Assign(x, e) => (env, S.S_Assign(rename env x, doExp env e))
                        of SOME x' => (env, S.S_Assign(x', doExp env e))  
                         | NONE => let  
                             val x' = V.copy x  
                             in  
                               (V.Map.insert(env, x, x'), S.S_Assign(x', doExp env e))  
                             end  
                       (* end case *))  
49                    | S.S_IfThenElse(x, b1, b2) =>                    | S.S_IfThenElse(x, b1, b2) =>
50                        (env, S.S_IfThenElse(rename env x, doBlock(env, false, b1), doBlock(env, false, b2)))                        (env, S.S_IfThenElse(rename env x, doBlock(env, false, b1), doBlock(env, false, b2)))
51                    | S.S_Foreach(x, xs, blk) =>                    | S.S_Foreach(x, xs, blk) =>
# Line 64  Line 58 
58                        if not isTop then needsLHSPreDecl := true else ();                        if not isTop then needsLHSPreDecl := true else ();
59                        (env, S.S_Assign(lhs, S.E_Var(rename env x))))                        (env, S.S_Assign(lhs, S.E_Var(rename env x))))
60                    | S.S_Print xs => (env, S.S_Print(List.map (rename env) xs))                    | S.S_Print xs => (env, S.S_Print(List.map (rename env) xs))
61                      | S.S_MapReduce _ => raise Fail "unexpected MapReduce in function"
62                  (* end case *))                  (* end case *))
63            and doExp env exp = (case exp            and doExp env exp = (case exp
64                   of S.E_Var x => S.E_Var(rename env x)                   of S.E_Var x => S.E_Var(rename env x)
# Line 88  Line 83 
83            val blk as S.Block stms = doBlock (env, true, body)            val blk as S.Block stms = doBlock (env, true, body)
84            in            in
85              if !needsLHSPreDecl              if !needsLHSPreDecl
86                then S.Block(S.S_Var lhs :: stms)                then S.Block(S.S_Var(lhs, NONE) :: stms)
87                else blk                else blk
88            end            end
89    

Legend:
Removed from v.3456  
changed lines
  Added in v.3465

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