Class ControlFlowGraphReducer


  • public class ControlFlowGraphReducer
    extends java.lang.Object
    • Constructor Detail

      • ControlFlowGraphReducer

        public ControlFlowGraphReducer()
    • Method Detail

      • 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)
      • aggregateConditionalBranches

        protected static boolean aggregateConditionalBranches​(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)
      • 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)