public class AnalysisObject extends Object implements Comparable<AnalysisObject>
Modifier and Type | Class and Description |
---|---|
protected static class |
AnalysisObject.AnalysisObjectKind |
Modifier and Type | Field and Description |
---|---|
protected ArrayElementsTypeStore |
arrayElementsTypeStore
The array elements flow for this object.
|
static AnalysisObject[] |
EMPTY_ARRAY |
protected long |
id
The id of an analysis object.
|
protected AtomicReferenceArray<FieldTypeStore> |
instanceFieldsTypeStore
The instance field flows for this object.
|
protected AnalysisObject.AnalysisObjectKind |
kind |
protected boolean |
merged
Is this a context sensitive object that was merged with a context insensitive object, or a
context insensitive object that has merged some context sensitive objects?
|
static Comparator<AnalysisObject> |
objectsTypeComparator |
protected AnalysisType |
type
The concrete type of an analysis object.
|
Modifier | Constructor and Description |
---|---|
|
AnalysisObject(AnalysisUniverse universe,
AnalysisType type)
By default an analysis object is context insensitive.
|
protected |
AnalysisObject(AnalysisUniverse universe,
AnalysisType type,
AnalysisObject.AnalysisObjectKind kind)
Constructor allowing the subclasses to specify the type of context sensitivity they
implement.
|
Modifier and Type | Method and Description |
---|---|
int |
compareTo(AnalysisObject other) |
boolean |
equals(Object other) |
ArrayElementsTypeFlow |
getArrayElementsFlow(BigBang bb,
boolean isStore)
Returns the array elements type flow corresponding to an analysis object of array type.
|
ArrayElementsTypeStore |
getArrayElementsTypeStore() |
long |
getId() |
FieldFilterTypeFlow |
getInstanceFieldFilterFlow(BigBang bb,
AnalysisMethod context,
AnalysisField field)
Returns the filter field flow corresponding to an unsafe accessed filed.
|
FieldTypeFlow |
getInstanceFieldFlow(BigBang bb,
AnalysisField field,
boolean isStore)
Returns the instance field flow corresponding to a filed of the object's type.
|
FieldTypeFlow |
getInstanceFieldFlow(BigBang bb,
AnalysisMethod context,
AnalysisField field,
boolean isStore) |
int |
getTypeId() |
UnsafeWriteSinkTypeFlow |
getUnsafeWriteSinkFrozenFilterFlow(BigBang bb,
AnalysisMethod context,
AnalysisField field) |
int |
hashCode() |
boolean |
isAllocationContextSensitiveObject() |
boolean |
isConstantContextSensitiveObject() |
boolean |
isContextInsensitiveObject() |
boolean |
isContextSensitiveObject() |
boolean |
isEmptyObjectArrayConstant(BigBang bb)
Check if a constant object wraps the empty array constant, e.g.
|
static boolean |
isEmptyObjectArrayConstant(BigBang bb,
jdk.vm.ci.meta.JavaConstant constant)
Check if a constant object wraps the empty array constant, i.e.
|
boolean |
isObjectArray()
Check if an analysis object is an object array.
|
boolean |
isPrimitiveArray()
Check if an analysis object is a primitive array.
|
void |
noteMerge(BigBang bb)
Note that this object has been merged.
|
String |
prefix() |
String |
toString() |
AnalysisType |
type() |
public static final Comparator<AnalysisObject> objectsTypeComparator
public static final AnalysisObject[] EMPTY_ARRAY
protected final long id
protected final AnalysisType type
protected final AnalysisObject.AnalysisObjectKind kind
protected volatile boolean merged
protected final ArrayElementsTypeStore arrayElementsTypeStore
protected volatile AtomicReferenceArray<FieldTypeStore> instanceFieldsTypeStore
public AnalysisObject(AnalysisUniverse universe, AnalysisType type)
protected AnalysisObject(AnalysisUniverse universe, AnalysisType type, AnalysisObject.AnalysisObjectKind kind)
public int getTypeId()
public AnalysisType type()
public long getId()
public void noteMerge(BigBang bb)
public String prefix()
public final boolean isContextInsensitiveObject()
public final boolean isAllocationContextSensitiveObject()
public final boolean isConstantContextSensitiveObject()
public final boolean isContextSensitiveObject()
public ArrayElementsTypeStore getArrayElementsTypeStore()
public ArrayElementsTypeFlow getArrayElementsFlow(BigBang bb, boolean isStore)
public FieldFilterTypeFlow getInstanceFieldFilterFlow(BigBang bb, AnalysisMethod context, AnalysisField field)
public UnsafeWriteSinkTypeFlow getUnsafeWriteSinkFrozenFilterFlow(BigBang bb, AnalysisMethod context, AnalysisField field)
public FieldTypeFlow getInstanceFieldFlow(BigBang bb, AnalysisField field, boolean isStore)
public FieldTypeFlow getInstanceFieldFlow(BigBang bb, AnalysisMethod context, AnalysisField field, boolean isStore)
public boolean isEmptyObjectArrayConstant(BigBang bb)
static final Object[]
EMPTY_ELEMENTDATA = {}
for ArrayList;public boolean isPrimitiveArray()
public boolean isObjectArray()
public static boolean isEmptyObjectArrayConstant(BigBang bb, jdk.vm.ci.meta.JavaConstant constant)
static final Object[]
EMPTY_ELEMENTDATA = {}
;public int compareTo(AnalysisObject other)
compareTo
in interface Comparable<AnalysisObject>