java.lang.Object | |
↳ | com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractMasterOptimizer<T> |
![]() |
Standard implementation of a generic master optimizer.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
int | MODE_AGGRESSIVE | ||||||||||
int | MODE_NORMAL |
Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
protected int | currentMode | current optimization mode | |||||||||
protected int | grp1NMaxRunCount | maximum run count for the group [1..N] (<0 means no limit) | |||||||||
protected List<IMasterOptimizerInstrumenter<T>> | instrumenters | instrumenters | |||||||||
protected SortedMap<Integer, List<OptimizerEntry<T>>> | optGrpMap | groups of optimizers; groups 0 and -1 are entry and exit groups, respectively | |||||||||
protected List<OptimizerEntry<T>> | optList | list of all optimizers | |||||||||
protected T | t | default target |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AbstractMasterOptimizer(T t, int grp1NMaxRunCount)
Create a master optimizer.
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
int | getMode() | ||||||||||
OptimizerEntry<T> | getOptimizer(Class<? extends IOptimizer<T>> clazz) | ||||||||||
IOptimizer<T> | getOptimizerObject(Class<? extends IOptimizer<T>> clazz) | ||||||||||
List<OptimizerEntry<T>> |
getRegisteredOptimizers(int groupId)
Get a copy of the lists of optimizer entries registered with this MO and belonging to the
provided optimizer group.
| ||||||||||
List<OptimizerEntry<T>> |
getRegisteredOptimizers()
Get a copy of the list of optimizer entries registered with this MO.
| ||||||||||
T |
getTarget()
Get the target onto which the optimizations will be performed.
| ||||||||||
int |
perform()
Perform an optimization round.
| ||||||||||
int | perform(int depth) | ||||||||||
int | performMultiple(List<OptimizerEntry<T>> list) | ||||||||||
int | performSingle(OptimizerEntry<T> e) | ||||||||||
void |
registerInstrumenter(IMasterOptimizerInstrumenter<T> instrumenter)
Register an instrumenter.
| ||||||||||
OptimizerEntry<T> |
registerOptimizer(int group, IOptimizer<T> opt)
Register an optimizer, with its default priority.
| ||||||||||
OptimizerEntry<T> |
registerOptimizer(IOptimizer<T> opt)
Register an optimizer to the main group, with its default priority.
| ||||||||||
OptimizerEntry<T> |
registerOptimizer(int group, IOptimizer<T> opt, double priority)
Register an optimizer.
| ||||||||||
int | setMode(int mode) | ||||||||||
void |
setTarget(T t)
Set the optimizer's target.
| ||||||||||
boolean |
unregisterInstrumenter(IMasterOptimizerInstrumenter<T> instrumenter)
Unregister an instrumenter
| ||||||||||
boolean |
unregisterOptimizer(OptimizerEntry<T> e)
Remove an optimizer.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
void |
postAllOptimizationsCallback(T target)
This method might be overridden, but the parent should be called first.
| ||||||||||
void |
postOptimizationCallback(T target, OptimizerEntry<T> e, int cnt, long executionTimeMs)
This method might be overridden, but the parent should be called first.
| ||||||||||
void |
preAllOptimizationsCallback(T target)
This method might be overridden, but the parent should be called first.
| ||||||||||
void |
preOptimizationCallback(T target, OptimizerEntry<T> e)
This method might be overridden, but the parent should be called first.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() |
current optimization mode
maximum run count for the group [1..N] (<0 means no limit)
groups of optimizers; groups 0 and -1 are entry and exit groups, respectively
default target
Create a master optimizer.
t | the default target, may be null |
---|---|
grp1NMaxRunCount | maximum run count for the group [1..N] |
Get a copy of the lists of optimizer entries registered with this MO and belonging to the provided optimizer group.
Get a copy of the list of optimizer entries registered with this MO.
Get the target onto which the optimizations will be performed.
Perform an optimization round.
Register an instrumenter. Instrumenters will be called following their registration order.
Register an optimizer, with its default priority.
Register an optimizer to the main group, with its default priority.
Register an optimizer.
Set the optimizer's target.
Unregister an instrumenter
This method might be overridden, but the parent should be called first.
This method might be overridden, but the parent should be called first. Note that this method might have a big impact on decompilation performance, so override carefully.
This method might be overridden, but the parent should be called first.
This method might be overridden, but the parent should be called first. Note that this method might have a big impact on decompilation performance, so override carefully.