Class 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 Detail

      • 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:
        Constant Field Values
      • ALLOCATIONS

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

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

        public static final int SMUSH_THROWABLES
        A policy variant where Throwable instances are NOT disambiguated according to allocation site.
        See Also:
        Constant Field Values
      • 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:
        Constant Field Values
      • 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 Probably the best choice in many cases.
        See Also:
        Constant Field Values
      • CONSTANT_SPECIFIC

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

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