java.lang.Object | |
↳ | com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractMasterOptimizer<T> |
![]() |
Standard implementation of a generic master optimizer.
[Expand]
Inherited Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() |
Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
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 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
OptimizerMode |
getMode()
Retrieve the current operating mode for this MO.
| ||||||||||
int | getOptimizationCount(boolean deobfuscationOnly) | ||||||||||
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 | getTotalOptimizationCount() | ||||||||||
boolean | isEnableDeobfuscators() | ||||||||||
boolean | isEnableUnsafeOptimizers() | ||||||||||
int |
perform()
Perform an optimization pass.
| ||||||||||
int |
performMultiple(List<OptimizerEntry<T>> list)
Perform the provided optimizations, in sequence (which must have been previously registered).
| ||||||||||
int |
performSingle(OptimizerEntry<T> e)
Perform a single optimization, using the provided optimizer (which must have been previously
registered).
| ||||||||||
void |
registerInstrumenter(IMasterOptimizerInstrumenter<T> instrumenter)
Register an instrumenter.
| ||||||||||
OptimizerEntry<T> |
registerOptimizer(int group, IOptimizer<T> opt)
Register an optimizer, using the optimizer's provided default priority.
| ||||||||||
OptimizerEntry<T> |
registerOptimizer(int group, IOptimizer<T> opt, double priority)
Register an optimizer.
| ||||||||||
OptimizerEntry<T> |
registerOptimizer(IOptimizer<T> opt)
Register an optimizer to the
main group , using the optimizer's
provided default priority. | ||||||||||
PerfCountersOptimizer | retrievePerformanceCounters() | ||||||||||
void | setEnableDeobfuscators(boolean enabled) | ||||||||||
void | setEnableUnsafeOptimizers(boolean enabled) | ||||||||||
OptimizerMode | setMode(OptimizerMode mode) | ||||||||||
void |
setTarget(T t)
Set the optimizer's target.
| ||||||||||
void | unregisterAllOptimizers() | ||||||||||
boolean |
unregisterInstrumenter(IMasterOptimizerInstrumenter<T> instrumenter)
Unregister an instrumenter
| ||||||||||
boolean |
unregisterOptimizer(OptimizerEntry<T> e)
Remove an optimizer.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
abstract String | getTargetAddress(T target) | ||||||||||
boolean |
onOptimizerException(T target, IOptimizer<T> opt, Exception ex)
This method is called when an optimizer hard-failed and generated an exception.
| ||||||||||
int | perform(int depth) | ||||||||||
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 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() |
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] |
Retrieve the current operating mode for this MO.
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 pass. All the optimizers will be run according to this master's schedule. They may be run multiple times.
Perform the provided optimizations, in sequence (which must have been previously registered).
Perform a single optimization, using the provided optimizer (which must have been previously registered).
Register an instrumenter. Instrumenters will be called following their registration order.
Register an optimizer, using the optimizer's provided default priority. Refer to
getDefaultPriority()
.
Register an optimizer.
Register an optimizer to the main group
, using the optimizer's
provided default priority. Refer to getDefaultPriority()
.
Set the optimizer's target.
Unregister an instrumenter
This method is called when an optimizer hard-failed and generated an exception.
target | the target that being optimized |
---|---|
opt | the failing optimizer |
ex | the generated exception |
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.