1 cananian 1.1.2.1 // ReachingDefs.java, created Wed Feb  2 03:08:09 2000 by cananian
 2 cananian 1.1.2.1 // Copyright (C) 2000 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.Analysis;
 5 cananian 1.1.2.1 
 6 cananian 1.1.2.3 import harpoon.ClassFile.HCode;
 7 cananian 1.1.2.2 import harpoon.ClassFile.HCodeElement;
 8 cananian 1.1.2.2 import harpoon.Temp.Temp;
 9 cananian 1.1.2.2 
10 cananian 1.1.2.2 import java.util.Set;
11 cananian 1.1.2.1 /**
12 cananian 1.1.2.3  * <code>ReachingDefs</code> defines an abstract class for
13 cananian 1.1.2.1  * analyzing reaching definitions.
14 cananian 1.1.2.1  * 
15 cananian 1.1.2.1  * @author  C. Scott Ananian <cananian@alumni.princeton.edu>
16 cananian 1.3      * @version $Id: ReachingDefs.java,v 1.3 2002/04/10 02:58:48 cananian Exp $
17 cananian 1.1.2.1  */
18 cananian 1.2.2.1 public abstract class ReachingDefs<HCE extends HCodeElement> {
19 pnkfelix 1.1.2.4     public final static boolean TIME = false;
20 pnkfelix 1.1.2.4 
21 cananian 1.1.2.3     /** The <code>HCode</code> for which this object contains analysis
22 cananian 1.1.2.3      *  results. */
23 cananian 1.2.2.1     protected final HCode<HCE> hc;
24 cananian 1.1.2.3     
25 cananian 1.1.2.3     /** Creates a <code>ReachingDefs</code> object for the provided
26 cananian 1.1.2.3      *  <code>HCode</code>. */
27 cananian 1.2.2.1     public ReachingDefs(HCode<HCE> hc) { this.hc = hc; }
28 cananian 1.1.2.3 
29 cananian 1.1.2.1     /** Returns the Set of <code>HCodeElement</code>s providing definitions
30 cananian 1.1.2.1      *  of <code>Temp</code> <code>t</code> which reach 
31 cananian 1.1.2.1      *  <code>HCodeElement</code> <code>hce</code>. */
32 cananian 1.2.2.1     public abstract Set<HCE> reachingDefs(HCE hce, Temp t);
33 cananian 1.2     }