public class ContextSensitiveAnalysisObject extends AnalysisObject
AnalysisObject.AnalysisObjectKindarrayElementsTypeStore, EMPTY_ARRAY, id, instanceFieldsTypeStore, kind, merged, objectsTypeComparator, type| Constructor and Description |
|---|
ContextSensitiveAnalysisObject(AnalysisUniverse universe,
AnalysisType type,
AnalysisObject.AnalysisObjectKind kind) |
| Modifier and Type | Method and Description |
|---|---|
protected List<AnalysisObject> |
getAllObjectsMergedWith()
This returns all the objects this object was ever merged with.
|
ArrayElementsTypeFlow |
getArrayElementsFlow(PointsToAnalysis bb,
boolean isStore)
Returns the array elements type flow corresponding to an analysis object of array type.
|
FieldFilterTypeFlow |
getInstanceFieldFilterFlow(PointsToAnalysis bb,
TypeFlow<?> objectFlow,
BytecodePosition context,
AnalysisField field)
Returns the filter field flow corresponding to an unsafe accessed field.
|
FieldTypeFlow |
getInstanceFieldFlow(PointsToAnalysis bb,
TypeFlow<?> objectFlow,
BytecodePosition context,
AnalysisField field,
boolean isStore) |
protected void |
linkFieldFlows(PointsToAnalysis bb,
AnalysisField field,
FieldTypeStore fieldStore) |
protected static void |
mergeInstanceFieldFlow(PointsToAnalysis bb,
FieldTypeStore fieldTypeStore,
AnalysisObject object)
Merge the read and write flows of the fieldTypeStore with those of the context insensitive
object.
|
void |
mergeInstanceFieldsFlows(PointsToAnalysis bb,
AnalysisObject object) |
void |
noteMerge(PointsToAnalysis bb)
The object has been in contact with an context insensitive object in an union operation.
|
asConstant, compareTo, equals, getArrayElementsTypeStore, getId, getInstanceFieldFlow, getTypeId, getUnsafeWriteSinkFrozenFilterFlow, hashCode, isAllocationContextSensitiveObject, isContextInsensitiveObject, isEmptyObjectArrayConstant, isEmptyObjectArrayConstant, isObjectArray, isPrimitiveArray, prefix, toString, typepublic ContextSensitiveAnalysisObject(AnalysisUniverse universe, AnalysisType type, AnalysisObject.AnalysisObjectKind kind)
public void noteMerge(PointsToAnalysis bb)
noteMerge in class AnalysisObjectpublic void mergeInstanceFieldsFlows(PointsToAnalysis bb, AnalysisObject object)
protected static void mergeInstanceFieldFlow(PointsToAnalysis bb, FieldTypeStore fieldTypeStore, AnalysisObject object)
public ArrayElementsTypeFlow getArrayElementsFlow(PointsToAnalysis bb, boolean isStore)
AnalysisObjectgetArrayElementsFlow in class AnalysisObjectpublic FieldFilterTypeFlow getInstanceFieldFilterFlow(PointsToAnalysis bb, TypeFlow<?> objectFlow, BytecodePosition context, AnalysisField field)
getInstanceFieldFilterFlow in class AnalysisObjectpublic FieldTypeFlow getInstanceFieldFlow(PointsToAnalysis bb, TypeFlow<?> objectFlow, BytecodePosition context, AnalysisField field, boolean isStore)
getInstanceFieldFlow in class AnalysisObjectprotected void linkFieldFlows(PointsToAnalysis bb, AnalysisField field, FieldTypeStore fieldStore)
linkFieldFlows in class AnalysisObjectprotected List<AnalysisObject> getAllObjectsMergedWith()