1 cananian 1.1.2.1 // HEADER.java, created Fri Aug  7 15:19:12 1998 by cananian
 2 cananian 1.1.2.1 // Copyright (C) 1998 C. Scott Ananian <cananian@alumni.princeton.edu>
 3 cananian 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 cananian 1.1.2.1 package harpoon.IR.Quads;
 5 cananian 1.1.2.1 
 6 cananian 1.1.2.6 import harpoon.ClassFile.HCodeElement;
 7 cananian 1.1.2.2 import harpoon.Temp.Temp;
 8 cananian 1.1.2.1 import harpoon.Temp.TempMap;
 9 cananian 1.1.2.2 import harpoon.Util.Util;
10 cananian 1.1.2.2 
11 cananian 1.1.2.1 /**
12 cananian 1.1.2.1  * <code>HEADER</code> nodes are used to anchor the top end of the
13 cananian 1.1.2.2  * quad graph.  They do not represent bytecode.<p>
14 cananian 1.1.2.4  * The 0-edge out of the <code>HEADER</code> points to the 
15 cananian 1.1.2.4  * <code>FOOTER</code> quad for the method.  The 1-edge out of the
16 cananian 1.1.2.8  * <code>HEADER</code> points to the <code>Quads.METHOD</code> quad at
17 cananian 1.1.2.4  * which to begin execution.
18 cananian 1.1.2.1  * 
19 cananian 1.1.2.1  * @author  C. Scott Ananian <cananian@alumni.princeton.edu>
20 cananian 1.3      * @version $Id: HEADER.java,v 1.3 2002/04/11 04:00:34 cananian Exp $
21 cananian 1.1.2.4  * @see METHOD
22 cananian 1.1.2.1  * @see FOOTER
23 cananian 1.1.2.1  */
24 cananian 1.1.2.1 public class HEADER extends Quad {
25 cananian 1.1.2.1 
26 cananian 1.1.2.4     /** Creates a <code>HEADER</code> quad.
27 cananian 1.1.2.2      */
28 cananian 1.1.2.4     public HEADER(QuadFactory qf, HCodeElement source) {
29 cananian 1.1.2.4         super(qf, source, 0 /* no predecessors */, 2 /* FOOTER and METHOD */);
30 cananian 1.1.2.2     }
31 cananian 1.1.2.2     /** Returns the <code>FOOTER</code> corresponding to this 
32 cananian 1.1.2.2      *  <code>HEADER</code>. */
33 cananian 1.1.2.4     public FOOTER footer() { return (FOOTER) next(0); }
34 cananian 1.1.2.8     /** Returns the <code>Quads.METHOD</code> following this <code>HEADER</code>. */
35 cananian 1.1.2.4     public METHOD method() { return (METHOD) next(1); }
36 cananian 1.1.2.1 
37 cananian 1.1.2.3     public int kind() { return QuadKind.HEADER; }
38 cananian 1.1.2.3     
39 cananian 1.1.2.5     public Quad rename(QuadFactory qqf, TempMap defMap, TempMap useMap) {
40 cananian 1.1.2.4         return new HEADER(qqf, this);
41 cananian 1.1.2.3     }
42 cananian 1.1.2.5     /** Rename all used variables in this Quad according to a mapping.
43 cananian 1.1.2.5      * @deprecated does not preserve immutability. */
44 cananian 1.1.2.3     void renameUses(TempMap tm) { }
45 cananian 1.1.2.5     /** Rename all defined variables in this Quad according to a mapping.
46 cananian 1.1.2.5      * @deprecated does not preserve immutability. */
47 cananian 1.1.2.4     void renameDefs(TempMap tm) { }
48 cananian 1.1.2.1 
49 cananian 1.1.2.7     public void accept(QuadVisitor v) { v.visit(this); }
50 cananian 1.3         public <T> T accept(QuadValueVisitor<T> v) { return v.visit(this); }
51 cananian 1.1.2.1 
52 cananian 1.1.2.1     /** Returns human-readable representation of this Quad. */
53 cananian 1.1.2.2     public String toString() {
54 cananian 1.1.2.4         return "HEADER";
55 cananian 1.1.2.1     }
56 cananian 1.2     }