Interface IDMasterOptimizer
public interface IDMasterOptimizer
A manager of 
IR optimizers. A master optimizer (MO) orchestrates and executes
 optimizers. This class is currently not meant to be implemented by third-party code. To create a
 master optimizer instance, use IDGlobalContext.createMasterOptimizer(com.pnfsoftware.jeb.core.units.code.android.ir.IDMethodContext, boolean, boolean, boolean). Most IR optimizers
 will not need to create and use MOs on their own. However, some multi-stage advanced optimizers
 may need intermediate code clean-up before proceeding to a later phase. In such cases, using an
 MO may be necessary.
 Implementation note: the master optimizer may call optimizers repeatedly until no more optimizations are performed.
- 
Method SummaryModifier and TypeMethodDescriptionbooleanadd(IDOptimizer optimizer) Register an external optimizer.<T extends IDOptimizer>
 TfindOptimizer(Class<T> cl) Find an optimizer by type.Retrieve the list of all optimizers.Retrieve the IR method context to be optimized.booleanDetermine whether safe mode is enabled.intperform()Perform optimizations on thetarget.voidbooleanremove(IDOptimizer optimizer) Unregister an external optimizer.voidsetOptimizerEnabled(IDOptimizer opt, boolean enabled) Enable or disable an optimizer.voidsetPolicyForOptimizerTag(String tag, boolean allowed) Set the running policy associated to a tag or group of tags.voidsetSafeMode(boolean enabled) Enable or disable safe mode.void
- 
Method Details- 
getTargetIDMethodContext getTarget()Retrieve the IR method context to be optimized.- Returns:
 
- 
addRegister an external optimizer.- Parameters:
- optimizer- an optimizer
- Returns:
- true if the optimizer was registered
 
- 
removeUnregister an external optimizer.- Parameters:
- optimizer- a previously-registered optimizer
- Returns:
- true if the optimizer was unregistered
 
- 
getListOfOptimizersList<IDOptimizer> getListOfOptimizers()Retrieve the list of all optimizers. The returned list contains all optimizers (built-in, external, etc.) registered with this MO. While the list is immutable, the optimizer objects can be acted upon. For example, optimizers (including internal optimizers) may be selectively enabled or disabled viasetOptimizerEnabled(IDOptimizer, boolean).- Returns:
- read-only list of currently registered optimizers
 
- 
setOptimizerEnabledEnable or disable an optimizer.- Parameters:
- opt-
- enabled-
 
- 
findOptimizerFind an optimizer by type. If multiple optimizers of the same type were registered (a practice that is not recommended), the first one is returned.- Type Parameters:
- T-
- Parameters:
- cl- optimizer type
- Returns:
- a registered optimizer of the provided type or null
 
- 
setSafeModevoid setSafeMode(boolean enabled) Enable or disable safe mode. In safe mode, the only optimizers that are run are those whosetypeisDOptimizerType.NORMAL.- Parameters:
- enabled-
 
- 
isSafeModeboolean isSafeMode()Determine whether safe mode is enabled. In safe mode, the only optimizers that are run are those whosetypeisDOptimizerType.NORMAL.- Returns:
 
- 
setPolicyForOptimizerTagSet 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
 
- 
performint perform()Perform optimizations on thetarget.- Returns:
- the number of optimizations performed
 
- 
registerInstrumenter- Parameters:
- inst-
 
- 
unregisterInstrumenter- Parameters:
- inst-
 
- 
getInstrumentersList<IDMasterOptimizerInstrumenter> getInstrumenters()- Returns:
 
 
-