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

SCM Repository

[diderot] Diff of /branches/pure-cfg/src/compiler/translate/translate.sml
ViewVC logotype

Diff of /branches/pure-cfg/src/compiler/translate/translate.sml

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

revision 612, Sat Mar 12 17:56:24 2011 UTC revision 613, Sat Mar 12 19:29:23 2011 UTC
# Line 279  Line 279 
279                }                }
280            end            end
281    
282      (* convert the initially code *)
283        fun cvtInitially (env, isArray, S.C_Create{argInit, name, args}, iters) = let
284              fun cvtIter (S.I_Range{rangeInit, param, lo, hi}, (env, iters)) = let
285                    val (cfg, env) = cvtTopLevelBlock (env, rangeInit)
286                    val param' = newVar param
287                    val env = VMap.insert (env, param, param')
288                    val iter = (cfg, param', lookup env lo, lookup env hi)
289                    in
290                      (env, iter::iters)
291                    end
292              val (env, iters) = List.foldl cvtIter (env, []) iters
293              val (argInitCFG, env) = cvtTopLevelBlock (env, argInit)
294              in
295                IL.Initially{
296                    isArray = isArray,
297                    create = (argInitCFG, name, List.map (lookup env) args),
298                    iters = List.rev iters
299                  }
300              end
301    
302      fun translate (S.Program{globals, globalInit, init, strands}) = let      fun translate (S.Program{globals, globalInit, init, strands}) = let
303            val (globalInit, env) = cvtTopLevelBlock (VMap.empty, globalInit)            val (globalInit, env) = cvtTopLevelBlock (VMap.empty, globalInit)
304          (* get the SSA names for the globals and a reduced environment that just defines          (* get the SSA names for the globals and a reduced environment that just defines
# Line 295  Line 315 
315                  in                  in
316                    (env, List.rev globs)                    (env, List.rev globs)
317                  end                  end
318              val init = (case init
319                     of S.InitialArray(creat, iters) => cvtInitially (env, true, creat, iters)
320                      | S.InitialCollection(creat, iters) => cvtInitially (env, false, creat, iters)
321                    (* end case *))
322            fun cvtStrand (S.Strand{name, params, state, stateInit, methods}) = let            fun cvtStrand (S.Strand{name, params, state, stateInit, methods}) = let
323                  val (env, params) = let                  val (env, params) = let
324                        fun cvtParam (x, (env, xs)) = let                        fun cvtParam (x, (env, xs)) = let
# Line 322  Line 346 
346            val prog = IL.Program{            val prog = IL.Program{
347                    globals = globs,                    globals = globs,
348                    globalInit = globalInit,                    globalInit = globalInit,
349                      initially = init,
350                    strands = List.map cvtStrand strands                    strands = List.map cvtStrand strands
351                  }                  }
352            in            in

Legend:
Removed from v.612  
changed lines
  Added in v.613

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