edu.umd.cs.findbugs.ba.type
Class TypeFrame

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.Frame<org.apache.bcel.generic.Type>
      extended by edu.umd.cs.findbugs.ba.type.TypeFrame

public class TypeFrame
extends Frame<org.apache.bcel.generic.Type>

A specialization of Frame for determining the types of values in the Java stack frame (locals and operand stack).

Author:
David Hovemeyer
See Also:
Frame, TypeAnalysis

Constructor Summary
TypeFrame(int numLocals)
          Constructor.
 
Method Summary
 void clearExactSet()
          Clear the exact type set.
 void clearInstanceOfValueNumberAndType()
          Reset information for modeling of instanceof branches.
 void copyFrom(Frame<org.apache.bcel.generic.Type> other_)
          Make this Frame exactly the same as the one given as a parameter.
static org.apache.bcel.generic.Type getBottomType()
          Get the single instance of the "Bottom" type.
static org.apache.bcel.generic.Type getDoubleExtraType()
          Get the single instance of the "DoubleExtra" type.
 org.apache.bcel.generic.Type getInstanceOfType()
          Get the instanceof Type.
 ValueNumber getInstanceOfValueNumber()
          Get the value number of the value checked by the instanceof branch.
static org.apache.bcel.generic.Type getLongExtraType()
          Get the single instance of the "LongExtra" type.
static org.apache.bcel.generic.Type getNullType()
          Get the single instance of the "Null" type.
static org.apache.bcel.generic.Type getTopType()
          Get the single instance of the "Top" type.
 boolean isExact(int slot)
          Get whether or not a type in a given slot is exact.
 void setExact(int slot, boolean isExact)
          Set whether or not a type in a given slot is exact.
 void setInstanceOfValueNumberAndType(ValueNumber instanceOfValueNumber, org.apache.bcel.generic.Type instanceOfType)
          Set information for modeling of instanceof branches.
 void setTop()
          Make this frame the special "TOP" value.
protected  java.lang.String valueToString(org.apache.bcel.generic.Type value)
          Subclasses may override this if they want to do something special to convert Value objects to Strings.
 
Methods inherited from class edu.umd.cs.findbugs.ba.Frame
clearStack, getArgument, getArgumentSet, getInstance, getInstanceSlot, getInstanceStackLocation, getNumArguments, getNumArgumentsIncludingObjectInstance, getNumLocals, getNumSlots, getOperand, getStackDepth, getStackValue, getTopStackWords, getTopValue, getValue, isBottom, isTop, isValid, popValue, pushValue, sameAs, setBottom, setValid, setValue, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TypeFrame

public TypeFrame(int numLocals)
Constructor.

Method Detail

setExact

public void setExact(int slot,
                     boolean isExact)
Set whether or not a type in a given slot is exact.

Parameters:
slot - the slot
isExact - true if the slot contains an exact type, false if just an upper bound

isExact

public boolean isExact(int slot)
Get whether or not a type in a given slot is exact.

Parameters:
slot - the slot
Returns:
true if the slot contains an exact type, false if just an upper bound

clearExactSet

public void clearExactSet()
Clear the exact type set. The result is that all slots will be assumed not to contain an exact type.


setTop

public void setTop()
Description copied from class: Frame
Make this frame the special "TOP" value. Such Frames are the identity element of the meet operation.

Overrides:
setTop in class Frame<org.apache.bcel.generic.Type>

copyFrom

public void copyFrom(Frame<org.apache.bcel.generic.Type> other_)
Description copied from class: Frame
Make this Frame exactly the same as the one given as a parameter.

Overrides:
copyFrom in class Frame<org.apache.bcel.generic.Type>
Parameters:
other_ - the Frame to make this object the same as

clearInstanceOfValueNumberAndType

public void clearInstanceOfValueNumberAndType()
Reset information for modeling of instanceof branches.


setInstanceOfValueNumberAndType

public void setInstanceOfValueNumberAndType(ValueNumber instanceOfValueNumber,
                                            org.apache.bcel.generic.Type instanceOfType)
Set information for modeling of instanceof branches.

Parameters:
instanceOfValueNumber - ValueNumber of checked instance
instanceOfType - instanceof Type

getInstanceOfValueNumber

public ValueNumber getInstanceOfValueNumber()
Get the value number of the value checked by the instanceof branch.

Returns:
the ValueNumber of the value checked by the instanceof branch

getInstanceOfType

public org.apache.bcel.generic.Type getInstanceOfType()
Get the instanceof Type.

Returns:
the instanceof Type

valueToString

protected java.lang.String valueToString(org.apache.bcel.generic.Type value)
Description copied from class: Frame
Subclasses may override this if they want to do something special to convert Value objects to Strings. By default, we just call toString() on the values.

Overrides:
valueToString in class Frame<org.apache.bcel.generic.Type>

getTopType

public static org.apache.bcel.generic.Type getTopType()
Get the single instance of the "Top" type.


getBottomType

public static org.apache.bcel.generic.Type getBottomType()
Get the single instance of the "Bottom" type.


getLongExtraType

public static org.apache.bcel.generic.Type getLongExtraType()
Get the single instance of the "LongExtra" type.


getDoubleExtraType

public static org.apache.bcel.generic.Type getDoubleExtraType()
Get the single instance of the "DoubleExtra" type.


getNullType

public static org.apache.bcel.generic.Type getNullType()
Get the single instance of the "Null" type.