Class AbstractEStatementOptimizer
java.lang.Object
com.pnfsoftware.jeb.core.AbstractPlugin
com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractOptimizer<IERoutineContext>
com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEOptimizer
com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEStatementOptimizer
- All Implemented Interfaces:
IPlugin,IEOptimizer,IOptimizer<IERoutineContext>
Skeleton for an
IRE statement optimizer.-
Field Summary
Fields inherited from class com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEOptimizer
cfg, ectxFields inherited from class com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractOptimizer
loggerFields inherited from interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IOptimizer
DEAD_CODE_REMOVER, DEOBFUSCATOR, PRIORITY_HIGH, PRIORITY_LOW, PRIORITY_STANDARD -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract IEStatementAttempt to optimize a statement.protected intperform()Perform the optimization pass.Methods inherited from class com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.AbstractEOptimizer
cleanCfg, deleteUnreachableTrampoline, dumpCfg, getDataChainsUpdatePolicy, getMasterOptimizer, getMasterOptimizerSafe, performOnExpression, performOnTarget, postPerform, postPerform, setDataChainsUpdatePolicy, verifyCfgMethods inherited from class com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractOptimizer
addTag, getName, getPluginInformation, getPreferredExecutionStage, getPriority, getRequiredModeThreshold, getTags, getType, removeTag, setMasterOptimizer, setName, setPreferredExecutionStage, setPriority, setRequiredModeThreshold, setTypeMethods inherited from class com.pnfsoftware.jeb.core.AbstractPlugin
dispose, getData, setDataMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IOptimizer
getPreferredExecutionStage, getPriority, getRequiredModeThreshold, getTags, getType, setMasterOptimizerMethods inherited from interface com.pnfsoftware.jeb.core.IPlugin
dispose, getData, getPluginInformation, setData
-
Constructor Details
-
AbstractEStatementOptimizer
- Parameters:
dataChainsUpdatePolicy- statement optimizers CANNOT use theDataChainsUpdatePolicy.UPDATE_IF_REQUIREDpolicy
-
-
Method Details
-
perform
protected int perform()Description copied from class:AbstractEOptimizerPerform the optimization pass. The caller may request that data chains not be updated, whenever possible. (They may be updated internally by the optimizer, which has the final say as to how and when DFA calculations should be run.)The above means that data chains after running this method may or may not have been modified, and may or may not be in a consistent state with the optimized CFG.
- Specified by:
performin classAbstractEOptimizer- Returns:
- the result of a call to one of
postPerform(...)or a negative number indicating an error has occurred and the optimizing process should be aborted
-
optimizeStatement
Attempt to optimize a statement. Sub-expressions may be examined. The implementor should not attempt to modify parent or cousins expressions.- Parameters:
stm- the statement to be optimized- Returns:
- the new, optimized statement, which will count for one optimization (the provided statement may be returned); null if the statement was not optimized
-