Class ArrayElement

java.lang.Object
qilin.core.pag.ArrayElement
All Implemented Interfaces:
SparkField

public class ArrayElement extends Object implements SparkField
A pseudo-field standing in for "any element of any array", used to model array stores/loads field-insensitively: PAG holds exactly one ArrayElement instance (see PAG.getArrayElement()), shared across every array type in the program. Because a single, parameterless ArrayElement represents cells of int[], String[], Foo[], ... all merged together, there is no single real element type it could report -- getType() deliberately returns JavaTypes.OBJECT rather than picking one array's element type arbitrarily. This is an intentional precision/scalability trade-off (the same one Spark made), not information lost by accident; a genuinely array-type-sensitive analysis would need per-(allocation-site-or-type) elements instead of this shared singleton.
Author:
Ondrej Lhotak
  • Constructor Details

    • ArrayElement

      public ArrayElement()
  • Method Details

    • getNumber

      public final int getNumber()
    • setNumber

      public final void setNumber(int number)
    • getType

      public Type getType()
      Specified by:
      getType in interface SparkField