Class Analyzer

  • Direct Known Subclasses:
    Verifier

    public class Analyzer
    extends java.lang.Object
    • Field Detail

      • isConstructor

        protected final boolean isConstructor
      • isStatic

        protected final boolean isStatic
      • classType

        protected final java.lang.String classType
      • signature

        protected final java.lang.String signature
      • maxStack

        protected int maxStack
      • maxLocals

        protected int maxLocals
      • stacks

        protected java.lang.String[][] stacks
      • locals

        protected java.lang.String[][] locals
      • stackSizes

        protected int[] stackSizes
      • basicBlockStarts

        protected java.util.BitSet basicBlockStarts
      • backEdges

        protected int[][] backEdges
      • instToBC

        protected int[] instToBC
      • varTypes

        protected java.lang.String[][] varTypes
      • noStrings

        protected static final java.lang.String[] noStrings
      • noEdges

        protected static final int[] noEdges
    • Constructor Detail

      • Analyzer

        public Analyzer​(boolean isConstructor,
                        boolean isStatic,
                        java.lang.String classType,
                        java.lang.String signature,
                        IInstruction[] instructions,
                        ExceptionHandler[][] handlers,
                        int[] instToBC,
                        java.lang.String[][] vars)
      • Analyzer

        protected Analyzer​(MethodData info)
      • Analyzer

        protected Analyzer​(MethodData info,
                           int[] instToBC,
                           java.lang.String[][] vars)
    • Method Detail

      • setClassHierarchy

        public final void setClassHierarchy​(ClassHierarchyProvider h)
        Use class hierarchy information in 'h'. If this method is not called or h provides only partial hierarchy information, the verifier behaves optimistically.
      • getBackEdges

        public final int[][] getBackEdges()
      • isSubtypeOf

        public final boolean isSubtypeOf​(java.lang.String t1,
                                         java.lang.String t2)
      • findCommonSupertype

        public final java.lang.String findCommonSupertype​(java.lang.String t1,
                                                          java.lang.String t2)
      • getBasicBlockStarts

        public final java.util.BitSet getBasicBlockStarts()
      • getInstructions

        public final IInstruction[] getInstructions()
      • getReachableFrom

        public final java.util.BitSet getReachableFrom​(int from)
      • getReachableFromUpdate

        public final void getReachableFromUpdate​(int from,
                                                 java.util.BitSet reachable,
                                                 boolean followHandlers,
                                                 java.util.BitSet mask)
      • getReachableFrom

        public final java.util.BitSet getReachableFrom​(int from,
                                                       boolean followHandlers,
                                                       java.util.BitSet mask)
      • getReachingToUpdate

        public final void getReachingToUpdate​(int to,
                                              java.util.BitSet reaching,
                                              java.util.BitSet mask)
      • stripSharp

        public static java.lang.String stripSharp​(java.lang.String type)
      • getLocalTypes

        public final java.lang.String[][] getLocalTypes()
        Returns:
        an array indexed by instruction index; each entry is an array of Strings giving the types of the locals at that instruction.
      • getStackTypes

        public final java.lang.String[][] getStackTypes()
        Returns:
        an array indexed by instruction index; each entry is an array of Strings giving the types of the stack elements at that instruction. The top of the stack is the last element of the array.