Class Pass3bVerifier


  • public final class Pass3bVerifier
    extends PassVerifier
    This PassVerifier verifies a method of class file according to pass 3, so-called structural verification as described in The Java Virtual Machine Specification, 2nd edition. More detailed information is to be found at the do_verify() method's documentation.
    See Also:
    do_verify()
    • Field Detail

      • DEBUG

        private static final boolean DEBUG
        In DEBUG mode, the verification algorithm is not randomized.
        See Also:
        Constant Field Values
      • myOwner

        private final Verifier myOwner
        The Verifier that created this.
      • methodNo

        private final int methodNo
        The method number to verify.
    • Constructor Detail

      • Pass3bVerifier

        public Pass3bVerifier​(Verifier myOwner,
                              int methodNo)
        This class should only be instantiated by a Verifier.
        See Also:
        Verifier
    • Method Detail

      • do_verify

        public VerificationResult do_verify()
        Pass 3b implements the data flow analysis as described in the Java Virtual Machine Specification, Second Edition. Later versions will use LocalVariablesInfo objects to verify if the verifier-inferred types and the class file's debug information (LocalVariables attributes) match [TODO].
        Specified by:
        do_verify in class PassVerifier
        Returns:
        The VerificationResult
        See Also:
        LocalVariablesInfo, Pass2Verifier.getLocalVariablesInfo(int)
      • getMethodNo

        public int getMethodNo()
        Returns the method number as supplied when instantiating.
      • invalidReturnTypeError

        public void invalidReturnTypeError​(Type returnedType,
                                           MethodGen m)
        Throws an exception indicating the returned type is not compatible with the return type of the given method.
        Parameters:
        returnedType - the type of the returned expression
        m - the method we are processing
        Throws:
        StructuralCodeConstraintException - always
        Since:
        6.0