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

SCM Repository

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

Diff of /branches/vis12/src/compiler/simplify/simplify.sml

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

revision 2781, Tue Oct 14 15:49:37 2014 UTC revision 2782, Tue Oct 14 17:05:56 2014 UTC
# Line 28  Line 28 
28              (x', VMap.insert(env, x, x'))              (x', VMap.insert(env, x, x'))
29            end            end
30    
   (* convert an AST variable to a Simple variable while adding a prefix to its name.  We add  
    * the prefix to avoid conflicts with C keywords.  
    *)  
     fun cvtVar' (env, prefix, x as Var.V{name, kind, ty=([], ty), ...}) = let  
           val x' = SimpleVar.new (prefix ^ name, kind, cvtTy ty)  
           in  
             (x', VMap.insert(env, x, x'))  
           end  
   
31      fun cvtVars (env, xs) = List.foldr      fun cvtVars (env, xs) = List.foldr
32            (fn (x, (xs, env)) => let            (fn (x, (xs, env)) => let
33              val (x', env) = cvtVar(env, x)              val (x', env) = cvtVar(env, x)
# Line 111  Line 102 
102                  (* end case *))                  (* end case *))
103            fun simplifyDecl (dcl, env) = (case dcl            fun simplifyDecl (dcl, env) = (case dcl
104                   of AST.D_Input(x, desc, NONE) => let                   of AST.D_Input(x, desc, NONE) => let
105                        val (x', env) = cvtVar'(env, "iv_", x)                        val (x', env) = cvtVar(env, x)
106                        val (ty, init) = (case SimpleVar.typeOf x'                        val (ty, init) = (case SimpleVar.typeOf x'
107                               of ty as SimpleTypes.T_Image{dim, shape} => let                               of ty as SimpleTypes.T_Image{dim, shape} => let
108                                    val info = ImageInfo.mkInfo(dim, shape)                                    val info = ImageInfo.mkInfo(dim, shape)
# Line 131  Line 122 
122                          env                          env
123                        end                        end
124                    | AST.D_Input(x, desc, SOME(AST.E_LoadNrrd(tvs, nrrd, ty))) => let                    | AST.D_Input(x, desc, SOME(AST.E_LoadNrrd(tvs, nrrd, ty))) => let
125                        val (x', env) = cvtVar'(env, "iv_", x)                        val (x', env) = cvtVar(env, x)
126                      (* load the nrrd proxy here *)                      (* load the nrrd proxy here *)
127                        val info = NrrdInfo.getInfo nrrd                        val info = NrrdInfo.getInfo nrrd
128                        val (ty, init) = (case SimpleVar.typeOf x'                        val (ty, init) = (case SimpleVar.typeOf x'
# Line 150  Line 141 
141                          env                          env
142                        end                        end
143                    | AST.D_Input(x, desc, SOME e) => let                    | AST.D_Input(x, desc, SOME e) => let
144                        val (x', env) = cvtVar'(env, "iv_", x)                        val (x', env) = cvtVar(env, x)
145                        val inp = InP.INP{                        val inp = InP.INP{
146                                ty = SimpleVar.typeOf x',                                ty = SimpleVar.typeOf x',
147                                name = SimpleVar.nameOf x',                                name = SimpleVar.nameOf x',
# Line 162  Line 153 
153                          env                          env
154                        end                        end
155                    | AST.D_Var(AST.VD_Decl(x, e)) => let                    | AST.D_Var(AST.VD_Decl(x, e)) => let
156                        val (x', env) = cvtVar'(env, "gv_", x)                        val (x', env) = cvtVar(env, x)
157                        val (stms, e') = simplifyExp (env, e, [])                        val (stms, e') = simplifyExp (env, e, [])
158                        in                        in
159                          globals := x' :: !globals;                          globals := x' :: !globals;
# Line 233  Line 224 
224            fun simplifyState (env, [], xs, stms) = (List.rev xs, mkBlock stms, env)            fun simplifyState (env, [], xs, stms) = (List.rev xs, mkBlock stms, env)
225              | simplifyState (env, AST.VD_Decl(x, e) :: r, xs, stms) = let              | simplifyState (env, AST.VD_Decl(x, e) :: r, xs, stms) = let
226                  val (stms, e') = simplifyExp (env, e, stms)                  val (stms, e') = simplifyExp (env, e, stms)
227                  val (x', env) = cvtVar'(env, "sv_", x)                  val (x', env) = cvtVar(env, x)
228                  in                  in
229                    simplifyState (env, r, x'::xs, S.S_Assign(x', e') :: stms)                    simplifyState (env, r, x'::xs, S.S_Assign(x', e') :: stms)
230                  end                  end

Legend:
Removed from v.2781  
changed lines
  Added in v.2782

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