Class TBAA

java.lang.Object
EDU.purdue.cs.bloat.tbaa.TBAA

public class TBAA extends Object
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 Details

    • TBAA

      public TBAA()
  • Method Details

    • canAlias

      public static boolean canAlias(EditorContext context, Expr a, Expr b)
      Returns true, if expression a can alias expression b.