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 1125 - (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 :     sharing Spill.I = I
18 :     sharing I.C = C
19 :    
20 :     type flowgraph
21 :    
22 : monnier 498 val mode : G.mode
23 :    
24 : monnier 467 (* Dump the flograph to a stream *)
25 :     val dumpFlowgraph : string * flowgraph * TextIO.outstream -> unit
26 :    
27 : george 958 (* Dump the flograph to a stream *)
28 :     val annotations : flowgraph -> Annotations.annotations ref
29 :    
30 : monnier 467 (*
31 :     * Interface for communicating with the new register allocator.
32 : leunga 641 * It is expected that the services will cache enough information
33 :     * during build so that the rebuild and spill phases can be execute
34 : monnier 467 * quickly.
35 :     *)
36 :     val services : flowgraph ->
37 : george 889 { build : G.interferenceGraph * CellsBasis.cellkind->
38 : monnier 467 G.move list, (* build the graph *)
39 : monnier 498 spill : {copyInstr : Spill.copyInstr,
40 :     spill : Spill.spill,
41 :     spillSrc : Spill.spillSrc,
42 :     spillCopyTmp : Spill.spillCopyTmp,
43 :     reload : Spill.reload,
44 :     reloadDst : Spill.reloadDst,
45 :     renameSrc : Spill.renameSrc,
46 :     graph : G.interferenceGraph,
47 :     nodes : G.node list,
48 : george 889 cellkind : CellsBasis.cellkind
49 : monnier 498 } -> G.move list,
50 : monnier 467 (* spill/rebuild the graph *)
51 : monnier 498 programPoint : {block:int, instr:int} -> G.programPoint,
52 :     blockNum : G.programPoint -> int,
53 :     instrNum : G.programPoint -> int
54 : monnier 467 }
55 :    
56 :     end

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