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

SCM Repository

[diderot] Diff of /trunk/src/compiler/translate/translate.sml
ViewVC logotype

Diff of /trunk/src/compiler/translate/translate.sml

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

revision 435, Tue Oct 19 13:14:20 2010 UTC revision 511, Tue Feb 8 17:01:43 2011 UTC
# Line 19  Line 19 
19      structure IL = HighIL      structure IL = HighIL
20      structure DstTy = HighILTypes      structure DstTy = HighILTypes
21    
22        structure Census = CensusFn (IL)
23    
24        type env = IL.var VMap.map
25    
26      fun lookup env x = (case VMap.find (env, x)      fun lookup env x = (case VMap.find (env, x)
27             of SOME x' => x'             of SOME x' => x'
28              | NONE => raise Fail(concat[              | NONE => raise Fail(concat[
# Line 212  Line 216 
216              (env, List.rev xs)              (env, List.rev xs)
217            end            end
218    
219      fun translate (S.Program{globals, globalInit, actors}) = let      fun translate (S.Program{globals, globalInit, strands}) = let
220            val (globalInit, env) = cvtTopLevelBlock (VMap.empty, globalInit)            val (globalInit, env) = cvtTopLevelBlock (VMap.empty, globalInit)
221          (* 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
222           * the globals.           * the globals.
# Line 228  Line 232 
232                  in                  in
233                    (env, List.rev globs)                    (env, List.rev globs)
234                  end                  end
235            fun cvtActor (S.Actor{name, params, state, stateInit, methods}) = let            fun cvtStrand (S.Strand{name, params, state, stateInit, methods}) = let
236                  val (env, params) = let                  val (env, params) = let
237                        fun cvtParam (x, (env, xs)) = let                        fun cvtParam (x, (env, xs)) = let
238                              val x' = newVar x                              val x' = newVar x
# Line 250  Line 254 
254                          IL.Method{name=name, stateIn=stateIn, stateOut=stateOut, body=body}                          IL.Method{name=name, stateIn=stateIn, stateOut=stateOut, body=body}
255                        end                        end
256                  in                  in
257                    IL.Actor{                    IL.Strand{
258                        name = name,                        name = name,
259                        params = params,                        params = params,
260                        state = state',                        state = state',
# Line 258  Line 262 
262                        methods = List.map cvtMethod methods                        methods = List.map cvtMethod methods
263                      }                      }
264                  end                  end
265            in            val prog = IL.Program{
             IL.Program{  
266                  globals = globs,                  globals = globs,
267                  globalInit = globalInit,                  globalInit = globalInit,
268                  actors = List.map cvtActor actors                  strands = List.map cvtStrand strands
269                }                }
270              in
271                Census.init prog;
272                prog
273            end            end
274    
275    end    end

Legend:
Removed from v.435  
changed lines
  Added in v.511

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