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

SCM Repository

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

Diff of /branches/lamont_dev/src/compiler/translate/translate.sml

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

revision 407, Fri Oct 15 12:27:09 2010 UTC revision 511, Tue Feb 8 17:01:43 2011 UTC
# Line 1  Line 1 
1  (* translate.sml  (* translate.sml
2   *   *
3   * COPYRIGHT (c) 2010 The Diderot Project (http://diderot.cs.uchicago.edu)   * COPYRIGHT (c) 2010 The Diderot Project (http://diderot-language.cs.uchicago.edu)
4   * All rights reserved.   * All rights reserved.
5   *   *
6   * Translate Simple-AST code into the IL representation.   * Translate Simple-AST code into the IL representation.
# 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 31  Line 35 
35              | Ty.T_Int => DstTy.IntTy              | Ty.T_Int => DstTy.IntTy
36              | Ty.T_String => DstTy.StringTy              | Ty.T_String => DstTy.StringTy
37              | Ty.T_Kernel _ => DstTy.KernelTy              | Ty.T_Kernel _ => DstTy.KernelTy
38              | Ty.T_Tensor(Ty.Shape dd) => DstTy.TensorTy(List.map (fn (Ty.DimConst d) => d) dd)              | Ty.T_Tensor(Ty.Shape dd) => let
39                    fun cvtDim (Ty.DimConst 1) = NONE
40                      | cvtDim (Ty.DimConst d) = SOME d
41                    in
42                      DstTy.TensorTy(List.mapPartial cvtDim dd)
43                    end
44              | Ty.T_Image _ => DstTy.ImageTy              | Ty.T_Image _ => DstTy.ImageTy
45              | Ty.T_Field _ => DstTy.FieldTy              | Ty.T_Field _ => DstTy.FieldTy
46              | ty => raise Fail("cvtTy: unexpected " ^ TypeUtil.toString ty)              | ty => raise Fail("cvtTy: unexpected " ^ TypeUtil.toString ty)
# Line 207  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 223  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 245  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 253  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.407  
changed lines
  Added in v.511

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