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 class
Op03Blocks.Block3
-
Constructor Summary
Constructors Constructor Description Op03Blocks()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static boolean
addCatchEndDependencies(java.util.List<Op03Blocks.Block3> blocks)
private static java.util.List<Op03Blocks.Block3>
addTryEndDependencies(java.util.List<Op03Blocks.Block3> blocks)
private static void
apply0TargetBlockHeuristic(java.util.List<Op03Blocks.Block3> blocks)
private static void
applyKnownBlocksHeuristic(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 boolean
canCombineBlockSets(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 boolean
detectMoves(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 boolean
moveSingleOutOrderBlocks(java.util.List<Op03Blocks.Block3> blocks)
private static void
patch(Op03Blocks.Block3 a, Op03Blocks.Block3 b)
private static void
removeAliases(java.util.Set<BlockIdentifier> in, java.util.Map<BlockIdentifier,BlockIdentifier> aliases)
private static void
sanitiseBlocks(java.util.List<Op03Blocks.Block3> blocks)
private static boolean
stripBackExceptions(java.util.List<Op03SimpleStatement> statements)
private static void
stripTryBlockAliases(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)
-
-