public abstract class

AbstractEStatementOptimizer

extends AbstractEOptimizer
java.lang.Object
   ↳ com.pnfsoftware.jeb.core.AbstractPlugin
     ↳ com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractOptimizer<T extends com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IOptimizerTarget>
       ↳ com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEOptimizer
         ↳ com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEStatementOptimizer

Class Overview

Skeleton for an IRE EStatement statement optimizer.

Summary

[Expand]
Inherited Constants
From interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IOptimizer
[Expand]
Inherited Fields
From class com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEOptimizer
From class com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractOptimizer
Public Constructors
AbstractEStatementOptimizer(DataChainsUpdatePolicy dataChainsUpdatePolicy)
Protected Methods
abstract IEStatement optimizeStatement(IEStatement stm)
Attempt to optimize a statement.
int perform()
Perform the optimization pass.
[Expand]
Inherited Methods
From class com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEOptimizer
From class com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractOptimizer
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.ir.opt.IEOptimizer
From interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IOptimizer

Public Constructors

public AbstractEStatementOptimizer (DataChainsUpdatePolicy dataChainsUpdatePolicy)

Parameters
dataChainsUpdatePolicy statement optimizers CANNOT use the UPDATE_IF_REQUIRED policy

Protected Methods

protected abstract IEStatement optimizeStatement (IEStatement stm)

Attempt to optimize a statement. Sub-expressions may be examined. The implementor should not attempt to modify parent or cousins expressions.

Parameters
stm the statement to be optimized
Returns
  • the new, optimized statement, which will count for one optimization (the provided statement may be returned); null if the statement was not optimized

protected int perform ()

Perform the optimization pass. The caller may request that data chains not be updated, whenever possible. (They may be updated internally by the optimizer, which has the final say as to how and when DFA calculations should be run.)

The above means that data chains after running this method may or may not have been modified, and may or may not be in a consistent state with the optimized CFG.

Returns
  • the result of a call to one of postPerform(...) or a negative number indicating an error has occurred and the optimizing process should be aborted