public interface

IMasterOptimizer

com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IMasterOptimizer<T extends com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IOptimizerTarget>
Known Indirect Subclasses

Class Overview

Definition of a master optimizer, whose role is to manage and orchestrate the execution of individual optimizers.

Implementation note: the master optimizer may call optimizers repeatedly until no more optimizations are performed.

Summary

Constants
int DEFAULT_GROUP
Public Methods
abstract OptimizerMode getMode()
Retrieve the current operating mode for this MO.
abstract int getOptimizationCount(boolean deobfuscationOnly)
abstract OptimizerEntry<T> getOptimizer(Class<? extends IOptimizer<T>> clazz)
abstract IOptimizer<T> getOptimizerObject(Class<? extends IOptimizer<T>> clazz)
abstract 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.
abstract List<OptimizerEntry<T>> getRegisteredOptimizers()
Get a copy of the list of optimizer entries registered with this MO.
abstract T getTarget()
Get the target onto which the optimizations will be performed.
abstract int getTotalOptimizationCount()
abstract int perform()
Perform an optimization pass.
abstract int performMultiple(List<OptimizerEntry<T>> list)
Run the list of optimizers, in sequence.
abstract int performSingle(OptimizerEntry<T> e)
Perform a single optimization, using the provided optimizer (which must have been previously registered).
abstract void registerInstrumenter(IMasterOptimizerInstrumenter<T> instrumenter)
Register an instrumenter.
abstract OptimizerEntry<T> registerOptimizer(int group, IOptimizer<T> opt)
Register an optimizer, using the optimizer's provided default priority.
abstract OptimizerEntry<T> registerOptimizer(IOptimizer<T> opt)
Register an optimizer to the main group, using the optimizer's provided default priority.
abstract OptimizerMode setMode(OptimizerMode optimizerMode)
abstract void setPolicyForOptimizerTag(String tag, boolean allowed)
Set the running policy associated to a tag or group of tags.
abstract void setTarget(T t)
Set the optimizer's target.
abstract boolean unregisterInstrumenter(IMasterOptimizerInstrumenter<T> instrumenter)
Unregister an instrumenter
abstract boolean unregisterOptimizer(OptimizerEntry<T> entry)
Remove an optimizer.

Constants

public static final int DEFAULT_GROUP

Constant Value: 1 (0x00000001)

Public Methods

public abstract OptimizerMode getMode ()

Retrieve the current operating mode for this MO.

Returns
  • the current operating mode

public abstract int getOptimizationCount (boolean deobfuscationOnly)

public abstract OptimizerEntry<T> getOptimizer (Class<? extends IOptimizer<T>> clazz)

public abstract IOptimizer<T> getOptimizerObject (Class<? extends IOptimizer<T>> clazz)

public abstract 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.

public abstract List<OptimizerEntry<T>> getRegisteredOptimizers ()

Get a copy of the list of optimizer entries registered with this MO.

public abstract T getTarget ()

Get the target onto which the optimizations will be performed.

public abstract int getTotalOptimizationCount ()

public abstract int perform ()

Perform an optimization pass. All the optimizers will be run according to this master's schedule. They may be run multiple times.

Returns
  • the total number of optimizations performed

public abstract int performMultiple (List<OptimizerEntry<T>> list)

Run the list of optimizers, in sequence. Each optimizer is run once.

Parameters
list a list of optimizers
Returns
  • the total number of optimizations performed

public abstract int performSingle (OptimizerEntry<T> e)

Perform a single optimization, using the provided optimizer (which must have been previously registered).

Parameters
e an optimizer
Returns
  • the total number of optimizations performed

public abstract void registerInstrumenter (IMasterOptimizerInstrumenter<T> instrumenter)

Register an instrumenter. Instrumenters will be called following their registration order.

public abstract OptimizerEntry<T> registerOptimizer (int group, IOptimizer<T> opt)

Register an optimizer, using the optimizer's provided default priority. Refer to IOptimizer#getDefaultPriority().

public abstract OptimizerEntry<T> registerOptimizer (IOptimizer<T> opt)

Register an optimizer to the main group, using the optimizer's provided default priority. Refer to IOptimizer#getDefaultPriority().

public abstract OptimizerMode setMode (OptimizerMode optimizerMode)

Returns
  • the previous mode

public abstract void setPolicyForOptimizerTag (String tag, boolean allowed)

Set the running policy associated to a tag or group of tags. Policy checks when deciding whether an optimizer should be run works as follow: 1) the tag must be allowed, 2) if passed, the tag must not be blocked. By default, all tags are allowed, none are blocked. To reset to that default policy: first invoke this method with ("*", true), then invoke it with (null, false).

Parameters
tag tag name; the special name "*" means all tags; the special name "" (empty string) or null string means no tag
allowed true to allow the master optimizer to run the optimizer with the specified tag; false to block it

public abstract void setTarget (T t)

Set the optimizer's target.

public abstract boolean unregisterInstrumenter (IMasterOptimizerInstrumenter<T> instrumenter)

Unregister an instrumenter

Returns
  • true if the instrumenter was removed, false otherwise

public abstract boolean unregisterOptimizer (OptimizerEntry<T> entry)

Remove an optimizer.