Package net.bytebuddy.asm
Class Advice.AdviceVisitor
java.lang.Object
org.objectweb.asm.MethodVisitor
net.bytebuddy.utility.visitor.ExceptionTableSensitiveMethodVisitor
net.bytebuddy.asm.Advice.AdviceVisitor
- All Implemented Interfaces:
Advice.Dispatcher.RelocationHandler.Relocation
- Direct Known Subclasses:
Advice.AdviceVisitor.WithExitAdvice
,Advice.AdviceVisitor.WithoutExitAdvice
- Enclosing class:
- Advice
protected abstract static class Advice.AdviceVisitor
extends ExceptionTableSensitiveMethodVisitor
implements Advice.Dispatcher.RelocationHandler.Relocation
A method visitor that weaves the advice methods' byte codes.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static class
An advice visitor that applies exit advice.protected static class
An advice visitor that does not apply exit advice.Nested classes/interfaces inherited from interface net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.Relocation
Advice.Dispatcher.RelocationHandler.Relocation.ForLabel
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Advice.ArgumentHandler.ForInstrumentedMethod
The handler for accessing arguments of the method's local variable array.protected final MethodDescription
A description of the instrumented method.private final Advice.Dispatcher.Bound
The dispatcher to be used for method enter.protected final Advice.Dispatcher.Bound
The dispatcher to be used for method exit.protected final Advice.MethodSizeHandler.ForInstrumentedMethod
A handler for computing the method size requirements.private final org.objectweb.asm.Label
A label that indicates the start of the preparation of a user method execution.protected final Advice.StackMapFrameHandler.ForInstrumentedMethod
A handler for translating and injecting stack map frames.private static final int
The expected index for thethis
variable.private static final String
The expected name for thethis
variable.Fields inherited from class org.objectweb.asm.MethodVisitor
api, mv
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
AdviceVisitor
(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, StackManipulation exceptionHandler, TypeDescription instrumentedType, MethodDescription instrumentedMethod, Advice.Dispatcher.Resolved.ForMethodEnter methodEnter, Advice.Dispatcher.Resolved.ForMethodExit methodExit, List<? extends TypeDescription> postMethodTypes, int writerFlags, int readerFlags) Creates a new advice visitor. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Invoked after the exception table was visited.protected abstract void
Writes the advice for completing the instrumented method.protected abstract void
Invoked when the user method's exception handler (if any) is supposed to be prepared.protected abstract void
Writes the advice for entering the instrumented method.void
onVisitFrame
(int type, int localVariableLength, Object[] localVariable, int stackSize, Object[] stack) Visits a stack map frame.protected void
onVisitIincInsn
(int offset, int increment) Visits an increment instruction.protected void
onVisitVarInsn
(int opcode, int offset) Visits an variable instruction.void
visitLocalVariable
(String name, String descriptor, String signature, org.objectweb.asm.Label start, org.objectweb.asm.Label end, int index) org.objectweb.asm.AnnotationVisitor
visitLocalVariableAnnotation
(int typeReference, org.objectweb.asm.TypePath typePath, org.objectweb.asm.Label[] start, org.objectweb.asm.Label[] end, int[] index, String descriptor, boolean visible) void
visitMaxs
(int stackSize, int localVariableLength) Methods inherited from class net.bytebuddy.utility.visitor.ExceptionTableSensitiveMethodVisitor
onVisitFieldInsn, onVisitInsn, onVisitIntInsn, onVisitInvokeDynamicInsn, onVisitJumpInsn, onVisitLabel, onVisitLdcInsn, onVisitLookupSwitchInsn, onVisitMethodInsn, onVisitMethodInsn, onVisitMultiANewArrayInsn, onVisitTableSwitchInsn, onVisitTypeInsn, visitFieldInsn, visitFrame, visitIincInsn, visitInsn, visitIntInsn, visitInvokeDynamicInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLookupSwitchInsn, visitMethodInsn, visitMethodInsn, visitMultiANewArrayInsn, visitTableSwitchInsn, visitTypeInsn, visitVarInsn
Methods inherited from class org.objectweb.asm.MethodVisitor
visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitCode, visitEnd, visitInsnAnnotation, visitLineNumber, visitParameter, visitParameterAnnotation, visitTryCatchAnnotation, visitTryCatchBlock, visitTypeAnnotation
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.Relocation
apply
-
Field Details
-
THIS_VARIABLE_INDEX
private static final int THIS_VARIABLE_INDEXThe expected index for thethis
variable.- See Also:
-
THIS_VARIABLE_NAME
The expected name for thethis
variable.- See Also:
-
instrumentedMethod
A description of the instrumented method. -
preparationStart
private final org.objectweb.asm.Label preparationStartA label that indicates the start of the preparation of a user method execution. -
methodEnter
The dispatcher to be used for method enter. -
methodExit
The dispatcher to be used for method exit. -
argumentHandler
The handler for accessing arguments of the method's local variable array. -
methodSizeHandler
A handler for computing the method size requirements. -
stackMapFrameHandler
A handler for translating and injecting stack map frames.
-
-
Constructor Details
-
AdviceVisitor
protected AdviceVisitor(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, StackManipulation exceptionHandler, TypeDescription instrumentedType, MethodDescription instrumentedMethod, Advice.Dispatcher.Resolved.ForMethodEnter methodEnter, Advice.Dispatcher.Resolved.ForMethodExit methodExit, List<? extends TypeDescription> postMethodTypes, int writerFlags, int readerFlags) Creates a new advice visitor.- Parameters:
methodVisitor
- The actual method visitor that is underlying this method visitor to which all instructions are written.implementationContext
- The implementation context to use.assigner
- The assigner to use.exceptionHandler
- The stack manipulation to apply within a suppression handler.instrumentedType
- A description of the instrumented type.instrumentedMethod
- The instrumented method.methodEnter
- The method enter advice.methodExit
- The method exit advice.postMethodTypes
- A list of virtual method arguments that are available after the instrumented method has completed.writerFlags
- The ASM writer flags that were set.readerFlags
- The ASM reader flags that were set.
-
-
Method Details
-
onAfterExceptionTable
protected void onAfterExceptionTable()Description copied from class:ExceptionTableSensitiveMethodVisitor
Invoked after the exception table was visited. Typically, the exception table is visited by ASM at the beginning of a method. It is however possible that a user adds exception table entries at a later point. Normally, this is however not meaningful use of ASM.- Specified by:
onAfterExceptionTable
in classExceptionTableSensitiveMethodVisitor
-
onUserPrepare
protected abstract void onUserPrepare()Invoked when the user method's exception handler (if any) is supposed to be prepared. -
onUserStart
protected abstract void onUserStart()Writes the advice for entering the instrumented method. -
onVisitVarInsn
protected void onVisitVarInsn(int opcode, int offset) Description copied from class:ExceptionTableSensitiveMethodVisitor
Visits an variable instruction.- Overrides:
onVisitVarInsn
in classExceptionTableSensitiveMethodVisitor
- Parameters:
opcode
- The visited opcode.offset
- The visited offset.
-
onVisitIincInsn
protected void onVisitIincInsn(int offset, int increment) Description copied from class:ExceptionTableSensitiveMethodVisitor
Visits an increment instruction.- Overrides:
onVisitIincInsn
in classExceptionTableSensitiveMethodVisitor
- Parameters:
offset
- The offset of the accessed variable.increment
- The value with which to increment.
-
onVisitFrame
public void onVisitFrame(int type, int localVariableLength, @MaybeNull Object[] localVariable, int stackSize, @MaybeNull Object[] stack) Description copied from class:ExceptionTableSensitiveMethodVisitor
Visits a stack map frame.- Overrides:
onVisitFrame
in classExceptionTableSensitiveMethodVisitor
- Parameters:
type
- The type of stack map frame.localVariableLength
- The length of the local variable array.localVariable
- An array containing type symbols for all values in the local variable array.stackSize
- The size of the operand stack.stack
- An array containing type symbols for all values on the operand stack.
-
visitMaxs
public void visitMaxs(int stackSize, int localVariableLength) - Overrides:
visitMaxs
in classorg.objectweb.asm.MethodVisitor
-
visitLocalVariable
public void visitLocalVariable(String name, String descriptor, String signature, org.objectweb.asm.Label start, org.objectweb.asm.Label end, int index) - Overrides:
visitLocalVariable
in classorg.objectweb.asm.MethodVisitor
-
visitLocalVariableAnnotation
public org.objectweb.asm.AnnotationVisitor visitLocalVariableAnnotation(int typeReference, org.objectweb.asm.TypePath typePath, org.objectweb.asm.Label[] start, org.objectweb.asm.Label[] end, int[] index, String descriptor, boolean visible) - Overrides:
visitLocalVariableAnnotation
in classorg.objectweb.asm.MethodVisitor
-
onUserEnd
protected abstract void onUserEnd()Writes the advice for completing the instrumented method.
-