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.
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
- All
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
thisandthat.
- Definition Classes
- EscapeProperty
- See also
-
abstract
def
propertyName: String
- 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
- Definition Classes
- Property
-
def
checkIsEqualOrBetterThan(e: Entity, other: Self): Unit
- Definition Classes
- EscapeProperty → OrderedProperty
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
id: Int
- 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
- 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]
- 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 thanthatTests 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 thanthattrueif 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()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )