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 Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptiongetMode()
Retrieve the current operating mode for this MO.int
getOptimizationCount
(boolean deobfuscationOnly) getOptimizer
(Class<? extends IOptimizer<T>> clazz) getOptimizerObject
(Class<? extends IOptimizer<T>> clazz) Get a copy of the list of optimizer entries registered with this MO.getRegisteredOptimizers
(int groupId) Get a copy of the lists of optimizer entries registered with this MO and belonging to the provided optimizer group.Get the target onto which the optimizations will be performed.int
int
perform()
Perform an optimization pass.int
performMultiple
(List<OptimizerEntry<T>> list) Run the list of optimizers, in sequence.int
Perform a single optimization, using the provided optimizer (which must have been previously registered).void
registerInstrumenter
(IMasterOptimizerInstrumenter<T> instrumenter) Register an instrumenter.registerOptimizer
(int group, IOptimizer<T> opt) Register an optimizer, using the optimizer's provided default priority.registerOptimizer
(IOptimizer<T> opt) Register an optimizer to themain group
, using the optimizer's provided default priority.setMode
(OptimizerMode optimizerMode) void
setPolicyForOptimizerTag
(String tag, boolean allowed) Set the running policy associated to a tag or group of tags.void
Set the optimizer's target.boolean
unregisterInstrumenter
(IMasterOptimizerInstrumenter<T> instrumenter) Unregister an instrumenterboolean
unregisterOptimizer
(OptimizerEntry<T> entry) Remove an optimizer.
-
Field Details
-
DEFAULT_GROUP
static final int DEFAULT_GROUP- See Also:
-
-
Method Details
-
getTarget
T getTarget()Get the target onto which the optimizations will be performed.- Returns:
-
setTarget
Set the optimizer's target.- Parameters:
t
-
-
setMode
- Parameters:
optimizerMode
-- Returns:
- the previous mode
-
getMode
OptimizerMode getMode()Retrieve the current operating mode for this MO.- Returns:
- the current operating mode
-
setPolicyForOptimizerTag
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 tagallowed
- 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
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
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
Register an optimizer to themain group
, using the optimizer's provided default priority. Refer toIOptimizer#getDefaultPriority()
.- Parameters:
opt
-- Returns:
-
registerOptimizer
Register an optimizer, using the optimizer's provided default priority. Refer toIOptimizer#getDefaultPriority()
.- Parameters:
group
-opt
-- Returns:
-
unregisterOptimizer
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
Get a copy of the lists of optimizer entries registered with this MO and belonging to the provided optimizer group.- Parameters:
groupId
-- Returns:
-
getOptimizer
-
getOptimizerObject
-
registerInstrumenter
Register an instrumenter. Instrumenters will be called following their registration order.- Parameters:
instrumenter
-
-
unregisterInstrumenter
Unregister an instrumenter- Parameters:
instrumenter
-- Returns:
- true if the instrumenter was removed, false otherwise
-