Ghidra Decompiler Analysis Engine
|
Class holding a particular widening strategy for the ValueSetSolver iteration algorithm. More...
#include <rangeutil.hh>
Public Member Functions | |
virtual int4 | determineIterationReset (const ValueSet &valueSet)=0 |
Upon entering a fresh partition, determine how the given ValueSet count should be reset. More... | |
virtual bool | checkFreeze (const ValueSet &valueSet)=0 |
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)=0 |
For an iteration that isn't stabilizing attempt to widen the given ValueSet. More... | |
Class holding a particular widening strategy for the ValueSetSolver iteration algorithm.
This obects gets to decide when a value set gets frozen (checkFreeze()), meaning the set doesn't change for the remaining iteration steps. It also gets to decide when and by how much value sets get artificially increased in size to accelerate reaching their stable state (doWidening()).
|
pure virtual |
Check if the given value set has been frozen for the remainder of the iteration process.
valueSet | is the given value set |
Implemented in WidenerNone, and WidenerFull.
|
pure virtual |
Upon entering a fresh partition, determine how the given ValueSet count should be reset.
valueSet | is the given value set |
Implemented in WidenerNone, and WidenerFull.
|
pure 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 |
Implemented in WidenerNone, and WidenerFull.