Otawa
0.10
|
#include <otawa/dfa/hai/WideningFixPoint.h>
Classes | |
class | FixPointState |
Public Types | |
typedef Listener::Problem | Problem |
typedef Problem::Domain | Domain |
Public Member Functions | |
FixPointState * | newState (void) |
WideningFixPoint (Listener &_list) | |
~WideningFixPoint () | |
void | init (HalfAbsInt< WideningFixPoint > *_ai) |
Is called by HalfAbsInt for fixpoint object initializeation. More... | |
void | fixPoint (BasicBlock *bb, bool &fixpoint, Domain &in, bool firstTime) const |
Main fixPoint function: is called by HalfAbsInt whenever the analysis reaches a loop header. More... | |
void | markEdge (PropList *e, const Domain &s) |
Marks a proplist (typically an edge) e with state s. More... | |
void | unmarkEdge (PropList *e) |
Unmark a proplist (typically an edge) More... | |
Domain * | getMark (PropList *e) |
Get the mark of a proplist (typically an edge) More... | |
void | updateEdge (Edge *edge, Domain &dom) |
const Domain & | bottom (void) const |
This function gets the bottom of the problem's lattice This is usually delegated to the Problem. More... | |
const Domain & | entry (void) const |
This function returns the entry state of the whole program to be analyzed. More... | |
void | lub (Domain &a, const Domain &b) const |
Performs operation: a = a lub b This is delegated to the Problem. More... | |
void | assign (Domain &a, const Domain &b) const |
Performs operation a = b This is delegated to the Problem. More... | |
bool | equals (const Domain &a, const Domain &b) const |
Tests a and b for equality. More... | |
void | update (Domain &out, const Domain &in, BasicBlock *bb) |
Is called whenever the analysis needs to get the Output state for a basic block, given its input state. More... | |
void | blockInterpreted (BasicBlock *bb, const Domain &in, const Domain &out, CFG *cur_cfg, elm::genstruct::Vector< Edge * > *callStack) const |
This listener is called whenever HalfAbsInt has processed a basic block. More... | |
void | fixPointReached (BasicBlock *bb) const |
This listener is called whenever a fixpoint is reached for a loop. More... | |
void | enterContext (Domain &dom, BasicBlock *bb, hai_context_t ctx) const |
This is called whenever we enter a loop. More... | |
void | leaveContext (Domain &dom, BasicBlock *bb, hai_context_t ctx) const |
This is called whenever we leave a loop. More... | |
Private Attributes | |
Problem & | prob |
Listener & | list |
HalfAbsInt< WideningFixPoint > * | ai |
Static Private Attributes | |
static Identifier< Domain * > | STATE |
typedef Problem::Domain otawa::dfa::hai::WideningFixPoint< Listener >::Domain |
typedef Listener::Problem otawa::dfa::hai::WideningFixPoint< Listener >::Problem |
|
inline |
|
inline |
|
inline |
|
inline |
This listener is called whenever HalfAbsInt has processed a basic block.
The listener must gather and store the information for the user. This is delegated to the Listener.
bb | The basic block |
in | The input state |
out | The output state |
cur_cfg | Current CFG. |
|
inline |
This function gets the bottom of the problem's lattice This is usually delegated to the Problem.
Referenced by otawa::dfa::hai::WideningFixPoint< Listener >::newState().
|
inline |
This is called whenever we enter a loop.
dom | State (optionnally to be modified according to the new context) |
bb | Loop header |
|
inline |
This function returns the entry state of the whole program to be analyzed.
This is usually delegated to the Problem.
|
inline |
void otawa::dfa::hai::WideningFixPoint< Listener >::fixPoint | ( | BasicBlock * | bb, |
bool & | fixpoint, | ||
Domain & | in, | ||
bool | firstTime | ||
) | const |
Main fixPoint function: is called by HalfAbsInt whenever the analysis reaches a loop header.
Its purpose is to detect if the fixpoint's reached, and compute the new loop entry state. It may store state information into the HalfAbsInt's FixPointState object.
bb | loop header basic block |
fixpoint | fixPoint() must store True here when the fixpoint is reached. |
in | fixPoint() must store here the new loop entry state. |
fistTime | is True if it's the first time we call fixPoint for this loop. |
References HAIW_TRACE, and otawa::dfa::hai::WideningFixPoint< Listener >::FixPointState::headerState.
|
inline |
This listener is called whenever a fixpoint is reached for a loop.
This is delegated to the Listener.
bb | The loop header. |
|
inline |
Get the mark of a proplist (typically an edge)
e | The proplist to getmark |
References otawa::stack::STATE.
|
inline |
Is called by HalfAbsInt for fixpoint object initializeation.
_ai | HalfAbsint object. |
|
inline |
This is called whenever we leave a loop.
dom | State (optionally to be modified according to the new context) |
bb | Loop header |
|
inline |
|
inline |
Marks a proplist (typically an edge) e with state s.
e | Proplist to mark |
s | State |
References otawa::stack::STATE.
|
inline |
|
inline |
Unmark a proplist (typically an edge)
e | Proplist to unmark |
References otawa::stack::STATE.
|
inline |
Is called whenever the analysis needs to get the Output state for a basic block, given its input state.
This is delegated to the Problem.
out | Output state |
in | Input state |
bb | Basic Block |
|
inline |
|
private |
|
private |
|
private |
|
staticprivate |