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

SCM Repository

[smlnj] Annotation of /sml/trunk/src/MLRISC/ra/ra-flowgraph.sig
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/ra/ra-flowgraph.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 744 - (view) (download) (as text)

1 : monnier 467 (*
2 :     * Abstract view a flowgraph required by the new register allocator.
3 :     * In order to allow different representation to share the same
4 :     * register allocator core, each representation should implement the
5 :     * following interface to talk to the new RA.
6 :     *
7 :     * -- Allen
8 :     *)
9 :    
10 :     signature RA_FLOWGRAPH =
11 :     sig
12 :    
13 :     structure I : INSTRUCTIONS
14 :     structure C : CELLS
15 :     structure G : RA_GRAPH = RAGraph
16 :     structure Spill : RA_SPILL
17 :     structure W : FREQ
18 :     sharing Spill.I = I
19 :     sharing I.C = C
20 :    
21 :     type flowgraph
22 :    
23 : monnier 498 val mode : G.mode
24 :    
25 : monnier 467 (* Dump the flograph to a stream *)
26 :     val dumpFlowgraph : string * flowgraph * TextIO.outstream -> unit
27 :    
28 :     (*
29 :     * Interface for communicating with the new register allocator.
30 : leunga 641 * It is expected that the services will cache enough information
31 :     * during build so that the rebuild and spill phases can be execute
32 : monnier 467 * quickly.
33 :     *)
34 :     val services : flowgraph ->
35 :     { build : G.interferenceGraph * C.cellkind->
36 :     G.move list, (* build the graph *)
37 : monnier 498 spill : {copyInstr : Spill.copyInstr,
38 :     spill : Spill.spill,
39 :     spillSrc : Spill.spillSrc,
40 :     spillCopyTmp : Spill.spillCopyTmp,
41 :     reload : Spill.reload,
42 :     reloadDst : Spill.reloadDst,
43 :     renameSrc : Spill.renameSrc,
44 :     graph : G.interferenceGraph,
45 :     nodes : G.node list,
46 :     cellkind : C.cellkind
47 :     } -> G.move list,
48 : monnier 467 (* spill/rebuild the graph *)
49 : monnier 498 programPoint : {block:int, instr:int} -> G.programPoint,
50 :     blockNum : G.programPoint -> int,
51 :     instrNum : G.programPoint -> int
52 : monnier 467 }
53 :    
54 :     end

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