Class TBAA
java.lang.Object
EDU.purdue.cs.bloat.tbaa.TBAA
Performs Type-Based Alias Analysis (TBAA) to determine if one expression can
alias another. An expression may alias another expression if there is the
possibility that they refer to the same location in memory. BLOAT models
expressions that may reference memory locations with MemRefExprs.
There are two kinds of "access expressions" in Java: field accesses (FieldExpr
and StaticFieldExpr) and array references (ArrayRefExpr).
Access paths consist of one or more access expressions. For instance,
a.b[i].c is an access expression.
TBAA uses the FieldTypeDecl relation to determine whether or not two access paths may refer to the same memory location.
| AP1 | AP2 | FieldTypeDecl(AP1, Ap2) |
| p | p | true |
| p.f | q.g | (f = g) invalid input: '&'invalid input: '&' FieldTypeDecl(p, q) |
| p.f | q[i] | false |
| p[i] | q[j] | FieldTypeDecl(p, q) |
| p | q | TypeDecl(p, q) |
The TypeDecl(AP1, AP2) relation is defined as:
Subtypes(Type(AP1)) INTERSECT Subtypes(Type(AP2)) != EMPTY
The subtype relationships are determined by the ClassHierarchy.- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic booleancanAlias(EditorContext context, Expr a, Expr b) Returns true, if expression a can alias expression b.
-
Constructor Details
-
TBAA
public TBAA()
-
-
Method Details
-
canAlias
Returns true, if expression a can alias expression b.
-