Class ControlFlowGraphReducer
- java.lang.Object
-
- org.jd.core.v1.service.converter.classfiletojavasyntax.util.ControlFlowGraphReducer
-
public class ControlFlowGraphReducer extends java.lang.Object
-
-
Constructor Summary
Constructors Constructor Description ControlFlowGraphReducer()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description protected static boolean
aggregateConditionalBranches(BasicBlock basicBlock)
protected static void
changeEndLoopToJump(java.util.BitSet visited, BasicBlock target, BasicBlock basicBlock)
protected static boolean
checkEclipseFinallyPattern(BasicBlock basicBlock, BasicBlock finallyBB, int maxOffset)
protected static boolean
checkJdk118TernaryOperatorPattern(BasicBlock next, BasicBlock nextNext, int ifByteCode)
protected static BasicBlock
clone(BasicBlock bb, BasicBlock next)
protected static boolean
containsFinally(BasicBlock basicBlock)
protected static void
convertConditionalBranchToGotoInTernaryOperator(BasicBlock basicBlock, BasicBlock next, BasicBlock nextNext)
protected static void
convertGotoInTernaryOperatorToCondition(BasicBlock basicBlock, BasicBlock next)
protected static void
createIf(BasicBlock basicBlock, BasicBlock sub, BasicBlock last, BasicBlock next)
protected static void
createIfElse(int type, BasicBlock basicBlock, BasicBlock sub1, BasicBlock last1, BasicBlock sub2, BasicBlock last2, BasicBlock next)
protected static BasicBlock
createLeftCondition(BasicBlock basicBlock)
protected static BasicBlock
createLeftInverseCondition(BasicBlock basicBlock)
protected static BasicBlock
getLastConditionalBranch(java.util.BitSet visited, BasicBlock basicBlock)
protected static BasicBlock
newJumpBasicBlock(BasicBlock bb, BasicBlock target)
static boolean
reduce(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
static boolean
reduce(ControlFlowGraph cfg)
protected static boolean
reduceConditionalBranch(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
protected static boolean
reduceConditionalBranch(BasicBlock basicBlock)
protected static boolean
reduceJsr(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
protected static boolean
reduceLoop(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
protected static boolean
reduceSwitchDeclaration(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
protected static boolean
reduceTryDeclaration(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
protected static void
removeJsrAndMergeSubTry(BasicBlock basicBlock)
protected static void
removePredecessors(BasicBlock basicBlock)
protected static void
replaceLoopStartWithSwitchBreak(java.util.BitSet visited, BasicBlock basicBlock)
protected static BasicBlock
searchEndBlock(BasicBlock basicBlock, int maxOffset)
protected static BasicBlock
searchJsrTarget(BasicBlock basicBlock, java.util.BitSet jsrTargets)
protected static boolean
searchLoopStart(BasicBlock basicBlock, int maxOffset)
protected static BasicBlock
searchUpdateBlockAndCreateContinueLoop(java.util.BitSet visited, BasicBlock basicBlock)
protected static BasicBlock
searchUpdateBlockAndCreateContinueLoop(java.util.BitSet visited, BasicBlock basicBlock, BasicBlock subBasicBlock)
protected static BasicBlock
splitSequence(BasicBlock basicBlock, int maxOffset)
protected static BasicBlock
updateBlock(BasicBlock basicBlock, BasicBlock end, int maxOffset)
protected static void
updateConditionalBranches(BasicBlock basicBlock, BasicBlock leftBasicBlock, int operator, BasicBlock subBasicBlock)
protected static void
updateConditionTernaryOperator(BasicBlock basicBlock, BasicBlock nextNext)
protected static void
updateConditionTernaryOperator2(BasicBlock basicBlock)
protected static void
visit(java.util.BitSet visited, BasicBlock basicBlock, int maxOffset, java.util.HashSet<BasicBlock> ends)
-
-
-
Method Detail
-
reduce
public static boolean reduce(ControlFlowGraph cfg)
-
reduce
public static boolean reduce(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
-
reduceConditionalBranch
protected static boolean reduceConditionalBranch(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
-
reduceConditionalBranch
protected static boolean reduceConditionalBranch(BasicBlock basicBlock)
-
createIf
protected static void createIf(BasicBlock basicBlock, BasicBlock sub, BasicBlock last, BasicBlock next)
-
createIfElse
protected static void createIfElse(int type, BasicBlock basicBlock, BasicBlock sub1, BasicBlock last1, BasicBlock sub2, BasicBlock last2, BasicBlock next)
-
aggregateConditionalBranches
protected static boolean aggregateConditionalBranches(BasicBlock basicBlock)
-
createLeftCondition
protected static BasicBlock createLeftCondition(BasicBlock basicBlock)
-
createLeftInverseCondition
protected static BasicBlock createLeftInverseCondition(BasicBlock basicBlock)
-
updateConditionalBranches
protected static void updateConditionalBranches(BasicBlock basicBlock, BasicBlock leftBasicBlock, int operator, BasicBlock subBasicBlock)
-
updateConditionTernaryOperator
protected static void updateConditionTernaryOperator(BasicBlock basicBlock, BasicBlock nextNext)
-
updateConditionTernaryOperator2
protected static void updateConditionTernaryOperator2(BasicBlock basicBlock)
-
convertGotoInTernaryOperatorToCondition
protected static void convertGotoInTernaryOperatorToCondition(BasicBlock basicBlock, BasicBlock next)
-
convertConditionalBranchToGotoInTernaryOperator
protected static void convertConditionalBranchToGotoInTernaryOperator(BasicBlock basicBlock, BasicBlock next, BasicBlock nextNext)
-
checkJdk118TernaryOperatorPattern
protected static boolean checkJdk118TernaryOperatorPattern(BasicBlock next, BasicBlock nextNext, int ifByteCode)
-
reduceSwitchDeclaration
protected static boolean reduceSwitchDeclaration(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
-
searchLoopStart
protected static boolean searchLoopStart(BasicBlock basicBlock, int maxOffset)
-
reduceTryDeclaration
protected static boolean reduceTryDeclaration(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
-
containsFinally
protected static boolean containsFinally(BasicBlock basicBlock)
-
checkEclipseFinallyPattern
protected static boolean checkEclipseFinallyPattern(BasicBlock basicBlock, BasicBlock finallyBB, int maxOffset)
-
searchJsrTarget
protected static BasicBlock searchJsrTarget(BasicBlock basicBlock, java.util.BitSet jsrTargets)
-
searchEndBlock
protected static BasicBlock searchEndBlock(BasicBlock basicBlock, int maxOffset)
-
splitSequence
protected static BasicBlock splitSequence(BasicBlock basicBlock, int maxOffset)
-
updateBlock
protected static BasicBlock updateBlock(BasicBlock basicBlock, BasicBlock end, int maxOffset)
-
removeJsrAndMergeSubTry
protected static void removeJsrAndMergeSubTry(BasicBlock basicBlock)
-
reduceJsr
protected static boolean reduceJsr(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
-
reduceLoop
protected static boolean reduceLoop(java.util.BitSet visited, BasicBlock basicBlock, java.util.BitSet jsrTargets)
-
getLastConditionalBranch
protected static BasicBlock getLastConditionalBranch(java.util.BitSet visited, BasicBlock basicBlock)
-
visit
protected static void visit(java.util.BitSet visited, BasicBlock basicBlock, int maxOffset, java.util.HashSet<BasicBlock> ends)
-
replaceLoopStartWithSwitchBreak
protected static void replaceLoopStartWithSwitchBreak(java.util.BitSet visited, BasicBlock basicBlock)
-
searchUpdateBlockAndCreateContinueLoop
protected static BasicBlock searchUpdateBlockAndCreateContinueLoop(java.util.BitSet visited, BasicBlock basicBlock)
-
searchUpdateBlockAndCreateContinueLoop
protected static BasicBlock searchUpdateBlockAndCreateContinueLoop(java.util.BitSet visited, BasicBlock basicBlock, BasicBlock subBasicBlock)
-
removePredecessors
protected static void removePredecessors(BasicBlock basicBlock)
-
changeEndLoopToJump
protected static void changeEndLoopToJump(java.util.BitSet visited, BasicBlock target, BasicBlock basicBlock)
-
newJumpBasicBlock
protected static BasicBlock newJumpBasicBlock(BasicBlock bb, BasicBlock target)
-
clone
protected static BasicBlock clone(BasicBlock bb, BasicBlock next)
-
-