Class AstOptimizer


  • public final class AstOptimizer
    extends java.lang.Object
    • Field Detail

      • LOG

        private static final java.util.logging.Logger LOG
      • _nextLabelIndex

        private int _nextLabelIndex
      • SCRATCH_BOOLEAN_BOX

        private static final BooleanBox SCRATCH_BOOLEAN_BOX
    • Constructor Detail

      • AstOptimizer

        public AstOptimizer()
    • Method Detail

      • removeUnreachableBlocks

        private static void removeUnreachableBlocks​(Block method)
      • cleanUpTryBlocks

        private static void cleanUpTryBlocks​(Block method)
      • rewriteFinallyBlocks

        private static void rewriteFinallyBlocks​(Block method)
      • rewriteSynchronized

        private static void rewriteSynchronized​(Block method)
      • rewriteSynchronizedCore

        private static boolean rewriteSynchronizedCore​(TryCatchBlock tryCatch,
                                                       int depth)
      • inlineLockAccess

        private static void inlineLockAccess​(Node owner,
                                             java.util.List<Node> body,
                                             LockInfo lockInfo)
      • isEmptyTryCatch

        private static boolean isEmptyTryCatch​(TryCatchBlock tryCatch)
      • introducePreIncrementOptimization

        private static void introducePreIncrementOptimization​(DecompilerContext context,
                                                              Block method)
      • introducePreIncrementForVariables

        private static boolean introducePreIncrementForVariables​(java.util.List<Node> body,
                                                                 MutableInteger position)
      • introducePreIncrementForStaticFields

        private static boolean introducePreIncrementForStaticFields​(java.util.List<Node> body,
                                                                    MutableInteger position,
                                                                    Inlining inlining)
      • introducePreIncrementForInstanceFields

        private static boolean introducePreIncrementForInstanceFields​(java.util.List<Node> body,
                                                                      MutableInteger position,
                                                                      Inlining inlining)
      • reduceBranchInstructionSet

        private static void reduceBranchInstructionSet​(Block block)
      • reduceComparisonInstructionSet

        private static void reduceComparisonInstructionSet​(Expression expression)
      • splitToMovableBlocks

        private void splitToMovableBlocks​(Block block)
      • checkExit

        private Label checkExit​(Node node)
      • mergeDisparateObjectInitializations

        private static boolean mergeDisparateObjectInitializations​(DecompilerContext context,
                                                                   Block method)
      • flattenBasicBlocks

        private static boolean flattenBasicBlocks​(Node node)
      • duplicateReturnStatements

        private static void duplicateReturnStatements​(Block method)
      • reduceIfNesting

        private static void reduceIfNesting​(Node node)
      • recombineVariables

        private static void recombineVariables​(Block method)
      • removeOrThrow

        static <T> void removeOrThrow​(java.util.Collection<T> collection,
                                      T item)
      • removeTail

        static void removeTail​(java.util.List<Node> body,
                               AstCode... codes)
      • simplifyLogicalNotArgument

        static boolean simplifyLogicalNotArgument​(Expression e)
      • negate

        private static boolean negate​(Expression e)
      • canSimplifyLogicalNotArgument

        private static boolean canSimplifyLogicalNotArgument​(Expression e)
      • references

        static boolean references​(Node node,
                                  Variable v)
      • containsMatch

        private static boolean containsMatch​(Node node,
                                             Expression pattern)