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/mlrisc/flowgraph.sml
ViewVC logotype

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

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

sml/branches/SMLNJ/src/MLRISC/mlrisc/flowgraph.sml revision 113, Fri Jun 5 19:41:21 1998 UTC sml/trunk/src/MLRISC/mlrisc/flowgraph.sml revision 128, Mon Sep 7 19:06:29 1998 UTC
# Line 9  Line 9 
9    
10  signature FLOWGRAPH = sig  signature FLOWGRAPH = sig
11    
12      structure B : BLOCK_NAMES
13    structure C : CELLS    structure C : CELLS
14    structure I : INSTRUCTIONS    structure I : INSTRUCTIONS
15    structure P : PSEUDO_OPS    structure P : PSEUDO_OPS
16            sharing I.C = C            sharing I.C = C
17    
18    
19    
20    datatype block =    datatype block =
21        PSEUDO of P.pseudo_op        PSEUDO of P.pseudo_op
22      | LABEL of Label.label      | LABEL of Label.label
23      | BBLOCK of { blknum  : int,      | BBLOCK of { blknum  : int,
24                      name    : B.name,
25                    liveIn  : C.cellset ref,                    liveIn  : C.cellset ref,
26                    liveOut : C.cellset ref,                    liveOut : C.cellset ref,
27                    succ    : block list ref,                    succ    : block list ref,
# Line 39  Line 42 
42          regmap: int Intmap.intmap,          regmap: int Intmap.intmap,
43          blkCounter : int ref          blkCounter : int ref
44        }        }
   
   val prBlock : block -> unit  
45  end  end
46    
47    
# Line 48  Line 49 
49   *  a specific type of cells and instructions.   *  a specific type of cells and instructions.
50   *)   *)
51  functor FlowGraph(structure I : INSTRUCTIONS  functor FlowGraph(structure I : INSTRUCTIONS
52                    structure P : PSEUDO_OPS) : FLOWGRAPH =                    structure P : PSEUDO_OPS
53                      structure B : BLOCK_NAMES) : FLOWGRAPH =
54  struct  struct
55    structure I = I    structure I = I
56    structure C = I.C    structure C = I.C
57    structure P = P    structure P = P
58      structure B = B
59    
60    datatype block =    datatype block =
61        PSEUDO of P.pseudo_op        PSEUDO of P.pseudo_op
62      | LABEL of Label.label      | LABEL of Label.label
63      | BBLOCK of { blknum  : int,      | BBLOCK of { blknum  : int,
64                      name    : B.name,
65                    liveIn  : C.cellset ref,                    liveIn  : C.cellset ref,
66                    liveOut : C.cellset ref,                    liveOut : C.cellset ref,
67                    succ    : block list ref,                    succ    : block list ref,
# Line 78  Line 82 
82          regmap: int Intmap.intmap,          regmap: int Intmap.intmap,
83          blkCounter : int ref          blkCounter : int ref
84        }        }
   
   fun prBlock(PSEUDO pOp)        = print (P.toString pOp)  
     | prBlock(LABEL lab)         = print ("LABEL " ^ Label.nameOf lab ^ "\n")  
     | prBlock(BBLOCK{blknum,succ,pred,liveOut,liveIn,...}) = let  
   
         fun prBlkList [] = print "\n"  
           | prBlkList (BBLOCK{blknum, ...}::blocks) =  
               (print (Int.toString blknum ^ ","); prBlkList blocks)  
   
         fun prCells cells =  
           (print (C.cellset2string cells);  
            print "\n")  
       in  
           print("BLOCK" ^ Int.toString blknum ^ "\n");  
           print("\t liveIn: ");  prCells(!liveIn);  
           print("\t succ: ");    prBlkList(!succ);  
           print("\t pred: ");    prBlkList(!pred);  
           print("\t liveOut: "); prCells(!liveOut)  
       end  
     | prBlock(ORDERED blks) = app prBlock blks  
85  end  end
86    
87    
88    
89    
 (*  
  * $Log$  
  *)  

Legend:
Removed from v.113  
changed lines
  Added in v.128

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