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     }