Class ZeroXInstanceKeys

java.lang.Object
com.ibm.wala.ipa.callgraph.propagation.cfa.ZeroXInstanceKeys
All Implemented Interfaces:
InstanceKeyFactory

public class ZeroXInstanceKeys extends Object implements InstanceKeyFactory
Flexible class to create InstanceKeys depending on various policies ranging from class-based (i.e. 0-CFA) to allocation-site-based (0-1-CFA variants).
  • Field Details

    • JavaLangStringBuffer

      public static final TypeReference JavaLangStringBuffer
    • JavaLangStringBuilder

      public static final TypeReference JavaLangStringBuilder
    • JavaLangAbstractStringBuilder

      public static final TypeReference JavaLangAbstractStringBuilder
    • NONE

      public static final int NONE
      The NONE policy is not allocation-site based
      See Also:
    • ALLOCATIONS

      public static final int ALLOCATIONS
      An ALLOCATIONS - based policy distinguishes instances by allocation site. Otherwise, the policy distinguishes instances by type.
      See Also:
    • SMUSH_STRINGS

      public static final int SMUSH_STRINGS
      A policy variant where String and StringBuffers are NOT disambiguated according to allocation site.
      See Also:
    • SMUSH_THROWABLES

      public static final int SMUSH_THROWABLES
      A policy variant where Throwable instances are NOT disambiguated according to allocation site.
      See Also:
    • SMUSH_PRIMITIVE_HOLDERS

      public static final int SMUSH_PRIMITIVE_HOLDERS
      A policy variant where if a type T has only primitive instance fields, then instances of type T are NOT disambiguated by allocation site.
      See Also:
    • SMUSH_MANY

      public static final int SMUSH_MANY
      This variant counts the N, number of allocation sites of a particular type T in each method. If N > SMUSH_LIMIT, then these N allocation sites are NOT distinguished ... instead there is a single abstract allocation site for <N,T>

      Probably the best choice in many cases.

      See Also:
    • CONSTANT_SPECIFIC

      public static final int CONSTANT_SPECIFIC
      Should we use constant-specific keys?
      See Also:
    • smushMap

      protected final Map<CGNode,Set<IClass>> smushMap
      a Map from CGNode->Set<IClass> that should be smushed.
  • Constructor Details

  • Method Details