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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/tree-ir/tree-ir.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/tree-ir/tree-ir.sml

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

revision 3767, Mon Apr 18 18:42:10 2016 UTC revision 3832, Fri May 6 15:08:12 2016 UTC
# Line 62  Line 62 
62        | S_New of Atom.atom * exp list   (* new strand creation *)        | S_New of Atom.atom * exp list   (* new strand creation *)
63        | S_Save of state_var * exp  (* save strand state *)        | S_Save of state_var * exp  (* save strand state *)
64        | S_Exit of exp list        | S_Exit of exp list
65          | S_Print of Ty.t list * exp list
66      (* return functions for methods *)      (* return functions for methods *)
67        | S_Active        | S_Active
68        | S_Stabilize        | S_Stabilize
# Line 73  Line 74 
74        | E_Var of var        | E_Var of var
75        | E_Lit of Literal.t        | E_Lit of Literal.t
76        | E_Op of Op.rator * exp list        | E_Op of Op.rator * exp list
77        | E_Cons of exp list * Ty.ty        | E_Cons of exp list * Ty.t
78        | E_Seq of exp list * Ty.ty        | E_Seq of exp list * Ty.t
79        | E_Pack of exp list              (* pack vector pieces into composite vector value *)        | E_Pack of exp list              (* pack vector pieces into composite vector value *)
80          | E_Select of exp * int           (* select vector piece of composite vector value *)
81    
82      and global_var = GV of {      and global_var = GV of {
83          name : string,          (* name (should be unique) *)          name : string,          (* name (should be unique) *)
84          ty : Ty.ty,             (* type *)          ty : Ty.t,                      (* type *)
85          input : bool            (* is an input variable *)          xty : APITypes.t option,        (* external type (for inputs and outputs) *)
86            input : bool,                   (* is an input variable *)
87            output : bool,                  (* is the output value of the strand *)
88            varying : bool                  (* varies over the execution of the program *)
89        }        }
90    
91      and state_var = SV of {      and state_var = SV of {
92          name : string,          (* name (should be unique) *)          name : string,          (* name (should be unique) *)
93          ty : Ty.ty,             (* type *)          ty : Ty.t,                      (* type *)
94          varying : bool,         (* varies over the lifetime of the strand *)          xty : APITypes.t option,        (* external type (for outputs) *)
95          output : bool           (* is the output value of the strand *)          varying : bool                  (* varies over the lifetime of the strand *)
96        }        }
97    
98      and var = V of {      and var = V of {
99          name : string,                  (* name (should be unique) *)          name : string,                  (* name (should be unique) *)
100          id : Stamp.stamp,               (* unique ID *)          id : Stamp.stamp,               (* unique ID *)
101          ty : Ty.ty                      (* type *)          ty : Ty.t                       (* type *)
102        }        }
103    
104      withtype input = global_var Inputs.input      withtype input = global_var Inputs.input
105    
     structure GlobalVar : sig  
         val name : global_var -> string  
         val ty : global_var -> Ty.ty  
         val isInput : global_var -> bool  
         val toString : global_var -> string  
       end = struct  
         fun name (GV{name, ...}) = name  
         fun ty (GV{ty, ...}) = ty  
         fun isInput (GV{input, ...}) = input  
         fun toString (GV{name, ...}) = "globals." ^ name  
       end  
   
     structure StateVar : sig  
         val name : state_var -> string  
         val ty : state_var -> Ty.ty  
         val isOutput : state_var -> bool  
         val isVarying : state_var -> bool  
         val toString : state_var -> string  
       end = struct  
         fun name (SV{name, ...}) = name  
         fun ty (SV{ty, ...}) = ty  
         fun isOutput (SV{output, ...}) = output  
         fun isVarying (SV{varying, ...}) = varying  
         fun toString (SV{name, ...}) = "self." ^ name  
       end  
   
     structure Var : sig  
   
         val new : string * Ty.ty -> var  
         val name : var -> string  
         val toString : var -> string  
         val ty : var -> Ty.ty  
   
         structure Set : ORD_SET where type Key.ord_key = var  
         structure Map : ORD_MAP where type Key.ord_key = var  
   
       end = struct  
         fun new (name, ty) = V{  
                 name = name,  
                 id = Stamp.new(),  
                 ty = ty  
               }  
         fun name (V{name, ...}) = name  
         fun toString (V{name, id, ...}) = concat[name, "$", Stamp.toString id]  
         fun ty (V{ty, ...}) = ty  
         local  
           structure VarOrd =  
             struct  
               type ord_key = var  
               fun compare (V{id=a, ...}, V{id=b, ...}) = Stamp.compare(a, b)  
             end  
         in  
         structure Set = RedBlackSetFn (VarOrd)  
         structure Map = RedBlackMapFn (VarOrd)  
         end (* local *)  
       end  
   
106    end    end

Legend:
Removed from v.3767  
changed lines
  Added in v.3832

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