This package provides an API for performing data-flow analysis on a method's bytecode.
This allows the user to determine the type state of the stack and local variable table
at the start of every instruction. In addition this API can be used to validate
bytecode, find dead bytecode, and identify unnecessary checkcasts.
Look at ControlFlow class first for details.
The users of this package must know the specifications of class file and Java bytecode. For more details, read this book:
| Modifier and Type | Class and Description |
|---|---|
| public class | Analyzer
A data-flow analyzer that determines the type state of the stack and local variable table at every reachable instruction in a method. |
| public class | ControlFlow
Represents the control flow graph of a given method. |
| public class | Executor
Executor is responsible for modeling the effects of a JVM instruction on a frame. |
| public class | Frame
Represents the stack frame and local variable table at a particular point in time. |
| public class | FramePrinter
A utility class for printing a merged view of the frame state and the instructions of a method. |
| pack-priv class | |
| public class | MultiArrayType
Represents an array of |
| public class | MultiType
MultiType represents an unresolved type. |
| public class | Subroutine
Represents a nested method subroutine (marked by JSR and RET). |
| public class | SubroutineScanner
Discovers the subroutines in a method, and tracks all callers. |
| public class | Type
Represents a JVM type in data-flow analysis. |
| public class | Util
A set of common utility methods. |