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
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.
- Alphabetic
- By Inheritance
- GlobalEscape
- EscapeProperty
- EscapePropertyMetaInformation
- ExplicitlyNamedProperty
- OrderedProperty
- Property
- PropertyMetaInformation
- PropertyKind
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- final type Self = EscapeProperty
- Definition Classes
- EscapePropertyMetaInformation → PropertyMetaInformation
Abstract Value Members
- 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
andthat
.
- Definition Classes
- EscapeProperty
- See also
- abstract def propertyName: String
The name of the property.
The name of the property.
- Definition Classes
- ExplicitlyNamedProperty
- 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
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def asAggregatedProperty: VirtualMethodEscapeProperty
- Definition Classes
- EscapeProperty
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- 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
- 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
- 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
- EscapeProperty → OrderedProperty
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- 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
- PropertyMetaInformation → PropertyKind
- 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
- GlobalEscape → EscapeProperty
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def isOrderedProperty: Boolean
Returns
true
if this property inherits from OrderedProperty.Returns
true
if this property inherits from OrderedProperty.- Definition Classes
- Property
- 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
- GlobalEscape → EscapeProperty
- 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 uniquePropertyKey
.- Definition Classes
- EscapeProperty → PropertyMetaInformation
- 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
thatTests if this property describes equal or less restricted escapes than the given property.
. E.g., returnsThat is if the lifetime OR access bound of the property is greater or equal than
thattrue
if this property identifies values which GlobalEscape and the given property (that
) refers to values that NoEscape.- Definition Classes
- GlobalEscape → EscapeProperty
- See also
EscapeProperty for further details.
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated