com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IOptimizer<T extends com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IOptimizerTarget> |
Plugin interface for generic code optimizer. This interface is currently used to define IR and
AST optimizers used by JEB Native Analysis Pipeline components. Optimizers are managed and
invoked by a master-optimizer
.
Refer to the two specialized interfaces, IEOptimizer
for IR codes; ICOptimizer
for AST trees.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | DEAD_CODE_REMOVER | A well-known optimizer tag used to indicate that an optimizer is removing code it deems useless or dead. | |||||||||
String | DEOBFUSCATOR | A well-known optimizer tag used to indicate that an optimizer is categorized as an explicit deobfuscator. | |||||||||
double | PRIORITY_HIGH | A priority value well-suited for high-priority optimizers. | |||||||||
double | PRIORITY_LOW | A priority value well-suited for low-priority optimizers. | |||||||||
double | PRIORITY_STANDARD | A priority value well-suited for normal-priority optimizers. |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
abstract IMasterOptimizer<T> |
getMasterOptimizer()
Retrieve the optional master optimizer that manages this optimizer.
| ||||||||||
abstract int |
getPreferredExecutionStage()
This method is used for on-demand optimizers only.
| ||||||||||
abstract double |
getPriority()
Get the optimizer priority.
| ||||||||||
abstract OptimizerMode |
getRequiredModeThreshold()
Specify the minimum bar requested from the orchestrator in order to run.
| ||||||||||
abstract Set<String> |
getTags()
Get the optimizer tags.
| ||||||||||
abstract OptimizerType |
getType()
Retrieve the type of this optimizer.
| ||||||||||
abstract int |
performOnTarget(T target)
Perform the optimization pass.
| ||||||||||
abstract void |
setMasterOptimizer(IMasterOptimizer<T> mo)
Set an optional master optimizer that manages this optimizer.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From interface
com.pnfsoftware.jeb.core.IPlugin
|
A well-known optimizer tag used to indicate that an optimizer is removing code it deems useless or dead.
A well-known optimizer tag used to indicate that an optimizer is categorized as an explicit deobfuscator.
A priority value well-suited for high-priority optimizers.
A priority value well-suited for low-priority optimizers.
A priority value well-suited for normal-priority optimizers.
Retrieve the optional master optimizer that manages this optimizer.
This method is used for on-demand optimizers only.
Get the optimizer priority. A higher value means higher priority. Priorities are used by
master optimizers
to order optimizers.
Specify the minimum bar requested from the orchestrator in order to run. If that bar is not
met, the orchestrator should not run the optimizer. Refer to AbstractMasterOptimizer
for existing thresholds.
Get the optimizer tags. An optimizer may have 0, 1, or more tags. A tag is a non-null, non-empty string.
Perform the optimization pass.
Set an optional master optimizer that manages this optimizer.
mo | optional |
---|