public abstract class

AbstractOptimizer

extends AbstractPlugin
implements IOptimizer<T>
java.lang.Object
   ↳ com.pnfsoftware.jeb.core.AbstractPlugin
     ↳ com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractOptimizer<T>
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

Skeleton for a generic artifact optimizer.

Summary

[Expand]
Inherited Constants
From interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IOptimizer
Fields
protected static final StructuredLogger logger
Public Constructors
AbstractOptimizer()
AbstractOptimizer(T target)
Public Methods
OptimizerClassId getClassId()
Retrieve the class id of this optimizer.
double getDefaultPriority()
The standard implementation provides a standard priority of 0.
IMasterOptimizer<T> getMasterOptimizer()
Retrieve the optional master optimizer that manages this optimizer.
String getName()
EditablePluginInformation getPluginInformation()
Retrieve basic information about the plugin, such as name, version, author, and organization.
int getPostProcessingAction()
Get the action that should be executed after the optimizer was executed successfully and optimized code.
int getPreferredExecutionStage()
This method is used for on-demand optimizers only.
OptimizerMode getRequiredModeThreshold()
Specify the maximum master-optimizer threshold.
OptimizerType getType()
Retrieve the type of this optimizer.
void setMasterOptimizer(IMasterOptimizer<T> mo)
Set an optional master optimizer that manages this optimizer.
void setPostProcessingActionFlags(int postProcActionFlags)
Protected Methods
void setClassId(OptimizerClassId classId)
void setName(String name)
void setPreferredExecutionStage(int preferredExecStage)
Use only for type ON_DEMAND.
void setPreferredStage(int preferredExecStage)
void setRequiredModeThreshold(OptimizerMode threshold)
Set the threshold.
void setType(OptimizerType type)
Set the type of optimizer.
[Expand]
Inherited Methods
From class com.pnfsoftware.jeb.core.AbstractPlugin
From class java.lang.Object
From interface com.pnfsoftware.jeb.core.IPlugin
From interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IOptimizer

Fields

protected static final StructuredLogger logger

Public Constructors

public AbstractOptimizer ()

public AbstractOptimizer (T target)

Public Methods

public OptimizerClassId getClassId ()

Retrieve the class id of this optimizer.

public double getDefaultPriority ()

The standard implementation provides a standard priority of 0.

Returns
  • the default priority

public IMasterOptimizer<T> getMasterOptimizer ()

Retrieve the optional master optimizer that manages this optimizer.

Returns
  • optional reference

public String getName ()

public EditablePluginInformation getPluginInformation ()

Retrieve basic information about the plugin, such as name, version, author, and organization.

Returns
  • the plugin information

public int getPostProcessingAction ()

Get the action that should be executed after the optimizer was executed successfully and optimized code. Post-processing actions may involve re-optimizing; if so, re-optimizations are not performed recursively, ie, post-processing actions will not trigger additional post-processing actions.

Returns
  • one of PPA_* constants; 0 means none

public int getPreferredExecutionStage ()

This method is used for on-demand optimizers only.

public OptimizerMode getRequiredModeThreshold ()

Specify the maximum master-optimizer threshold. Refer to AbstractMasterOptimizer for existing thresholds.

public OptimizerType getType ()

Retrieve the type of this optimizer.

public void setMasterOptimizer (IMasterOptimizer<T> mo)

Set an optional master optimizer that manages this optimizer.

Parameters
mo optional

public void setPostProcessingActionFlags (int postProcActionFlags)

Protected Methods

protected void setClassId (OptimizerClassId classId)

protected void setName (String name)

protected void setPreferredExecutionStage (int preferredExecStage)

Use only for type ON_DEMAND. Disregarded for other types. Leave to 0 for pure on-demand.

Parameters
preferredExecStage id such that abs(id) is in [1, 99] ; use positive value for post-stage execution, negative value for pre-stage execution

protected void setPreferredStage (int preferredExecStage)

Use setPreferredExecutionStage(int). Left out for backward compatibility with existing plugins

protected void setRequiredModeThreshold (OptimizerMode threshold)

Set the threshold. The default value AbstractMasterOptimizer#MODE_NORMAL.

protected void setType (OptimizerType type)

Set the type of optimizer. The default is STANDARD. Optimizers with a type ON_DEMAND must also set their preferred execution stage (else they will never run).