Interface IJOptimizer

All Superinterfaces:
IPlugin
All Known Implementing Classes:
AbstractJBlockOptimizer, AbstractJElementOptimizer, AbstractJOptimizer, AbstractJStatementOptimizer

public interface IJOptimizer extends IPlugin
Plugin interface for dexdec (DEX decompiler) AST optimizer plugins. They are used to optimize a class or method AST.

Implementors should not implement this interface directly: instead, extend AbstractJOptimizer, AbstractJBlockOptimizer, or AbstractJStatementOptimizer.

  • Method Details

    • getName

      String getName()
      Retrieve the plugin name. Should be consistent with the value returned by getPluginInformation().getName().
      Returns:
    • getType

      JOptimizerType getType()
      Get the optimizer type. Types are used by optimizer orchestrators to determine whether an optimizer should run.
      Returns:
    • getPriority

      double getPriority()
      Get the optimizer priority. A higher value means a higher priority. Priorities are used by optimizer orchestrators to determine in which order optimizers should be executed.
      Returns:
      the default priority
    • isEnabled

      boolean isEnabled()
      Determine whether the optimizer is enabled or not. This method is used by optimizer orchestrators to determine whether an optimizer can be scheduled for execution.
      Returns:
      true if this optimizer is enabled
    • perform

      int perform(IJavaDecompilableElement elt)
      Run the optimizer on the provided target element (method or class).
      Parameters:
      elt - an AST element, such as an IJavaMethod or IJavaClass
      Returns:
      number of optimizations performed