Class Op03Blocks
- java.lang.Object
-
- org.benf.cfr.reader.bytecode.analysis.opgraph.Op03Blocks
-
public class Op03Blocks extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classOp03Blocks.Block3
-
Constructor Summary
Constructors Constructor Description Op03Blocks()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static booleanaddCatchEndDependencies(java.util.List<Op03Blocks.Block3> blocks)private static java.util.List<Op03Blocks.Block3>addTryEndDependencies(java.util.List<Op03Blocks.Block3> blocks)private static voidapply0TargetBlockHeuristic(java.util.List<Op03Blocks.Block3> blocks)private static voidapplyKnownBlocksHeuristic(java.util.List<Op03Blocks.Block3> blocks, java.util.Map<BlockIdentifier,BlockIdentifier> tryBlockAliases)private static java.util.List<Op03Blocks.Block3>buildBasicBlocks(java.util.List<Op03SimpleStatement> statements)private static booleancanCombineBlockSets(Op03Blocks.Block3 from, Op03Blocks.Block3 to)private static java.util.List<Op03Blocks.Block3>combineNeighbouringBlocks(java.util.List<Op03Blocks.Block3> blocks)private static java.util.List<Op03Blocks.Block3>combineNeighbouringBlocksPass1(java.util.List<Op03Blocks.Block3> blocks)private static java.util.List<Op03Blocks.Block3>combineSingleCaseBackBlock(java.util.List<Op03Blocks.Block3> blocks)static java.util.List<Op03SimpleStatement>combineTryBlocks(java.util.List<Op03SimpleStatement> statements)private static booleandetectMoves(java.util.List<Op03Blocks.Block3> blocks, Options options)private static java.util.List<Op03Blocks.Block3>doTopSort(java.util.List<Op03Blocks.Block3> in)private static java.util.Map<BlockIdentifier,java.lang.Integer>findFirstInBlock(java.util.List<Op03SimpleStatement> statements, java.util.Set<BlockIdentifier> mutableMissing)private static java.util.Map<BlockIdentifier,BlockIdentifier>getTryBlockAliases(java.util.List<Op03SimpleStatement> statements)private static java.util.List<Op03Blocks.Block3>invertJoinZeroTargetJumps(java.util.List<Op03Blocks.Block3> blocks)private static booleanmoveSingleOutOrderBlocks(java.util.List<Op03Blocks.Block3> blocks)private static voidpatch(Op03Blocks.Block3 a, Op03Blocks.Block3 b)private static voidremoveAliases(java.util.Set<BlockIdentifier> in, java.util.Map<BlockIdentifier,BlockIdentifier> aliases)private static voidsanitiseBlocks(java.util.List<Op03Blocks.Block3> blocks)private static booleanstripBackExceptions(java.util.List<Op03SimpleStatement> statements)private static voidstripTryBlockAliases(java.util.List<Op03SimpleStatement> out, java.util.Map<BlockIdentifier,BlockIdentifier> tryBlockAliases)static java.util.List<Op03SimpleStatement>topologicalSort(java.util.List<Op03SimpleStatement> statements, DecompilerComments comments, Options options)
-
-
-
Method Detail
-
doTopSort
private static java.util.List<Op03Blocks.Block3> doTopSort(java.util.List<Op03Blocks.Block3> in)
-
apply0TargetBlockHeuristic
private static void apply0TargetBlockHeuristic(java.util.List<Op03Blocks.Block3> blocks)
-
removeAliases
private static void removeAliases(java.util.Set<BlockIdentifier> in, java.util.Map<BlockIdentifier,BlockIdentifier> aliases)
-
getTryBlockAliases
private static java.util.Map<BlockIdentifier,BlockIdentifier> getTryBlockAliases(java.util.List<Op03SimpleStatement> statements)
-
applyKnownBlocksHeuristic
private static void applyKnownBlocksHeuristic(java.util.List<Op03Blocks.Block3> blocks, java.util.Map<BlockIdentifier,BlockIdentifier> tryBlockAliases)
-
buildBasicBlocks
private static java.util.List<Op03Blocks.Block3> buildBasicBlocks(java.util.List<Op03SimpleStatement> statements)
-
detectMoves
private static boolean detectMoves(java.util.List<Op03Blocks.Block3> blocks, Options options)
-
stripTryBlockAliases
private static void stripTryBlockAliases(java.util.List<Op03SimpleStatement> out, java.util.Map<BlockIdentifier,BlockIdentifier> tryBlockAliases)
-
findFirstInBlock
private static java.util.Map<BlockIdentifier,java.lang.Integer> findFirstInBlock(java.util.List<Op03SimpleStatement> statements, java.util.Set<BlockIdentifier> mutableMissing)
-
combineTryBlocks
public static java.util.List<Op03SimpleStatement> combineTryBlocks(java.util.List<Op03SimpleStatement> statements)
-
canCombineBlockSets
private static boolean canCombineBlockSets(Op03Blocks.Block3 from, Op03Blocks.Block3 to)
-
sanitiseBlocks
private static void sanitiseBlocks(java.util.List<Op03Blocks.Block3> blocks)
-
invertJoinZeroTargetJumps
private static java.util.List<Op03Blocks.Block3> invertJoinZeroTargetJumps(java.util.List<Op03Blocks.Block3> blocks)
-
combineNeighbouringBlocks
private static java.util.List<Op03Blocks.Block3> combineNeighbouringBlocks(java.util.List<Op03Blocks.Block3> blocks)
-
combineSingleCaseBackBlock
private static java.util.List<Op03Blocks.Block3> combineSingleCaseBackBlock(java.util.List<Op03Blocks.Block3> blocks)
-
moveSingleOutOrderBlocks
private static boolean moveSingleOutOrderBlocks(java.util.List<Op03Blocks.Block3> blocks)
-
combineNeighbouringBlocksPass1
private static java.util.List<Op03Blocks.Block3> combineNeighbouringBlocksPass1(java.util.List<Op03Blocks.Block3> blocks)
-
topologicalSort
public static java.util.List<Op03SimpleStatement> topologicalSort(java.util.List<Op03SimpleStatement> statements, DecompilerComments comments, Options options)
-
addCatchEndDependencies
private static boolean addCatchEndDependencies(java.util.List<Op03Blocks.Block3> blocks)
-
addTryEndDependencies
private static java.util.List<Op03Blocks.Block3> addTryEndDependencies(java.util.List<Op03Blocks.Block3> blocks)
-
stripBackExceptions
private static boolean stripBackExceptions(java.util.List<Op03SimpleStatement> statements)
-
patch
private static void patch(Op03Blocks.Block3 a, Op03Blocks.Block3 b)
-
-