| |
|
| java.lang.Object com.tc.asm.tree.analysis.Analyzer
Analyzer | public class Analyzer implements Opcodes(Code) | | A semantic bytecode analyzer. This class does not fully check that JSR and
RET instructions are valid.
author: Eric Bruneton |
Method Summary | |
public Frame[] | analyze(String owner, MethodNode m) Analyzes the given method.
Parameters: owner - the internal name of the class to which the method belongs. Parameters: m - the method to be analyzed. | public Frame[] | getFrames() Returns the symbolic stack frame for each instruction of the last
recently analyzed method.
the symbolic state of the execution stack frame at each bytecodeinstruction of the method. | public List | getHandlers(int insn) Returns the exception handlers for the given instruction.
Parameters: insn - the index of an instruction of the last recently analyzedmethod. | protected void | newControlFlowEdge(int insn, int successor) Creates a control flow graph edge. | protected boolean | newControlFlowExceptionEdge(int insn, int successor) Creates a control flow graph edge corresponding to an exception handler.
The default implementation of this method does nothing. | protected Frame | newFrame(int nLocals, int nStack) Constructs a new frame with the given size.
Parameters: nLocals - the maximum number of local variables of the frame. Parameters: nStack - the maximum stack size of the frame. | protected Frame | newFrame(Frame src) Constructs a new frame that is identical to the given frame.
Parameters: src - a frame. |
Analyzer | public Analyzer(Interpreter interpreter)(Code) | | Constructs a new
Analyzer .
Parameters: interpreter - the interpreter to be used to symbolically interpretthe bytecode instructions. |
analyze | public Frame[] analyze(String owner, MethodNode m) throws AnalyzerException(Code) | | Analyzes the given method.
Parameters: owner - the internal name of the class to which the method belongs. Parameters: m - the method to be analyzed. the symbolic state of the execution stack frame at each bytecodeinstruction of the method. The size of the returned array isequal to the number of instructions (and labels) of the method. Agiven frame is null if and only if the correspondinginstruction cannot be reached (dead code). throws: AnalyzerException - if a problem occurs during the analysis. |
getFrames | public Frame[] getFrames()(Code) | | Returns the symbolic stack frame for each instruction of the last
recently analyzed method.
the symbolic state of the execution stack frame at each bytecodeinstruction of the method. The size of the returned array isequal to the number of instructions (and labels) of the method. Agiven frame is null if the corresponding instructioncannot be reached, or if an error occured during the analysis ofthe method. |
getHandlers | public List getHandlers(int insn)(Code) | | Returns the exception handlers for the given instruction.
Parameters: insn - the index of an instruction of the last recently analyzedmethod. a list of TryCatchBlockNode objects. |
newControlFlowEdge | protected void newControlFlowEdge(int insn, int successor)(Code) | | Creates a control flow graph edge. The default implementation of this
method does nothing. It can be overriden in order to construct the
control flow graph of a method (this method is called by the
Analyzer.analyze analyze method during its visit of the method's code).
Parameters: insn - an instruction index. Parameters: successor - index of a successor instruction. |
newControlFlowExceptionEdge | protected boolean newControlFlowExceptionEdge(int insn, int successor)(Code) | | Creates a control flow graph edge corresponding to an exception handler.
The default implementation of this method does nothing. It can be
overriden in order to construct the control flow graph of a method (this
method is called by the
Analyzer.analyze analyze method during its visit
of the method's code).
Parameters: insn - an instruction index. Parameters: successor - index of a successor instruction. true if this edge must be considered in the data flow analysisperformed by this analyzer, or false otherwise. The defaultimplementation of this method always returns true. |
newFrame | protected Frame newFrame(int nLocals, int nStack)(Code) | | Constructs a new frame with the given size.
Parameters: nLocals - the maximum number of local variables of the frame. Parameters: nStack - the maximum stack size of the frame. the created frame. |
newFrame | protected Frame newFrame(Frame src)(Code) | | Constructs a new frame that is identical to the given frame.
Parameters: src - a frame. the created frame. |
|
|
|