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,
jdk.vm.ci.code.BytecodePosition context,
AnalysisField field)
Returns the filter field flow corresponding to an unsafe accessed field.
|
FieldTypeFlow |
getInstanceFieldFlow(PointsToAnalysis bb,
TypeFlow<?> objectFlow,
jdk.vm.ci.code.BytecodePosition context,
AnalysisField field,
boolean isStore) |
List<AnalysisObject> |
getReferencedObjects()
Returns the list of referenced objects, i.e., field objects or array elements discovered by
the static analysis.
|
protected void |
mergeInstanceFieldFlow(PointsToAnalysis bb,
FieldTypeStore fieldTypeStore) |
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.
|
compareTo, equals, getArrayElementsTypeStore, getId, getInstanceFieldFlow, getTypeId, getUnsafeWriteSinkFrozenFilterFlow, hashCode, isAllocationContextSensitiveObject, isConstantContextSensitiveObject, isContextInsensitiveObject, isContextSensitiveObject, 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 void mergeInstanceFieldFlow(PointsToAnalysis bb, FieldTypeStore fieldTypeStore)
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, jdk.vm.ci.code.BytecodePosition context, AnalysisField field)
getInstanceFieldFilterFlow in class AnalysisObjectpublic FieldTypeFlow getInstanceFieldFlow(PointsToAnalysis bb, TypeFlow<?> objectFlow, jdk.vm.ci.code.BytecodePosition context, AnalysisField field, boolean isStore)
getInstanceFieldFlow in class AnalysisObjectprotected List<AnalysisObject> getAllObjectsMergedWith()
public List<AnalysisObject> getReferencedObjects()