package escape
- Source
- package.scala
- Alphabetic
- By Inheritance
- escape
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- trait AbstractEscapeAnalysis extends FPCFAnalysis
An abstract escape analysis for a org.opalj.tac.common.DefinitionSiteLike or a org.opalj.br.analyses.VirtualFormalParameter.
An abstract escape analysis for a org.opalj.tac.common.DefinitionSiteLike or a org.opalj.br.analyses.VirtualFormalParameter. The entity and all other information required by the analyses such as the defSite, uses or the code correspond to this entity are given as AbstractEscapeAnalysisContext.
It is assumed that the tac code has a flat hierarchy, i.e. it is real three address code.
The control-flow is intended to be: Client calls determineEscape. This method extracts the information for the given entity and calls doDetermineEscape.
- trait AbstractEscapeAnalysisContext extends AnyRef
Provides the basic information corresponding to an entity to determine its escape information.
Provides the basic information corresponding to an entity to determine its escape information. Furthermore, it has helper functions to check whether the entity might be used in expressions.
- See also
- trait AbstractEscapeAnalysisState extends AnyRef
Stores the state associated with a specific AbstractEscapeAnalysisContext computed by an AbstractEscapeAnalysis.
Stores the state associated with a specific AbstractEscapeAnalysisContext computed by an AbstractEscapeAnalysis. This state contains a set of org.opalj.fpcf.EOptionPs from which the resulting escape state depends. In addition to this, it holds the current most restrictive escape state applicable.
- trait AbstractInterProceduralEscapeAnalysis extends AbstractEscapeAnalysis
Adds inter-procedural behavior to escape analyses.
Adds inter-procedural behavior to escape analyses. Uses the call graph associated with the Callees properties. It queries the escape state of the org.opalj.br.analyses.VirtualFormalParameter of the targets.
- trait ConfigurationBasedConstructorEscapeAnalysis extends AbstractEscapeAnalysis
In the configuration system it is possible to define escape information for the this local in the constructors of a specific class.
In the configuration system it is possible to define escape information for the this local in the constructors of a specific class. This analysis sets the org.opalj.br.analyses.VirtualFormalParameter of the this local to the defined value.
- trait ConstructorSensitiveEscapeAnalysis extends AbstractEscapeAnalysis
Special handling for constructor calls, as the receiver of an constructor is always an allocation site.
Special handling for constructor calls, as the receiver of an constructor is always an allocation site. The constructor of Object does not escape the self reference by definition. For other constructors, the inter-procedural chain will be processed until it reaches the Object constructor or escapes. Is this the case, leastRestrictiveProperty will be set to the lower bound of the current value and the calculated escape state.
For non constructor calls, org.opalj.br.fpcf.properties.AtMost (org.opalj.br.fpcf.properties.EscapeInCallee) of
e will be
returned whenever the receiver or a parameter is a use of defSite. - trait DeclaredMethodsContainer extends AnyRef
- trait DefaultEscapeAnalysis extends AbstractEscapeAnalysis
A safe default implementation of the AbstractEscapeAnalysis that uses fallback values.
- trait ExceptionAwareEscapeAnalysis extends AbstractEscapeAnalysis
Handling for exceptions, that are allocated within the current method.
Handling for exceptions, that are allocated within the current method. Only if the throw stmt leads to an abnormal return in the cfg, the escape state is decreased down to org.opalj.br.fpcf.properties.EscapeViaAbnormalReturn. Otherwise (the exception is caught) the escape state remains the same.
- class InterProceduralEscapeAnalysis extends DefaultEscapeAnalysis with AbstractInterProceduralEscapeAnalysis with ConstructorSensitiveEscapeAnalysis with ConfigurationBasedConstructorEscapeAnalysis with SimpleFieldAwareEscapeAnalysis with ExceptionAwareEscapeAnalysis
A flow-sensitive inter-procedural escape analysis.
- class InterProceduralEscapeAnalysisContext extends AbstractEscapeAnalysisContext with PropertyStoreContainer with IsMethodOverridableContainer with VirtualFormalParametersContainer with DeclaredMethodsContainer
- sealed trait InterProceduralEscapeAnalysisScheduler extends FPCFAnalysisScheduler
- class InterProceduralEscapeAnalysisState extends AbstractEscapeAnalysisState with ReturnValueUseSites
- trait IsMethodOverridableContainer extends AnyRef
- trait PropertyStoreContainer extends AnyRef
- class ReturnValueFreshnessAnalysis extends FPCFAnalysis
This analysis determines for a given method whether the return value is a fresh object that is created by the method (or its callees) and that does not escape other than org.opalj.br.fpcf.properties.EscapeViaReturn.
This analysis determines for a given method whether the return value is a fresh object that is created by the method (or its callees) and that does not escape other than org.opalj.br.fpcf.properties.EscapeViaReturn.
In other words, it aggregates the escape information for allocation-sites that are used as return value.
- sealed trait ReturnValueFreshnessAnalysisScheduler extends FPCFAnalysisScheduler
- class ReturnValueFreshnessState extends AnyRef
- trait ReturnValueUseSites extends AnyRef
Stores the parameters to which the analyses depends on, and whose functions return value is used any further.
- class SimpleEscapeAnalysis extends DefaultEscapeAnalysis with ConstructorSensitiveEscapeAnalysis with ConfigurationBasedConstructorEscapeAnalysis with SimpleFieldAwareEscapeAnalysis with ExceptionAwareEscapeAnalysis
A simple escape analysis that can handle org.opalj.tac.common.DefinitionSiteLikes and org.opalj.br.analyses.VirtualFormalParameters (the this parameter of a constructor).
A simple escape analysis that can handle org.opalj.tac.common.DefinitionSiteLikes and org.opalj.br.analyses.VirtualFormalParameters (the this parameter of a constructor). All other org.opalj.br.analyses.VirtualFormalParameters are marked as org.opalj.br.fpcf.properties.AtMost(org.opalj.br.fpcf.properties.NoEscape).
- class SimpleEscapeAnalysisContext extends AbstractEscapeAnalysisContext with PropertyStoreContainer with VirtualFormalParametersContainer with DeclaredMethodsContainer
- trait SimpleEscapeAnalysisScheduler extends FPCFAnalysisScheduler
- trait SimpleFieldAwareEscapeAnalysis extends AbstractEscapeAnalysis
Very simple handling for fields and arrays.
Very simple handling for fields and arrays. This analysis can detect global escapes via assignments to heap objects. Due to the lack of simple may-alias analysis, this analysis can not determine org.opalj.br.fpcf.properties.NoEscape states.
- type V = DUVar[ValueInformation]
- trait VirtualFormalParametersContainer extends AnyRef
Value Members
- object EagerInterProceduralEscapeAnalysis extends InterProceduralEscapeAnalysisScheduler with BasicFPCFEagerAnalysisScheduler
- object EagerReturnValueFreshnessAnalysis extends ReturnValueFreshnessAnalysisScheduler with BasicFPCFEagerAnalysisScheduler
- object EagerSimpleEscapeAnalysis extends SimpleEscapeAnalysisScheduler with BasicFPCFEagerAnalysisScheduler
A companion object used to start the analysis.
- object LazyInterProceduralEscapeAnalysis extends InterProceduralEscapeAnalysisScheduler with BasicFPCFLazyAnalysisScheduler
- object LazyReturnValueFreshnessAnalysis extends ReturnValueFreshnessAnalysisScheduler with BasicFPCFLazyAnalysisScheduler
- object LazySimpleEscapeAnalysis extends SimpleEscapeAnalysisScheduler with BasicFPCFLazyAnalysisScheduler