Interface IMasterOptimizer<T extends IOptimizerTarget>

All Known Subinterfaces:
ICMasterOptimizer, IEMasterOptimizer
All Known Implementing Classes:
AbstractMasterOptimizer, CMasterOptimizer, EMasterOptimizer

public interface IMasterOptimizer<T extends IOptimizerTarget>
Definition of a master optimizer, whose role is to manage and orchestrate the execution of individual optimizers.

Implementation note: the master optimizer may call optimizers repeatedly until no more optimizations are performed.

  • Field Details

  • Method Details

    • getTarget

      T getTarget()
      Get the target onto which the optimizations will be performed.
      Returns:
    • setTarget

      void setTarget(T t)
      Set the optimizer's target.
      Parameters:
      t -
    • setMode

      OptimizerMode setMode(OptimizerMode optimizerMode)
      Parameters:
      optimizerMode -
      Returns:
      the previous mode
    • getMode

      OptimizerMode getMode()
      Retrieve the current operating mode for this MO.
      Returns:
      the current operating mode
    • setPolicyForOptimizerTag

      void setPolicyForOptimizerTag(String tag, boolean allowed)
      Set the running policy associated to a tag or group of tags. Policy checks when deciding whether an optimizer should be run works as follow: 1) the tag must be allowed, 2) if passed, the tag must not be blocked. By default, all tags are allowed, none are blocked. To reset to that default policy: first invoke this method with ("*", true), then invoke it with (null, false).
      Parameters:
      tag - tag name; the special name "*" means all tags; the special name "" (empty string) or null string means no tag
      allowed - true to allow the master optimizer to run the optimizer with the specified tag; false to block it
    • perform

      int perform()
      Perform an optimization pass. All the optimizers will be run according to this master's schedule. They may be run multiple times.
      Returns:
      the total number of optimizations performed
    • performMultiple

      int performMultiple(List<OptimizerEntry<T>> list)
      Run the list of optimizers, in sequence. Each optimizer is run once.
      Parameters:
      list - a list of optimizers
      Returns:
      the total number of optimizations performed
    • performSingle

      int performSingle(OptimizerEntry<T> e)
      Perform a single optimization, using the provided optimizer (which must have been previously registered).
      Parameters:
      e - an optimizer
      Returns:
      the total number of optimizations performed
    • getTotalOptimizationCount

      int getTotalOptimizationCount()
      Returns:
    • getOptimizationCount

      int getOptimizationCount(boolean deobfuscationOnly)
      Parameters:
      deobfuscationOnly -
      Returns:
    • registerOptimizer

      OptimizerEntry<T> registerOptimizer(IOptimizer<T> opt)
      Register an optimizer to the main group, using the optimizer's provided default priority. Refer to IOptimizer#getDefaultPriority().
      Parameters:
      opt -
      Returns:
    • registerOptimizer

      OptimizerEntry<T> registerOptimizer(int group, IOptimizer<T> opt)
      Register an optimizer, using the optimizer's provided default priority. Refer to IOptimizer#getDefaultPriority().
      Parameters:
      group -
      opt -
      Returns:
    • unregisterOptimizer

      boolean unregisterOptimizer(OptimizerEntry<T> entry)
      Remove an optimizer.
      Parameters:
      entry -
      Returns:
    • getRegisteredOptimizers

      List<OptimizerEntry<T>> getRegisteredOptimizers()
      Get a copy of the list of optimizer entries registered with this MO.
      Returns:
    • getRegisteredOptimizers

      List<OptimizerEntry<T>> getRegisteredOptimizers(int groupId)
      Get a copy of the lists of optimizer entries registered with this MO and belonging to the provided optimizer group.
      Parameters:
      groupId -
      Returns:
    • getOptimizer

      OptimizerEntry<T> getOptimizer(Class<? extends IOptimizer<T>> clazz)
    • getOptimizerObject

      IOptimizer<T> getOptimizerObject(Class<? extends IOptimizer<T>> clazz)
    • registerInstrumenter

      void registerInstrumenter(IMasterOptimizerInstrumenter<T> instrumenter)
      Register an instrumenter. Instrumenters will be called following their registration order.
      Parameters:
      instrumenter -
    • unregisterInstrumenter

      boolean unregisterInstrumenter(IMasterOptimizerInstrumenter<T> instrumenter)
      Unregister an instrumenter
      Parameters:
      instrumenter -
      Returns:
      true if the instrumenter was removed, false otherwise