| 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) && 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: ClassHierarchy See Also: MemRefExpr See Also: FieldExpr See Also: StaticFieldExpr See Also: ArrayRefExpr |