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

SCM Repository

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

Diff of /branches/pure-cfg/src/compiler/IL/ssa-sig.sml

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

revision 1505, Tue Sep 20 13:24:45 2011 UTC revision 1556, Sun Oct 23 15:43:41 2011 UTC
# Line 89  Line 89 
89              stm : assign,              stm : assign,
90              succ : node ref              succ : node ref
91            }            }
92          | MASSIGN of {                    (* multi-assignment *)
93                pred : node ref,
94                stm : massign,
95                succ : node ref
96              }
97        | NEW of {                        (* create new strand instance *)        | NEW of {                        (* create new strand instance *)
98              pred : node ref,              pred : node ref,
99              strand : Atom.atom,              strand : Atom.atom,
# Line 127  Line 132 
132      and var_bind      and var_bind
133        = VB_NONE        = VB_NONE
134        | VB_RHS of rhs                   (* defined by an assignment (includes globals and state variables) *)        | VB_RHS of rhs                   (* defined by an assignment (includes globals and state variables) *)
135          | VB_MULTIOP of int * Op.rator * var list
136                                            (* n'th result of operator in multi-assignment *)
137        | VB_PHI of var list              (* defined by a phi node *)        | VB_PHI of var list              (* defined by a phi node *)
138        | VB_PARAM                        (* parameter to a strand *)        | VB_PARAM                        (* parameter to a strand *)
139    
140      withtype assign = (var * rhs)      withtype assign = (var * rhs)
141             and massign = (var list * Op.rator * var list)
142           and phi = (var * var list)           and phi = (var * var list)
143    
144        datatype assignment = ASSGN of assign | MASSGN of massign
145    
146    
147    (***** Program representation *****)    (***** Program representation *****)
148    
# Line 197  Line 207 
207        (* is a CFG empty? *)        (* is a CFG empty? *)
208          val isEmpty : cfg -> bool          val isEmpty : cfg -> bool
209        (* create a basic block from a list of assignments *)        (* create a basic block from a list of assignments *)
210          val mkBlock : assign list -> cfg          val mkBlock : assignment list -> cfg
211        (* entry/exit nodes of a CFG *)        (* entry/exit nodes of a CFG *)
212          val entry : cfg -> node          val entry : cfg -> node
213          val exit : cfg -> node          val exit : cfg -> node
# Line 266  Line 276 
276          val mkCOND : {cond : var, trueBranch : node, falseBranch : node} -> node          val mkCOND : {cond : var, trueBranch : node, falseBranch : node} -> node
277          val mkCOM : string list -> node          val mkCOM : string list -> node
278          val mkASSIGN : assign -> node          val mkASSIGN : assign -> node
279            val mkMASSIGN : massign -> node
280          val mkNEW : {strand : Atom.atom, args : var list} -> node          val mkNEW : {strand : Atom.atom, args : var list} -> node
281          val mkSAVE : (state_var * var) -> node          val mkSAVE : (state_var * var) -> node
282          val mkEXIT : ExitKind.kind * var list -> node          val mkEXIT : ExitKind.kind * var list -> node
# Line 334  Line 345 
345    
346    (* return a string representation of an assignment *)    (* return a string representation of an assignment *)
347      val assignToString : assign -> string      val assignToString : assign -> string
348        val massignToString : massign -> string
349    
350    end    end

Legend:
Removed from v.1505  
changed lines
  Added in v.1556

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