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
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


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