Class Pass3bVerifier
java.lang.Object
org.apache.bcel.verifier.PassVerifier
org.apache.bcel.verifier.structurals.Pass3bVerifier
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class
An InstructionContextQueue is a utility class that holds (InstructionContext, ArrayList) pairs in a Queue data structure. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionPass3bVerifier
(Verifier owner, int method_no) This class should only be instantiated by a Verifier. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
circulationPump
(MethodGen m, ControlFlowGraph cfg, InstructionContext start, Frame vanillaFrame, InstConstraintVisitor icv, ExecutionVisitor ev) Whenever the outgoing frame situation of an InstructionContext changes, all its successors are put [back] into the queue [as if they were unvisited].Pass 3b implements the data flow analysis as described in the Java Virtual Machine Specification, Second Edition.int
Returns the method number as supplied when instantiating.void
invalidReturnTypeError
(Type returnedType, MethodGen m) Throws an exception indicating the returned type is not compatible with the return type of the given methodMethods inherited from class org.apache.bcel.verifier.PassVerifier
addMessage, getMessages, verify
-
Field Details
-
DEBUG
private static final boolean DEBUGIn DEBUG mode, the verification algorithm is not randomized.- See Also:
-
myOwner
The Verifier that created this. -
method_no
private final int method_noThe method number to verify.
-
-
Constructor Details
-
Pass3bVerifier
This class should only be instantiated by a Verifier.- See Also:
-
-
Method Details
-
circulationPump
private void circulationPump(MethodGen m, ControlFlowGraph cfg, InstructionContext start, Frame vanillaFrame, InstConstraintVisitor icv, ExecutionVisitor ev) Whenever the outgoing frame situation of an InstructionContext changes, all its successors are put [back] into the queue [as if they were unvisited]. The proof of termination is about the existence of a fix point of frame merging. -
invalidReturnTypeError
Throws an exception indicating the returned type is not compatible with the return type of the given method- Throws:
StructuralCodeConstraintException
- always- Since:
- 6.0
-
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 classPassVerifier
- See Also:
-
getMethodNo
public int getMethodNo()Returns the method number as supplied when instantiating.
-