Class AbstractEBlockOptimizer

All Implemented Interfaces:
IPlugin, IEOptimizer, IOptimizer<IERoutineContext>

public abstract class AbstractEBlockOptimizer extends AbstractEOptimizer
Skeleton for an IRE basic block optimizer.
  • Constructor Details

  • Method Details

    • perform

      protected int perform()
      Description copied from class: AbstractEOptimizer
      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.

      Specified by:
      perform in class AbstractEOptimizer
      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
    • optimizeBlock

      protected abstract int optimizeBlock(BasicBlock<IEStatement> b)
      Attempt to optimize a basic block. All instruction in the block may be modified.
      Parameters:
      b - a basic block
      Returns:
      the number of optimizations performed in the block; a negative value can be returned to indicate a transaction failure (critical error),