Class Tracer

    • Field Detail

      • returnType

        protected String returnType
      • stackTop

        protected int stackTop
      • stackTypes

        protected TypeData[] stackTypes
      • localsTypes

        protected TypeData[] localsTypes
    • Method Detail

      • doOpcode

        protected int doOpcode​(int pos,
                               byte[] code)
                        throws BadBytecode
        Does abstract interpretation on the given bytecode instruction. It records whether or not a local variable (i.e. register) is accessed. If the instruction requires that a local variable or a stack element has a more specific type, this method updates the type of it.
        Parameters:
        pos - the position of the instruction.
        Returns:
        the size of the instruction at POS.
        Throws:
        BadBytecode
      • visitBranch

        protected void visitBranch​(int pos,
                                   byte[] code,
                                   int offset)
                            throws BadBytecode
        Throws:
        BadBytecode
      • visitGoto

        protected void visitGoto​(int pos,
                                 byte[] code,
                                 int offset)
                          throws BadBytecode
        Throws:
        BadBytecode
      • visitTableSwitch

        protected void visitTableSwitch​(int pos,
                                        byte[] code,
                                        int n,
                                        int offsetPos,
                                        int defaultOffset)
                                 throws BadBytecode
        Parameters:
        pos - the position of TABLESWITCH
        code - bytecode
        n - the number of case labels
        offsetPos - the position of the branch-target table.
        defaultOffset - the offset to the default branch target.
        Throws:
        BadBytecode
      • visitLookupSwitch

        protected void visitLookupSwitch​(int pos,
                                         byte[] code,
                                         int n,
                                         int pairsPos,
                                         int defaultOffset)
                                  throws BadBytecode
        Parameters:
        pos - the position of LOOKUPSWITCH
        code - bytecode
        n - the number of case labels
        pairsPos - the position of the table of pairs of a value and a branch target.
        defaultOffset - the offset to the default branch target.
        Throws:
        BadBytecode
      • visitJSR

        protected void visitJSR​(int pos,
                                byte[] code)
                         throws BadBytecode
        Invoked when the visited instruction is jsr. Java6 or later does not allow using RET.
        Throws:
        BadBytecode
      • visitRET

        protected void visitRET​(int pos,
                                byte[] code)
                         throws BadBytecode
        Invoked when the visited instruction is ret or wide ret. Java6 or later does not allow using RET.
        Throws:
        BadBytecode