1 cananian 1.1 // ExecMap.java, created Sat Sep 12 17:08:50 1998 by cananian 2 cananian 1.2 // Copyright (C) 1998 C. Scott Ananian <cananian@alumni.princeton.edu> 3 cananian 1.2 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 cananian 1.1 package harpoon.Analysis.Maps; 5 cananian 1.1 6 cananian 1.1 import harpoon.ClassFile.HCode; 7 cananian 1.1 import harpoon.ClassFile.HCodeElement; 8 cananian 1.1 import harpoon.ClassFile.HCodeEdge; 9 cananian 1.1 /** 10 cananian 1.1 * <code>ExecMap</code> is a mapping from <code>HCodeElement</code>s to 11 cananian 1.1 * their executable status. 12 cananian 1.1 * 13 cananian 1.1 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 14 cananian 1.4 * @version $Id: ExecMap.java,v 1.4 2002/09/02 19:23:26 cananian Exp $ 15 cananian 1.1 */ 16 cananian 1.1 17 cananian 1.4 public interface ExecMap<HCE extends HCodeElement> { 18 cananian 1.1 /** 19 cananian 1.1 * Returns the executable status of an <code>HCodeElement</code>. 20 cananian 1.1 * @param node The <code>HCodeElement</code> to examine. 21 cananian 1.1 * @return <code>true</code> if it is possible to execute this 22 cananian 1.1 * <code>HCodeElement</code>; or <code>false</code> if 23 cananian 1.1 * it can be proved that this <code>HCodeElement</code> 24 cananian 1.1 * will never be executed. */ 25 cananian 1.4 public boolean execMap(HCE node); 26 cananian 1.1 /** 27 cananian 1.1 * Returns the executable status of an <code>HCodeEdge</code>. 28 cananian 1.1 * @param edge An edge between two <code>HCodeElement</code>s in 29 cananian 1.2.2.1 * some <code>HCode</code>. 30 cananian 1.1 * @return <code>true</code> if it is possible to traverse this 31 cananian 1.1 * edge during execution, or <code>false</code> if it 32 cananian 1.1 * can be proved that this edge will never be followed. 33 cananian 1.1 */ 34 cananian 1.4 public boolean execMap(HCodeEdge<HCE> edge); 35 cananian 1.1 }