java.lang.Object | ||||
↳ | com.pnfsoftware.jeb.core.AbstractPlugin | |||
↳ | com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractOptimizer<T> | |||
↳ | com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEOptimizer | |||
↳ | com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEPatternOptimizer |
Pattern-Matcher-Replacer optimizers run with the policy
UPDATE_IF_OPTIMIZED
or
UPDATE_IF_REQUIRED
.
[Expand]
Inherited Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() |
[Expand]
Inherited Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AbstractEPatternOptimizer()
Create a default matcher with a
IF_OPTIMIZED policy. | |||||||||||
AbstractEPatternOptimizer(boolean updateChainsIfOptimized)
Create a matcher.
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
IEGeneric |
performOnExpression(IEGeneric exp, IERoutineContext ectx)
Optimize a single expression.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
abstract Collection<EPatternCompiler.EPattern> | getPatterns() | ||||||||||
int |
perform(boolean updateDFA)
Perform the optimization pass.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() |
Create a matcher.
updateChainsIfOptimized | if true, the DFA update policy is set to
IF_OPTIMIZED ; else, it is set
to IF_REQUIRED and the
requirement comes from a successful match-and-replace on a pattern having the
FLAG_INVALIDATE_DFA flag.
|
---|
Optimize a single expression. The default implementation does nothing and returns null.
exp | IR expression to optimize |
---|---|
ectx | helper routine context |
Perform the optimization pass. The caller may request that data chains not be updated, whenever possible. (They may be updated internally by the optimizer, which has the final say as to how and when DFA calculations should be run.)
The above means that data chains after running this method may or may not have been modified, and may or may not be in a consistent state with the optimized CFG.
updateDFA | must be true / this parameter will be deprecated (previously was: if true, update data chains according to the optimizer's policy; if false, the optimizer should not perform final DFA computations if needed) |
---|
postPerform(...)
or a negative number
indicating an error has occurred and the optimizing process should be aborted