public class TypedReferenceValue extends ReferenceValue
ReferenceValue
represents a partially evaluated reference value. It has a type and a
flag that indicates whether the value could be null
. If the type is null
, the value is null
.Modifier and Type | Field and Description |
---|---|
static boolean |
ALLOW_INCOMPLETE_CLASS_HIERARCHY
If true, do not throw an
IncompleteClassHierarchyException when one would occur. |
static boolean |
INCOMPLETE_CLASS_HIERARCHY
Indicates whether there were occurrences of
IncompleteClassHierarchyException . |
protected boolean |
mayBeExtension |
protected boolean |
mayBeNull |
protected Clazz |
referencedClass |
protected java.lang.String |
type |
static boolean |
WARN_INCOMPLETE_CLASS_HIERARCHY
If true, print warnings for occurrences of
IncompleteClassHierarchyException when
ALLOW_INCOMPLETE_CLASS_HIERARCHY is enabled. |
ALWAYS, MAYBE, NEVER, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INSTRUCTION_OFFSET, TYPE_INTEGER, TYPE_LONG, TYPE_REFERENCE, TYPE_TOP, TYPE_UNKNOWN
Constructor and Description |
---|
TypedReferenceValue(java.lang.String type,
Clazz referencedClass,
boolean mayBeExtension,
boolean mayBeNull)
Creates a new TypedReferenceValue.
|
Modifier and Type | Method and Description |
---|---|
static boolean |
allowsIncompleteClassHierarchy()
Returns whether incomplete class hierarchies are allowed.
|
void |
arrayStore(IntegerValue indexValue,
Value value)
Stores the given value at the given index in the given array, assuming this type is an array.
|
ReferenceValue |
cast(java.lang.String type,
Clazz referencedClass,
ValueFactory valueFactory,
boolean alwaysCast)
Returns this ReferenceValue, cast to the given type.
|
DoubleValue |
doubleArrayLoad(IntegerValue indexValue,
ValueFactory valueFactory)
Returns the value of the array at the given index, assuming this type is an double array.
|
int |
equal(ReferenceValue other)
Returns whether this ReferenceValue is equal to the given other ReferenceValue.
|
int |
equal(TypedReferenceValue other)
Returns whether this ReferenceValue is equal to the given other TypedReferenceValue.
|
boolean |
equals(java.lang.Object object) |
FloatValue |
floatArrayLoad(IntegerValue indexValue,
ValueFactory valueFactory)
Returns the value of the array at the given index, assuming this type is an float array.
|
ReferenceValue |
generalize(ReferenceValue other)
Returns the generalization of this ReferenceValue and the given other ReferenceValue.
|
ReferenceValue |
generalize(TypedReferenceValue other)
Returns the generalization of this ReferenceValue and the given other TypedReferenceValue.
|
ReferenceValue |
generalizeMayBeNull(boolean mayBeNull) |
Clazz |
getReferencedClass()
Returns the class that is referenced by the type.
|
java.lang.String |
getType()
Returns the type.
|
int |
hashCode() |
int |
instanceOf(java.lang.String otherType,
Clazz otherReferencedClass)
Returns whether the type is an instance of the given type.
|
IntegerValue |
integerArrayLoad(IntegerValue indexValue,
ValueFactory valueFactory)
Returns the value of the array at the given index, assuming this type is an integer array.
|
java.lang.String |
internalType()
Returns the internal type of this Value.
|
int |
isNull()
Returns whether this ReferenceValue is
null . |
boolean |
isParticular()
Returns whether this Value represents a single particular (known) value.
|
LongValue |
longArrayLoad(IntegerValue indexValue,
ValueFactory valueFactory)
Returns the value of the array at the given index, assuming this type is an long array.
|
boolean |
mayBeExtension()
Returns whether the actual type of this ReferenceValue may be an extension of its type.
|
ReferenceValue |
referenceArrayLoad(IntegerValue indexValue,
ValueFactory valueFactory)
Returns the value of the array at the given index, assuming this type is a reference array.
|
java.lang.String |
toString() |
arrayLength, computationalType, equal, equal, equal, equal, equal, equal, equal, equal, generalize, generalize, generalize, generalize, generalize, generalize, generalize, generalize, generalize, getValue, isNotNull, notEqual, referenceValue, value
category1Value, isCategory2
category2Value, copyIfMutable, doubleValue, floatValue, instructionOffsetValue, integerValue, isSpecific, longValue
public static boolean INCOMPLETE_CLASS_HIERARCHY
IncompleteClassHierarchyException
.public static boolean ALLOW_INCOMPLETE_CLASS_HIERARCHY
IncompleteClassHierarchyException
when one would occur.public static boolean WARN_INCOMPLETE_CLASS_HIERARCHY
IncompleteClassHierarchyException
when
ALLOW_INCOMPLETE_CLASS_HIERARCHY is enabled.protected final java.lang.String type
protected final Clazz referencedClass
protected final boolean mayBeExtension
protected final boolean mayBeNull
public TypedReferenceValue(java.lang.String type, Clazz referencedClass, boolean mayBeExtension, boolean mayBeNull)
public java.lang.String getType()
ReferenceValue
getType
in class ReferenceValue
public Clazz getReferencedClass()
ReferenceValue
getReferencedClass
in class ReferenceValue
public boolean mayBeExtension()
ReferenceValue
mayBeExtension
in class ReferenceValue
public int isNull()
ReferenceValue
null
.isNull
in class ReferenceValue
NEVER
, MAYBE
, or ALWAYS
.public int instanceOf(java.lang.String otherType, Clazz otherReferencedClass)
ReferenceValue
instanceOf
in class ReferenceValue
public ReferenceValue cast(java.lang.String type, Clazz referencedClass, ValueFactory valueFactory, boolean alwaysCast)
ReferenceValue
cast
in class ReferenceValue
public ReferenceValue generalizeMayBeNull(boolean mayBeNull)
public ReferenceValue referenceArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)
ReferenceValue
referenceArrayLoad
in class ReferenceValue
public ReferenceValue generalize(ReferenceValue other)
ReferenceValue
generalize
in class ReferenceValue
public int equal(ReferenceValue other)
ReferenceValue
equal
in class ReferenceValue
NEVER
, MAYBE
, or ALWAYS
.public ReferenceValue generalize(TypedReferenceValue other)
ReferenceValue
generalize
in class ReferenceValue
public static boolean allowsIncompleteClassHierarchy()
public DoubleValue doubleArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)
ReferenceValue
doubleArrayLoad
in class ReferenceValue
public IntegerValue integerArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)
ReferenceValue
integerArrayLoad
in class ReferenceValue
public LongValue longArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)
ReferenceValue
longArrayLoad
in class ReferenceValue
public FloatValue floatArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)
ReferenceValue
floatArrayLoad
in class ReferenceValue
public void arrayStore(IntegerValue indexValue, Value value)
ReferenceValue
arrayStore
in class ReferenceValue
public int equal(TypedReferenceValue other)
ReferenceValue
equal
in class ReferenceValue
NEVER
, MAYBE
, or ALWAYS
.public boolean isParticular()
Value
isParticular
in class Value
public final java.lang.String internalType()
Value
internalType
in class Value
TypeConstants.BOOLEAN
, TypeConstants.BYTE
,
TypeConstants.CHAR
, TypeConstants.SHORT
, TypeConstants.INT
, TypeConstants.LONG
, TypeConstants.FLOAT
,
TypeConstants.DOUBLE
, TypeConstants.CLASS_START ... TypeConstants.CLASS_END
, or an array type containing any of these types (always as String).public boolean equals(java.lang.Object object)
equals
in class ReferenceValue
public int hashCode()
hashCode
in class ReferenceValue
public java.lang.String toString()
toString
in class ReferenceValue