Records the call stack Care must be taken when using this on recursive code; it will need the domain to be capable of limiting the recursion. More...
#include <call_stack_history.h>
Records the call stack Care must be taken when using this on recursive code; it will need the domain to be capable of limiting the recursion.
Definition at line 20 of file call_stack_history.h.
Definition at line 24 of file call_stack_history.h.
Definition at line 53 of file call_stack_history.h.
Definition at line 63 of file call_stack_history.h.
Definition at line 70 of file call_stack_history.h.
Definition at line 77 of file call_stack_history.h.
The current location in the history, used to compute the transformer POSTCONDITION(return value is dereferenceable)
Implements ai_history_baset.
Definition at line 92 of file call_stack_history.h.
Definition at line 48 of file call_stack_history.h.
The order for history_sett.
Implements ai_history_baset.
Definition at line 144 of file call_stack_history.cpp.
History objects should be comparable.
Implements ai_history_baset.
Definition at line 152 of file call_stack_history.cpp.
Reimplemented from ai_history_baset.
Definition at line 160 of file call_stack_history.cpp.
Domains with a substantial height may need to widen when merging this method allows the history to provide a hint on when to do this The suggested use of this is for domains merge operation to check this and then widen in a domain specific way.
However it could be used in other ways (such as the transformer). The key idea is that the history tracks / should know when to widen and when to continue.
Reimplemented from ai_history_baset.
Definition at line 100 of file call_stack_history.h.
Step creates a new history by advancing the current one to location "to" It is given the set of all other histories that have reached this point.
In the case of function call return it is also given the full history of the caller. This allows function-local histories as they can "pick up" the state from before the call when computing the return edge.
PRECONDITION(to.id_dereferenceable()); PRECONDITION(to in goto_program.get_successors(current_location()) || current_location()->is_function_call() || current_location()->is_end_function()); PRECONDITION(caller_hist == no_caller_history || current_location()->is_end_function);
Step may do one of three things :
Implements ai_history_baset.
Definition at line 14 of file call_stack_history.cpp.
Definition at line 39 of file call_stack_history.h.
Definition at line 46 of file call_stack_history.h.