1 cananian 1.1.2.1 // MapProxy.java, created Wed Nov 15 20:41:05 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.HCodeElement; 8 cananian 1.1.2.1 import harpoon.IR.Quads.Edge; 9 cananian 1.1.2.1 import harpoon.IR.Quads.Quad; 10 cananian 1.1.2.1 import harpoon.Temp.Temp; 11 cananian 1.1.2.1 import harpoon.Temp.TempMap; 12 cananian 1.1.2.1 13 cananian 1.1.2.1 import java.util.Map; 14 cananian 1.1.2.1 /** 15 cananian 1.1.2.1 * <code>MapProxy</code> is an abstract class which contains code common 16 cananian 1.1.2.1 * to various types of map proxies. 17 cananian 1.1.2.1 * 18 cananian 1.1.2.1 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 19 cananian 1.3 * @version $Id: MapProxy.java,v 1.3 2002/09/02 19:23:26 cananian Exp $ 20 cananian 1.1.2.1 */ 21 cananian 1.3 class MapProxy<HCE extends HCodeElement> { 22 cananian 1.3 private final Map<HCE,HCE> n2oE; 23 cananian 1.1.2.1 private final TempMap n2oT; 24 cananian 1.1.2.1 /** Creates a <code>MapProxy</code> from an <code>HCodeAndMaps</code>. */ 25 cananian 1.3 MapProxy(HCodeAndMaps<HCE> hcam) { 26 cananian 1.1.2.1 this.n2oE = hcam.ancestorElementMap(); 27 cananian 1.1.2.1 this.n2oT = hcam.ancestorTempMap(); 28 cananian 1.1.2.1 } 29 cananian 1.3 HCE n2o(HCE hce) { 30 cananian 1.3 return n2oE.get(hce); 31 cananian 1.1.2.1 } 32 cananian 1.3 Temp n2o(Temp t) { return n2oT.tempMap(t); } 33 cananian 1.1.2.1 // utility for Quad forms. 34 cananian 1.1.2.1 Edge n2o(Edge e) { 35 cananian 1.3 Quad from = (Quad) n2o((HCE)e.from()); 36 cananian 1.1.2.1 int which_succ = e.which_succ(); 37 cananian 1.1.2.1 return from.nextEdge(which_succ); 38 cananian 1.1.2.1 } 39 cananian 1.2 }