Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/MLRISC/flowgraph/cfg.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/flowgraph/cfg.sml

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

revision 1083, Thu Feb 21 18:52:10 2002 UTC revision 1084, Thu Feb 21 18:52:44 2002 UTC
# Line 6  Line 6 
6  functor ControlFlowGraph  functor ControlFlowGraph
7     (structure I : INSTRUCTIONS     (structure I : INSTRUCTIONS
8      structure GraphImpl : GRAPH_IMPLEMENTATION      structure GraphImpl : GRAPH_IMPLEMENTATION
9      structure InsnProps : INSN_PROPERTIES      structure InsnProps : INSN_PROPERTIES where I = I
                         where I = I  
10      structure Asm : INSTRUCTION_EMITTER where I = I      structure Asm : INSTRUCTION_EMITTER where I = I
   
11     ) : CONTROL_FLOW_GRAPH =     ) : CONTROL_FLOW_GRAPH =
12  struct  struct
13    
# Line 27  Line 25 
25          START          (* entry node *)          START          (* entry node *)
26        | STOP           (* exit node *)        | STOP           (* exit node *)
27        | NORMAL         (* normal node *)        | NORMAL         (* normal node *)
       | HYPERBLOCK     (* hyperblock *)  
28    
29      and block =      and block =
30         BLOCK of         BLOCK of
# Line 40  Line 37 
37            annotations : Annotations.annotations ref (* annotations *)            annotations : Annotations.annotations ref (* annotations *)
38         }         }
39    
40      and edge_kind = ENTRY           (* entry edge *)      and edge_kind           (* edge kinds (see cfg.sig for more info) *)
41          = ENTRY                   (* entry edge *)
42                    | EXIT            (* exit edge *)                    | EXIT            (* exit edge *)
43                    | JUMP            (* unconditional jump *)                    | JUMP            (* unconditional jump *)
44                    | FALLSTHRU       (* falls through to next block *)                    | FALLSTHRU       (* falls through to next block *)
45                    | BRANCH of bool  (* branch *)                    | BRANCH of bool  (* branch *)
46                    | SWITCH of int   (* computed goto *)                    | SWITCH of int   (* computed goto *)
47                    | SIDEEXIT of int (* side exit *)        | FLOWSTO                 (* FLOW_TO edge *)
48    
49      and edge_info = EDGE of { k : edge_kind,                  (* edge kind *)      and edge_info = EDGE of {
50            k : edge_kind,                  (* edge kind *)
51                                w : weight ref,                 (* edge freq *)                                w : weight ref,                 (* edge freq *)
52                                a : Annotations.annotations ref (* annotations *)                                a : Annotations.annotations ref (* annotations *)
53                              }                              }
# Line 134  Line 133 
133      *========================================================================*)      *========================================================================*)
134      fun kindName START          = "START"      fun kindName START          = "START"
135        | kindName STOP           = "STOP"        | kindName STOP           = "STOP"
       | kindName HYPERBLOCK     = "Hyperblock"  
136        | kindName NORMAL         = "Block"        | kindName NORMAL         = "Block"
137    
138      fun nl() = TextIO.output(!AsmStream.asmOutStream,"\n")      fun nl() = TextIO.output(!AsmStream.asmOutStream,"\n")
# Line 291  Line 289 
289                        |  SWITCH i => Int.toString i                        |  SWITCH i => Int.toString i
290                        |  ENTRY    => "entry"                        |  ENTRY    => "entry"
291                        |  EXIT     => "exit"                        |  EXIT     => "exit"
292                        |  SIDEEXIT i => "sideexit("^Int.toString i^")"                        |  FLOWSTO  => "flowsto"
293             val weight = "(" ^ W.toString (!w) ^ ")"             val weight = "(" ^ W.toString (!w) ^ ")"
294         in  kind ^ weight         in  kind ^ weight
295         end         end

Legend:
Removed from v.1083  
changed lines
  Added in v.1084

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