Class Pass3aVerifier


  • public final class Pass3aVerifier
    extends PassVerifier
    This PassVerifier verifies a class file according to pass 3, static part 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()
    • Constructor Summary

      Constructors 
      Constructor Description
      Pass3aVerifier​(Verifier verifier, int methodNo)
      Should only be instantiated by a Verifier.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      VerificationResult do_verify()
      Pass 3a is the verification of static constraints of JVM code (such as legal targets of branch instructions).
      int getMethodNo()
      Returns the method number as supplied when instantiating.
      protected java.lang.String tostring​(java.lang.Object obj)
      This method is a slightly modified version of verifier.statics.StringRepresentation.toString(final Node obj) that accepts any Object, not just a Node.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Pass3aVerifier

        public Pass3aVerifier​(Verifier verifier,
                              int methodNo)
        Should only be instantiated by a Verifier.
    • Method Detail

      • do_verify

        public VerificationResult do_verify()
        Pass 3a is the verification of static constraints of JVM code (such as legal targets of branch instructions). This is the part of pass 3 where you do not need data flow analysis. JustIce also delays the checks for a correct exception table of a Code attribute and correct line number entries in a LineNumberTable attribute of a Code attribute (which conceptually belong to pass 2) to this pass. Also, most of the check for valid local variable entries in a LocalVariableTable attribute of a Code attribute is delayed until this pass. All these checks need access to the code array of the Code attribute.
        Specified by:
        do_verify in class PassVerifier
        Returns:
        The VerificationResult
        Throws:
        InvalidMethodException - if the method to verify does not exist.
      • getMethodNo

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

        protected java.lang.String tostring​(java.lang.Object obj)
        This method is a slightly modified version of verifier.statics.StringRepresentation.toString(final Node obj) that accepts any Object, not just a Node. Returns the String representation of the Object obj; this is obj.toString() if it does not throw any RuntimeException, or else it is a string derived only from obj's class name.