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.
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:
- Tim Lindholm and Frank Yellin, "The Java Virtual Machine Specification 2nd Ed.", Addison-Wesley, 1999.
Class Summary Class Description AnalyzerA data-flow analyzer that determines the type state of the stack and local variable table at every reachable instruction in a method. ControlFlowRepresents the control flow graph of a given method. ControlFlow.BlockBasic block. ControlFlow.CatcherRepresents a catch clause. ControlFlow.NodeA node of (post) dominator trees. ExecutorExecutor is responsible for modeling the effects of a JVM instruction on a frame. FrameRepresents the stack frame and local variable table at a particular point in time. FramePrinterA utility class for printing a merged view of the frame state and the instructions of a method. MultiArrayTypeRepresents an array of
MultiTypeMultiType represents an unresolved type. SubroutineRepresents a nested method subroutine (marked by JSR and RET). SubroutineScannerDiscovers the subroutines in a method, and tracks all callers. TypeRepresents a JVM type in data-flow analysis. UtilA set of common utility methods.