# Package javassist.bytecode.analysis

package javassist.bytecode.analysis
Bytecode Analysis API.

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:

- Tim Lindholm and Frank Yellin, "The Java Virtual Machine Specification 2nd Ed.", Addison-Wesley, 1999.

Related Packages
Package
Description
javassist.bytecode
Bytecode-level API.
javassist.bytecode.annotation
Bytecode-level Annotations API.
Classes
Class
Description
Analyzer
A data-flow analyzer that determines the type state of the stack and local variable table at every reachable instruction in a method.
ControlFlow
Represents the control flow graph of a given method.
ControlFlow.Block
Basic block.
ControlFlow.Catcher
Represents a catch clause.
ControlFlow.Node
A node of (post) dominator trees.
Executor
Executor is responsible for modeling the effects of a JVM instruction on a frame.
Frame
Represents the stack frame and local variable table at a particular point in time.
FramePrinter
A utility class for printing a merged view of the frame state and the instructions of a method.
MultiArrayType
Represents an array of `MultiType` instances.
MultiType
MultiType represents an unresolved type.
Subroutine
Represents a nested method subroutine (marked by JSR and RET).
SubroutineScanner
Discovers the subroutines in a method, and tracks all callers.
Type
Represents a JVM type in data-flow analysis.
Util
A set of common utility methods.