org.objectweb.asm.util

Class CheckMethodAdapter

Implemented Interfaces:
MethodVisitor

public class CheckMethodAdapter
extends MethodAdapter

A MethodAdapter that checks that its methods are properly used. More precisely this code adapter checks each instruction individually (i.e., each visit method checks some preconditions based only on its arguments - such as the fact that the given opcode is correct for a given visit method), but does not check the sequence of instructions. For example, in a method whose signature is void m (), the invalid instruction IRETURN, or the invalid sequence IADD L2I will not be detected by this code adapter.
Author:
Eric Bruneton

Field Summary

Fields inherited from class org.objectweb.asm.MethodAdapter

mv

Constructor Summary

CheckMethodAdapter(MethodVisitor cv)
Constructs a new CheckMethodAdapter object.

Method Summary

AnnotationVisitor
visitAnnotation(String desc, boolean visible)
AnnotationVisitor
visitAnnotationDefault()
void
visitAttribute(Attribute attr)
void
visitCode()
void
visitEnd()
void
visitFieldInsn(int opcode, String owner, String name, String desc)
void
visitIincInsn(int var, int increment)
void
visitInsn(int opcode)
void
visitIntInsn(int opcode, int operand)
void
visitJumpInsn(int opcode, Label label)
void
visitLabel(Label label)
void
visitLdcInsn(Object cst)
void
visitLineNumber(int line, Label start)
void
visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index)
void
visitLookupSwitchInsn(Label dflt, keys[] , labels[] )
void
visitMaxs(int maxStack, int maxLocals)
void
visitMethodInsn(int opcode, String owner, String name, String desc)
void
visitMultiANewArrayInsn(String desc, int dims)
AnnotationVisitor
visitParameterAnnotation(int parameter, String desc, boolean visible)
void
visitTableSwitchInsn(int min, int max, Label dflt, labels[] )
void
visitTryCatchBlock(Label start, Label end, Label handler, String type)
void
visitTypeInsn(int opcode, String desc)
void
visitVarInsn(int opcode, int var)

Methods inherited from class org.objectweb.asm.MethodAdapter

visitAnnotation, visitAnnotationDefault, visitAttribute, visitCode, visitEnd, visitFieldInsn, visitIincInsn, visitInsn, visitIntInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLineNumber, visitLocalVariable, visitLookupSwitchInsn, visitMaxs, visitMethodInsn, visitMultiANewArrayInsn, visitParameterAnnotation, visitTableSwitchInsn, visitTryCatchBlock, visitTypeInsn, visitVarInsn

Constructor Details

CheckMethodAdapter

public CheckMethodAdapter(MethodVisitor cv)
Constructs a new CheckMethodAdapter object.
Parameters:
cv - the code visitor to which this adapter must delegate calls.

Method Details

visitAnnotation

public AnnotationVisitor visitAnnotation(String desc,
                                         boolean visible)
Specified by:
visitAnnotation in interface MethodVisitor
Overrides:
visitAnnotation in interface MethodAdapter

visitAnnotationDefault

public AnnotationVisitor visitAnnotationDefault()
Specified by:
visitAnnotationDefault in interface MethodVisitor
Overrides:
visitAnnotationDefault in interface MethodAdapter

visitAttribute

public void visitAttribute(Attribute attr)
Specified by:
visitAttribute in interface MethodVisitor
Overrides:
visitAttribute in interface MethodAdapter

visitCode

public void visitCode()
Specified by:
visitCode in interface MethodVisitor
Overrides:
visitCode in interface MethodAdapter

visitEnd

public void visitEnd()
Specified by:
visitEnd in interface MethodVisitor
Overrides:
visitEnd in interface MethodAdapter

visitFieldInsn

public void visitFieldInsn(int opcode,
                           String owner,
                           String name,
                           String desc)
Specified by:
visitFieldInsn in interface MethodVisitor
Overrides:
visitFieldInsn in interface MethodAdapter

visitIincInsn

public void visitIincInsn(int var,
                          int increment)
Specified by:
visitIincInsn in interface MethodVisitor
Overrides:
visitIincInsn in interface MethodAdapter

visitInsn

public void visitInsn(int opcode)
Specified by:
visitInsn in interface MethodVisitor
Overrides:
visitInsn in interface MethodAdapter

visitIntInsn

public void visitIntInsn(int opcode,
                         int operand)
Specified by:
visitIntInsn in interface MethodVisitor
Overrides:
visitIntInsn in interface MethodAdapter

visitJumpInsn

public void visitJumpInsn(int opcode,
                          Label label)
Specified by:
visitJumpInsn in interface MethodVisitor
Overrides:
visitJumpInsn in interface MethodAdapter

visitLabel

public void visitLabel(Label label)
Specified by:
visitLabel in interface MethodVisitor
Overrides:
visitLabel in interface MethodAdapter

visitLdcInsn

public void visitLdcInsn(Object cst)
Specified by:
visitLdcInsn in interface MethodVisitor
Overrides:
visitLdcInsn in interface MethodAdapter

visitLineNumber

public void visitLineNumber(int line,
                            Label start)
Specified by:
visitLineNumber in interface MethodVisitor
Overrides:
visitLineNumber in interface MethodAdapter

visitLocalVariable

public void visitLocalVariable(String name,
                               String desc,
                               String signature,
                               Label start,
                               Label end,
                               int index)
Specified by:
visitLocalVariable in interface MethodVisitor
Overrides:
visitLocalVariable in interface MethodAdapter

visitLookupSwitchInsn

public void visitLookupSwitchInsn(Label dflt,
                                  keys[] ,
                                  labels[] )
Specified by:
visitLookupSwitchInsn in interface MethodVisitor
Overrides:
visitLookupSwitchInsn in interface MethodAdapter

visitMaxs

public void visitMaxs(int maxStack,
                      int maxLocals)
Specified by:
visitMaxs in interface MethodVisitor
Overrides:
visitMaxs in interface MethodAdapter

visitMethodInsn

public void visitMethodInsn(int opcode,
                            String owner,
                            String name,
                            String desc)
Specified by:
visitMethodInsn in interface MethodVisitor
Overrides:
visitMethodInsn in interface MethodAdapter

visitMultiANewArrayInsn

public void visitMultiANewArrayInsn(String desc,
                                    int dims)
Specified by:
visitMultiANewArrayInsn in interface MethodVisitor
Overrides:
visitMultiANewArrayInsn in interface MethodAdapter

visitParameterAnnotation

public AnnotationVisitor visitParameterAnnotation(int parameter,
                                                  String desc,
                                                  boolean visible)
Specified by:
visitParameterAnnotation in interface MethodVisitor
Overrides:
visitParameterAnnotation in interface MethodAdapter

visitTableSwitchInsn

public void visitTableSwitchInsn(int min,
                                 int max,
                                 Label dflt,
                                 labels[] )
Specified by:
visitTableSwitchInsn in interface MethodVisitor
Overrides:
visitTableSwitchInsn in interface MethodAdapter

visitTryCatchBlock

public void visitTryCatchBlock(Label start,
                               Label end,
                               Label handler,
                               String type)
Specified by:
visitTryCatchBlock in interface MethodVisitor
Overrides:
visitTryCatchBlock in interface MethodAdapter

visitTypeInsn

public void visitTypeInsn(int opcode,
                          String desc)
Specified by:
visitTypeInsn in interface MethodVisitor
Overrides:
visitTypeInsn in interface MethodAdapter

visitVarInsn

public void visitVarInsn(int opcode,
                         int var)
Specified by:
visitVarInsn in interface MethodVisitor
Overrides:
visitVarInsn in interface MethodAdapter