1 cananian 1.1.2.1 // PPTR.java, created Wed Jan 20 21:47:52 1999 by cananian 2 cananian 1.1.2.1 // Copyright (C) 1999 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.LowQuad; 5 cananian 1.1.2.1 6 cananian 1.1.2.1 import harpoon.ClassFile.HCodeElement; 7 cananian 1.1.2.1 import harpoon.Temp.Temp; 8 cananian 1.1.2.1 import harpoon.Util.Util; 9 cananian 1.1.2.1 10 cananian 1.1.2.1 /** 11 cananian 1.1.2.1 * <code>PPTR</code> is an abstract superclass of the <code>LowQuad</code>s 12 cananian 1.1.2.1 * that convert object references into <code>POINTER</code> types. We 13 cananian 1.1.2.2 * allow arithmetic only on <code>POINTER</code>s. 14 cananian 1.1.2.1 * 15 cananian 1.1.2.1 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 16 cananian 1.4 * @version $Id: PPTR.java,v 1.4 2002/04/10 03:04:57 cananian Exp $ 17 cananian 1.1.2.1 */ 18 cananian 1.1.2.1 public abstract class PPTR extends LowQuad { 19 cananian 1.1.2.1 /** The <code>Temp</code> in which to store the computed 20 cananian 1.1.2.1 * <code>POINTER</code> value. 21 cananian 1.1.2.1 */ 22 cananian 1.1.2.1 protected final Temp dst; 23 cananian 1.1.2.2 /** The <code>Temp</code> holding the object reference to 24 cananian 1.1.2.2 * convert. */ 25 cananian 1.1.2.2 protected final Temp objectref; 26 cananian 1.1.2.1 27 cananian 1.1.2.1 /** Creates a <code>PPTR</code>. */ 28 cananian 1.1.2.2 public PPTR(LowQuadFactory qf, HCodeElement source, 29 cananian 1.1.2.2 final Temp dst, final Temp objectref) { 30 cananian 1.1.2.1 super(qf, source); 31 cananian 1.1.2.1 this.dst = dst; 32 cananian 1.1.2.2 this.objectref = objectref; 33 cananian 1.3.2.1 assert dst != null && objectref != null; 34 cananian 1.1.2.1 } 35 cananian 1.1.2.1 // ACCESSOR METHODS: 36 cananian 1.1.2.1 /** Returns the <code>Temp</code> in which to store the computed 37 cananian 1.1.2.1 * <code>POINTER</code> value. */ 38 cananian 1.1.2.1 public Temp dst() { return dst; } 39 cananian 1.1.2.2 /** Returns the <code>Temp</code> containing the object reference 40 cananian 1.1.2.2 * to convert into a <code>POINTER</code>. */ 41 cananian 1.1.2.2 public Temp objectref() { return objectref; } 42 cananian 1.1.2.1 43 cananian 1.1.2.2 public Temp[] use() { return new Temp[] { objectref }; } 44 cananian 1.1.2.1 public Temp[] def() { return new Temp[] { dst }; } 45 cananian 1.2 }