Class AbstractJElementOptimizer

All Implemented Interfaces:
IPlugin, IJOptimizer

public abstract class AbstractJElementOptimizer extends AbstractJOptimizer
Base optimizer that visits and may replace sub-elements of a method AST.
  • Constructor Details

    • AbstractJElementOptimizer

      protected AbstractJElementOptimizer()
      Create a standard optimizer.
    • AbstractJElementOptimizer

      protected AbstractJElementOptimizer(JOptimizerType type)
      Create an optimizer.
      Parameters:
      type - optimizer type, or null to use JOptimizerType.NORMAL
    • AbstractJElementOptimizer

      protected AbstractJElementOptimizer(JOptimizerType type, String name)
      Create an optimizer.
      Parameters:
      type - optimizer type, or null to use JOptimizerType.NORMAL
      name - optimizer name, or null to derive one from the implementation class
  • Method Details

    • perform

      public int perform()
      Description copied from class: AbstractJOptimizer
      An optimizer must implement this method. This method is called by a master optimizer to perform the optimization on the selected target.

      Note that the optimizer is responsible for returning a legal method context, e.g.: the method IR instructions must be consistent with the CFG; the CFG must adhere to certain rules (see cleanGraph); if the data flow analysis is no longer valid, it should be invalidated (see resetDFA); etc.

      Specified by:
      perform in class AbstractJOptimizer
      Returns:
      the number of optimizations performed, 0 if none
    • optimizeElement

      protected abstract IJavaElement optimizeElement(IJavaElement e, IJavaElement parent)
      Optimize an AST element.
      Parameters:
      e - element to optimize
      parent - parent element
      Returns:
      replacement element, or null to leave the element unchanged