harpoon.IR.Quads
Class INSTANCEOF

java.lang.Object
  extended by harpoon.IR.Quads.Quad
      extended by harpoon.IR.Quads.INSTANCEOF
All Implemented Interfaces:
HCodeElement, CFGraphable<Quad,Edge>, UseDefable, Graph.Node<Quad,Edge>, Serializable, Cloneable, Comparable<Quad>

public class INSTANCEOF
extends Quad

INSTANCEOF objects represent an 'instanceof' evaluation. INSTANCEOF assigns a boolean value to a temporary after evaluating whether a certain temporary is an instance of a given class type.

In quad-with-try form ONLY: The src Temp may have the value null, in which case INSTANCEOF evaluates to false. In all other forms the src Temp should always contain a provably non-null value at runtime. (An explicit null-check may need to be added prior to the INSTANCEOF if the value cannot be proven non-null.)

Version:
$Id: INSTANCEOF.java,v 1.5 2002/04/11 04:00:34 cananian Exp $
Author:
C. Scott Ananian <cananian@alumni.princeton.edu>
See Also:
Serialized Form

Field Summary
protected  Temp dst
          The Temp in which to store the result of the test.
protected  HClass hclass
          The class in which src is tested for membership.
protected  Temp src
          The Temp to evaluate.
 
Fields inherited from class harpoon.IR.Quads.Quad
arrayFactory
 
Constructor Summary
INSTANCEOF(QuadFactory qf, HCodeElement source, Temp dst, Temp src, HClass hclass)
          Creates a INSTANCEOF representing a type check.
 
Method Summary
<T> T
accept(QuadValueVisitor<T> v)
           
 void accept(QuadVisitor v)
          Accept a visitor.
 Temp[] def()
          Returns the Temps defined by this quad.
 Temp dst()
          Returns the Temp in which to store the result of the instanceof test.
 HClass hclass()
          Returns the class in which src is tested for membership.
 int kind()
          Return an integer enumeration of the kind of this Quad.
 Quad rename(QuadFactory qqf, TempMap defMap, TempMap useMap)
          Create a new Quad identical to the receiver, but with all Temps renamed according to a mapping.
 Temp src()
          Returns the Temp to test.
 String toString()
          Returns a human-readable representation of this Quad.
 Temp[] use()
          Returns the Temps used by this quad.
 
Methods inherited from class harpoon.IR.Quads.Quad
addEdge, addEdges, addHandlers, clone, clone, clone, compareTo, defC, edgeC, edges, getFactory, getID, getLineNumber, getSourceFile, handlers, hashCode, isPred, isSucc, map, map, map, next, next, nextEdge, nextEdge, nextLength, pred, predC, prev, prev, prevEdge, prevEdge, prevLength, remove, removeHandlers, rename, replace, succ, succC, toLongString, transferHandlers, useC
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

dst

protected Temp dst
The Temp in which to store the result of the test.


src

protected Temp src
The Temp to evaluate.


hclass

protected final HClass hclass
The class in which src is tested for membership.

Constructor Detail

INSTANCEOF

public INSTANCEOF(QuadFactory qf,
                  HCodeElement source,
                  Temp dst,
                  Temp src,
                  HClass hclass)
Creates a INSTANCEOF representing a type check.

Parameters:
dst - the Temp in which to store the result of the test.
src - the Temp to test.
hclass - the class in which src is tested for membership.
Method Detail

dst

public Temp dst()
Returns the Temp in which to store the result of the instanceof test.


src

public Temp src()
Returns the Temp to test.


hclass

public HClass hclass()
Returns the class in which src is tested for membership.


use

public Temp[] use()
Returns the Temps used by this quad.

Specified by:
use in interface UseDefable
Overrides:
use in class Quad

def

public Temp[] def()
Returns the Temps defined by this quad.

Specified by:
def in interface UseDefable
Overrides:
def in class Quad

kind

public int kind()
Description copied from class: Quad
Return an integer enumeration of the kind of this Quad. The enumerated values are defined in QuadKind.

Specified by:
kind in class Quad

rename

public Quad rename(QuadFactory qqf,
                   TempMap defMap,
                   TempMap useMap)
Description copied from class: Quad
Create a new Quad identical to the receiver, but with all Temps renamed according to a mapping. The new Quad will have no edges.

The new Quad will come from the specified QuadFactory.

Specified by:
rename in class Quad

accept

public void accept(QuadVisitor v)
Description copied from class: Quad
Accept a visitor.

Specified by:
accept in class Quad

accept

public <T> T accept(QuadValueVisitor<T> v)
Specified by:
accept in class Quad

toString

public String toString()
Returns a human-readable representation of this Quad.

Specified by:
toString in class Quad