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

SCM Repository

[diderot] Annotation of /trunk/src/compiler/IL/translate-env-fn.sml
ViewVC logotype

Annotation of /trunk/src/compiler/IL/translate-env-fn.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3349 - (view) (download)

1 : jhr 1640 (* translate-env-fn.sml
2 :     *
3 : jhr 3349 * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
4 :     *
5 :     * COPYRIGHT (c) 2015 The University of Chicago
6 : jhr 1640 * All rights reserved.
7 :     *)
8 :    
9 :     signature TRANSLATE_ENV_PARAMS =
10 :     sig
11 :    
12 :     structure SrcIL : SSA
13 :     structure DstIL : SSA
14 :    
15 :     type var_env = DstIL.var SrcIL.Var.Tbl.hash_table
16 :     type state_var_env = DstIL.state_var SrcIL.StateVar.Tbl.hash_table
17 :    
18 :     val rename : (var_env * SrcIL.var) -> DstIL.var
19 :     val renameSV : (state_var_env * SrcIL.state_var) -> DstIL.state_var
20 :    
21 :     end
22 :    
23 :     functor TranslateEnvFn (Params : TRANSLATE_ENV_PARAMS) : sig
24 :    
25 :     structure SrcIL : SSA
26 :     structure DstIL : SSA
27 :    
28 :     type env
29 :    
30 :     val mkEnv : unit -> env
31 :    
32 :     val rename : (env * SrcIL.var) -> DstIL.var
33 :     val renameList : (env * SrcIL.var list) -> DstIL.var list
34 :     val renameSV : (env * SrcIL.state_var) -> DstIL.state_var
35 :    
36 :     val insertNd : (env * Stamp.stamp * DstIL.node) -> unit
37 :     val findNd : env -> Stamp.stamp -> DstIL.node option
38 :    
39 :     end = struct
40 :    
41 :     structure SrcIL = Params.SrcIL
42 :     structure DstIL = Params.DstIL
43 :    
44 :     datatype env = E of {
45 :     ndMap : DstIL.node Stamp.Tbl.hash_table,
46 :     vMap : Params.var_env,
47 :     svMap : Params.state_var_env
48 :     }
49 :    
50 :     fun mkEnv () = E{
51 :     ndMap = Stamp.Tbl.mkTable (256, Fail "ndMap"),
52 :     vMap = SrcIL.Var.Tbl.mkTable (256, Fail "vMap"),
53 :     svMap = SrcIL.StateVar.Tbl.mkTable (64, Fail "svMap")
54 :     }
55 :    
56 :     fun rename (E{vMap, ...}, x) = Params.rename(vMap, x)
57 :    
58 :     fun renameList (env, xs) = List.map (fn x => rename (env, x)) xs
59 :    
60 :     fun renameSV (E{svMap, ...}, x) = Params.renameSV (svMap, x)
61 :    
62 :     fun insertNd (E{ndMap, ...}, id, nd) = Stamp.Tbl.insert ndMap (id, nd)
63 :    
64 :     fun findNd (E{ndMap, ...}) = Stamp.Tbl.find ndMap
65 :    
66 :     end

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