com.pnfsoftware.jeb.core.units.code.android.ir.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 createMasterOptimizer(IDMethodContext)
. 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.
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
abstract boolean |
add(IDOptimizer optimizer)
Register an external optimizer.
| ||||||||||
abstract <T extends IDOptimizer> T |
findOptimizer(Class<T> cl)
Find an optimizer by type.
| ||||||||||
abstract List<IDMasterOptimizerInstrumenter> | getInstrumenters() | ||||||||||
abstract List<IDOptimizer> |
getListOfOptimizers()
Retrieve the list of all optimizers.
| ||||||||||
abstract IDMethodContext |
getTarget()
Retrieve the IR method context to be optimized.
| ||||||||||
abstract boolean |
isEnableUnsafeOptimizers()
This method is deprecated.
No replacement.
| ||||||||||
abstract boolean |
isSafeMode()
Determine whether safe mode is enabled.
| ||||||||||
abstract int |
perform()
Perform optimizations on the
target . | ||||||||||
abstract void | registerInstrumenter(IDMasterOptimizerInstrumenter inst) | ||||||||||
abstract boolean |
remove(IDOptimizer optimizer)
Unregister an external optimizer.
| ||||||||||
abstract void |
setEnableUnsafeOptimizers(boolean enabled)
This method is deprecated.
No replacement.
| ||||||||||
abstract void |
setOptimizerEnabled(IDOptimizer opt, boolean enabled)
Enable or disable an optimizer.
| ||||||||||
abstract void |
setPolicyForOptimizerTag(String tag, boolean allowed)
Set the running policy associated to a tag or group of tags.
| ||||||||||
abstract void |
setSafeMode(boolean enabled)
Enable or disable safe mode.
| ||||||||||
abstract void | unregisterInstrumenter(IDMasterOptimizerInstrumenter inst) |
Register an external optimizer.
optimizer | an optimizer |
---|
Find an optimizer by type. If multiple optimizers of the same type were registered (a practice that is not recommended), the first one is returned.
cl | optimizer type |
---|
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 via setOptimizerEnabled(IDOptimizer, boolean)
.
This method is deprecated.
No replacement.
Perform optimizations on the target
.
Unregister an external optimizer.
optimizer | a previously-registered optimizer |
---|
This method is deprecated.
No replacement.
Enable or disable an optimizer.
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)
.
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 |