Packages

trait GlobalEscape extends EscapeProperty

The object escapes globally, typically because it is assigned to a static variable or to a field of a heap object.

This property should be used if and only if the analysis is conclusive and could determine that the value definitively escapes globally. If a more advanced analysis – potentially run later – could identify an object as only EscapeViaParameter, EscapeInCallee or even NoEscape then the refineable property AtMost(NoEscape) (or another non final property) should be used.

Source
EscapeProperty.scala
Example:
  1. Given the following library code:

    public class X{
     public static Object o;
     public void m(boolean b) {
         Object o = new Object();        // ALLOCATION SITE
         if (b) X.o = o;
         return;
     }
    }

    An analysis is only expected to return EscapeViaStaticField for the object o instantiated in m, if the analyses knows that m is called and the parameter b is potentially true. If the above code is found in a library, it may very well be the case that certain parameter values/combinations will never be used in a certain setting and – therefore – o does not escape. However, from a pure technical point-of-view it may be useful/necessary to use GlobalEscape at some point to let depending computations know that no more changes will happen and therefore the dependencies can be deleted.

See also

EscapeProperty for further details.

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. GlobalEscape
  2. EscapeProperty
  3. EscapePropertyMetaInformation
  4. ExplicitlyNamedProperty
  5. OrderedProperty
  6. Property
  7. PropertyMetaInformation
  8. PropertyKind
  9. AnyRef
  10. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. final type Self = EscapeProperty

Abstract Value Members

  1. abstract def meet(that: EscapeProperty): EscapeProperty

    Computes the greatest lower bound of this and that property values.

    Computes the greatest lower bound of this and that property values.

    that

    the other escape property value.

    returns

    the most restrictive escape that is less or equal restrictive than this and that.

    Definition Classes
    EscapeProperty
    See also

    EscapeProperty.lessOrEqualRestrictive

  2. abstract def propertyName: String

    The name of the property.

    The name of the property.

    Definition Classes
    ExplicitlyNamedProperty
  3. abstract def propertyValueID: Int

    A unique id for every escape property.

    A unique id for every escape property. Used for table switches.

    Definition Classes
    EscapeProperty

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def asAggregatedProperty: VirtualMethodEscapeProperty
    Definition Classes
    EscapeProperty
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. final def asOrderedProperty: OrderedProperty

    Returns this if this property inherits from OrderedProperty.

    Returns this if this property inherits from OrderedProperty.

    Used, e.g., by the framework to support debugging analyses.

    Definition Classes
    Property
  7. def bottomness: Int

    Returns a value between zero and 9 which describes how close the value is to its absolute bottom.

    Returns a value between zero and 9 which describes how close the value is to its absolute bottom. Zero means the value is very close to the bottom and 9 means the value is far away from the bottom.

    The default value is "5".

    Definition Classes
    OrderedProperty
  8. def checkIsEqualOrBetterThan(e: Entity, other: Self): Unit

    Tests if this property is equal or better than the given one (better means that the value is above the given value in the underlying lattice.)

    Tests if this property is equal or better than the given one (better means that the value is above the given value in the underlying lattice.)

    Definition Classes
    EscapePropertyOrderedProperty
  9. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
  10. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  11. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  12. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  13. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  14. final def id: Int

    The id uniquely identifies this property's category.

    The id uniquely identifies this property's category. All property objects of the same kind have to use the same id which is guaranteed since they share the same PropertyKey

    Definition Classes
    PropertyMetaInformationPropertyKind
  15. def isBottom: Boolean

    Is this the bottom value of the lattice, i.e.

    Is this the bottom value of the lattice, i.e. GlobalEscape, EscapeViaHeapObject or EscapeViaStaticField.

    Definition Classes
    GlobalEscapeEscapeProperty
  16. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  17. final def isOrderedProperty: Boolean

    Returns true if this property inherits from OrderedProperty.

    Returns true if this property inherits from OrderedProperty.

    Definition Classes
    Property
  18. def isTop: Boolean

    Is this the top value of the lattice, i.e.

    Is this the top value of the lattice, i.e. NoEscape.

    Definition Classes
    GlobalEscapeEscapeProperty
  19. final def key: PropertyKey[EscapeProperty]

    The key uniquely identifies this property's category.

    The key uniquely identifies this property's category. All property objects of the same kind have to use the same key.

    In general each Property kind is expected to have a companion object that stores the unique PropertyKey.

    Definition Classes
    EscapePropertyPropertyMetaInformation
  20. def lessOrEqualRestrictive(that: EscapeProperty): Boolean

    Tests if this property describes equal or less restricted escapes than the given property. That is if the lifetime OR access bound of the property is greater or equal than that.

    Tests if this property describes equal or less restricted escapes than the given property. That is if the lifetime OR access bound of the property is greater or equal than that. E.g., returns true if this property identifies values which GlobalEscape and the given property (that) refers to values that NoEscape.

    Definition Classes
    GlobalEscapeEscapeProperty
    See also

    EscapeProperty for further details.

  21. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  22. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  23. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  24. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  25. def toString(): String
    Definition Classes
    AnyRef → Any
  26. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  27. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  28. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

Inherited from EscapeProperty

Inherited from OrderedProperty

Inherited from Property

Inherited from PropertyKind

Inherited from AnyRef

Inherited from Any

Ungrouped