decompiler
1.0.0
|
Class for doing normal widening. More...
#include <rangeutil.hh>
Public Member Functions | |
WidenerFull (void) | |
Constructor with default iterations. | |
WidenerFull (int4 wide, int4 full) | |
Constructor specifying iterations. | |
virtual int4 | determineIterationReset (const ValueSet &valueSet) |
Upon entering a fresh partition, determine how the given ValueSet count should be reset. More... | |
virtual bool | checkFreeze (const ValueSet &valueSet) |
Check if the given value set has been frozen for the remainder of the iteration process. More... | |
virtual bool | doWidening (const ValueSet &valueSet, CircleRange &range, const CircleRange &newRange) |
For an iteration that isn't stabilizing attempt to widen the given ValueSet. More... | |
Public Member Functions inherited from ghidra::Widener | |
virtual | ~Widener (void) |
Destructor. | |
Private Attributes | |
int4 | widenIteration |
The iteration at which widening is attempted. | |
int4 | fullIteration |
The iteration at which a full range is produced. | |
Class for doing normal widening.
Widening is attempted at a specific iteration. If a landmark is available, it is used to do a controlled widening, holding the stable range boundary constant. Otherwise a full range is produced. At a later iteration, a full range is produced automatically.
|
virtual |
Check if the given value set has been frozen for the remainder of the iteration process.
valueSet | is the given value set |
Implements ghidra::Widener.
References ghidra::ValueSet::getRange(), and ghidra::CircleRange::isFull().
|
virtual |
Upon entering a fresh partition, determine how the given ValueSet count should be reset.
valueSet | is the given value set |
Implements ghidra::Widener.
References ghidra::ValueSet::getCount().
|
virtual |
For an iteration that isn't stabilizing attempt to widen the given ValueSet.
Change the given range based on its previous iteration so that it stabilizes more rapidly on future iterations.
valueSet | is the given value set |
range | is the previous form of the given range (and storage for the widening result) |
newRange | is the current iteration of the given range |
Implements ghidra::Widener.
References ghidra::CircleRange::contains(), ghidra::ValueSet::getCount(), ghidra::ValueSet::getLandMark(), ghidra::CircleRange::getMin(), ghidra::CircleRange::invert(), and ghidra::CircleRange::widen().