1 cananian 1.1.2.1 // ExecMapProxy.java, created Wed Nov 15 21:42:10 2000 by cananian 2 cananian 1.1.2.2 // 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.Maps; 5 cananian 1.1.2.1 6 cananian 1.1.2.1 import harpoon.ClassFile.HCodeAndMaps; 7 cananian 1.1.2.1 import harpoon.ClassFile.HCodeEdge; 8 cananian 1.1.2.1 import harpoon.ClassFile.HCodeElement; 9 cananian 1.1.2.1 import harpoon.IR.Quads.Edge; 10 cananian 1.1.2.1 /** 11 cananian 1.1.2.1 * An <code>ExecMapProxy</code> implements an <code>ExecMap</code> for 12 cananian 1.1.2.1 * a cloned <code>HCode</code> given the <code>HCodeAndMaps</code> which 13 cananian 1.1.2.1 * specifies its relationship to an <code>HCode</code> for which a 14 cananian 1.1.2.1 * <code>ExecMap</code> is known. 15 cananian 1.1.2.1 * 16 cananian 1.1.2.2 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 17 cananian 1.4 * @version $Id: ExecMapProxy.java,v 1.4 2004/02/08 01:52:57 cananian Exp $ 18 cananian 1.1.2.1 */ 19 cananian 1.3 public class ExecMapProxy<HCE extends HCodeElement> 20 cananian 1.3 extends MapProxy<HCE> implements ExecMap<HCE> { 21 cananian 1.3 private ExecMap<HCE> em; 22 cananian 1.1.2.1 /** Creates an <code>ExecMapProxy</code>. */ 23 cananian 1.3 public ExecMapProxy(HCodeAndMaps<HCE> hcam, ExecMap<HCE> em) { 24 cananian 1.1.2.1 super(hcam); 25 cananian 1.1.2.1 this.em = em; 26 cananian 1.1.2.1 } 27 cananian 1.3 public boolean execMap(HCE node) { 28 cananian 1.1.2.1 return em.execMap(n2o(node)); 29 cananian 1.1.2.1 } 30 cananian 1.3 public boolean execMap(HCodeEdge<HCE> edge) { 31 cananian 1.4 if (((HCodeEdge/*XXX:JAVAC*/)edge) instanceof Edge) 32 cananian 1.4 return em.execMap((HCodeEdge)n2o((Edge)((HCodeEdge/*XXX:JAVAC*/)edge))); 33 cananian 1.1.2.1 throw new Error("No consistent way to map edges between IRs."); 34 cananian 1.1.2.1 } 35 cananian 1.2 }