package opalj
- Alphabetic
- By Inheritance
- opalj
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Package Members
- package fpcf
The fixpoint computations framework (
fpcf) is a general framework to perform fixpoint computations of properties ordered by a lattice.The fixpoint computations framework (
fpcf) is a general framework to perform fixpoint computations of properties ordered by a lattice. The framework in particular supports the development of static analyses.In this case, the fixpoint computations/static analyses are generally operating on the code and need to be executed until the computations have reached their (implicit) fixpoint. The fixpoint framework explicitly supports resolving cyclic dependencies/computations. A prime use case of the fixpoint framework are all those analyses that may interact with the results of other analyses.
For example, an analysis that analyzes all field write accesses to determine if we can refine a field's type (for the purpose of the analysis) can (reuse) the information about the return types of methods, which however may depend on the refined field types.
The framework is generic enough to facilitate the implementation of anytime algorithms.
- Note
This framework assumes that all data-structures (e.g., dependee lists and properties) that are passed to the framework are effectively immutable! (Effectively immutable means that a data structure is never updated after it was passed to the framework.)
,The dependency relation is as follows: “A depends on B”
,===“A is the depender, B is the dependee”.===“B is depended on by A”The very core of the framework is described in: Lattice Based Modularization of Static Analyses
Type Members
Value Members
- final val BaseConfig: Config
- final val NotRequired: (Any) => Nothing
- final val WEBPAGE: String("https://www.opal-project.de")
- def check(condition: Boolean, message: => String): Unit
- def check(condition: Boolean): Unit
- final def i2lBitMask(value: Int): Long
- Annotations
- @inline()
- final def notRequired(): Nothing
- def partitionByType[T <: AnyRef, X <: AnyRef](data: ArraySeq[T], clazz: Class[X]): (ArraySeq[X], ArraySeq[T])