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 }