do_verify()
| Modifier and Type | Class and Description |
|---|---|
| private static class | Pass3bVerifier.InstructionContextQueue
An InstructionContextQueue is a utility class that holds (InstructionContext, ArrayList) pairs in a Queue data structure. |
| Modifier and Type | Field and Description |
|---|---|
| private static final boolean | DEBUG
In DEBUG mode, the verification algorithm is not randomized. |
| private final int | methodNo
The method number to verify. |
| private final Verifier | myOwner
The Verifier that created this. |
| Access | Constructor and Description |
|---|---|
| public | Pass3bVerifier(final Verifier myOwner, final int methodNo)
This class should only be instantiated by a Verifier. |
| Modifier and Type | Method and Description |
|---|---|
| private void | circulationPump(final MethodGen m, final ControlFlowGraph cfg, final InstructionContext start, final Frame vanillaFrame, final InstConstraintVisitor icv, final 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]. |
| public VerificationResult | do_verify()
Implements abstract org. |
| public int | |
| public void | invalidReturnTypeError(final Type
the type of the returned expression returnedType, final MethodGen the method we are processing m)Throws an exception indicating the returned type is not compatible with the return type of the given method. |
| DEBUG | back to summary |
|---|---|
| private static final boolean DEBUG In DEBUG mode, the verification algorithm is not randomized. | |
| methodNo | back to summary |
|---|---|
| private final int methodNo The method number to verify. | |
| myOwner | back to summary |
|---|---|
| private final Verifier myOwner The Verifier that created this. | |
| Pass3bVerifier | back to summary |
|---|---|
| public Pass3bVerifier(final Verifier myOwner, final int methodNo) This class should only be instantiated by a Verifier.
| |
| circulationPump | back to summary |
|---|---|
| private void circulationPump(final MethodGen m, final ControlFlowGraph cfg, final InstructionContext start, final Frame vanillaFrame, final InstConstraintVisitor icv, final 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. | |
| do_verify | back to summary |
|---|---|
| public VerificationResult do_verify() Implements abstract org. 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].
| |
| getMethodNo | back to summary |
|---|---|
| public int getMethodNo() Returns the method number as supplied when instantiating. | |
| invalidReturnTypeError | back to summary |
|---|---|
| public void invalidReturnTypeError(final Type returnedType, final MethodGen m) Throws an exception indicating the returned type is not compatible with the return type of the given method.
| |
| Modifier and Type | Field and Description |
|---|---|
| private final List | ecs
The second elements from pairs in the queue. |
| private final List | ics
The first elements from pairs in the queue. |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public void | add(final InstructionContext
the InstructionContext ic, final ArrayList<InstructionContext> the ExecutionChain executionChain)Adds an (InstructionContext, ExecutionChain) pair to this queue. |
| public ArrayList | Returns: the indicated ExecutionChainthe index of the item to be fetched i)Gets a specific ExecutionChain from the queue. |
| public InstructionContext | Returns: the indicated InstructionContextthe index of the item to be fetched i)Gets a specific InstructionContext from the queue. |
| public boolean | Returns: true if the InstructionContext queue is empty.Tests if InstructionContext queue is empty. |
| public void | remove(final int
the index of the items to be removed i)Removes a specific (InstructionContext, ExecutionChain) pair from their respective queues. |
| public int |
| ecs | back to summary |
|---|---|
| private final List<ArrayList<InstructionContext>> ecs The second elements from pairs in the queue. | |
| ics | back to summary |
|---|---|
| private final List<InstructionContext> ics The first elements from pairs in the queue. | |
| InstructionContextQueue | back to summary |
|---|---|
| private InstructionContextQueue() | |
| add | back to summary |
|---|---|
| public void add(final InstructionContext ic, final ArrayList<InstructionContext> executionChain) Adds an (InstructionContext, ExecutionChain) pair to this queue.
| |
| getEC | back to summary |
|---|---|
| public ArrayList Gets a specific ExecutionChain from the queue.
| |
| getIC | back to summary |
|---|---|
| public InstructionContext getIC(final int i) Gets a specific InstructionContext from the queue.
| |
| isEmpty | back to summary |
|---|---|
| public boolean isEmpty() Tests if InstructionContext queue is empty.
| |
| remove | back to summary |
|---|---|
| public void remove(final int i) Removes a specific (InstructionContext, ExecutionChain) pair from their respective queues.
| |
| size | back to summary |
|---|---|
| public int size() Gets the size of the InstructionContext queue.
| |