Package net.bytebuddy.asm
Class Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner
- java.lang.Object
-
- org.objectweb.asm.ClassVisitor
-
- net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner
-
- All Implemented Interfaces:
Advice.Dispatcher.Bound
- Enclosing class:
- Advice.Dispatcher.Inlining.Resolved
protected class Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner extends org.objectweb.asm.ClassVisitor implements Advice.Dispatcher.Bound
A bound advice method that copies the code by first extracting the exception table and later appending the code of the method without copying any meta data.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classAdvice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableCollectorA visitor that only writes try-catch-finally blocks to the supplied method visitor.protected classAdvice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableExtractorA class visitor that extracts the exception tables of the advice method.protected classAdvice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableSubstitutorA label substitutor allows to visit an advice method a second time after the exception handlers were already written.
-
Field Summary
Fields Modifier and Type Field Description protected Advice.ArgumentHandler.ForInstrumentedMethodargumentHandlerA handler for accessing values on the local variable array.protected AssignerassignerThe assigner to use.protected AsmClassReaderclassReaderA class reader for parsing the class file containing the represented advice method.protected StackManipulationexceptionHandlerThe exception handler that is resolved for the instrumented method.protected Implementation.ContextimplementationContextThe implementation context to use.protected MethodDescriptioninstrumentedMethodThe instrumented method.protected TypeDescriptioninstrumentedTypeA description of the instrumented type.protected java.util.List<org.objectweb.asm.Label>labelsThe labels that were found during parsing the method's exception handler in the order of their discovery.protected Advice.MethodSizeHandler.ForInstrumentedMethodmethodSizeHandlerA handler for computing the method size requirements.protected org.objectweb.asm.MethodVisitormethodVisitorThe method visitor for writing the instrumented method.protected Advice.Dispatcher.RelocationHandler.BoundrelocationHandlerA bound relocation handler that is responsible for considering a non-standard control flow.protected Advice.StackMapFrameHandler.ForInstrumentedMethodstackMapFrameHandlerA handler for translating and injecting stack map frames.protected Advice.Dispatcher.SuppressionHandler.BoundsuppressionHandlerA bound suppression handler that is used for suppressing exceptions of this advice method.
-
Constructor Summary
Constructors Modifier Constructor Description protectedAdviceMethodInliner(TypeDescription instrumentedType, MethodDescription instrumentedMethod, org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, Advice.ArgumentHandler.ForInstrumentedMethod argumentHandler, Advice.MethodSizeHandler.ForInstrumentedMethod methodSizeHandler, Advice.StackMapFrameHandler.ForInstrumentedMethod stackMapFrameHandler, Advice.Dispatcher.SuppressionHandler.Bound suppressionHandler, Advice.Dispatcher.RelocationHandler.Bound relocationHandler, StackManipulation exceptionHandler, AsmClassReader classReader)Creates a new advice method inliner.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidapply()Applies this dispatcher.voidinitialize()Initialized the advice's methods local variables.voidprepare()Prepares the advice method's exception handlers.org.objectweb.asm.MethodVisitorvisitMethod(int modifiers, java.lang.String internalName, java.lang.String descriptor, java.lang.String signature, java.lang.String[] exception)
-
-
-
Field Detail
-
instrumentedType
protected final TypeDescription instrumentedType
A description of the instrumented type.
-
instrumentedMethod
protected final MethodDescription instrumentedMethod
The instrumented method.
-
methodVisitor
protected final org.objectweb.asm.MethodVisitor methodVisitor
The method visitor for writing the instrumented method.
-
implementationContext
protected final Implementation.Context implementationContext
The implementation context to use.
-
assigner
protected final Assigner assigner
The assigner to use.
-
argumentHandler
protected final Advice.ArgumentHandler.ForInstrumentedMethod argumentHandler
A handler for accessing values on the local variable array.
-
methodSizeHandler
protected final Advice.MethodSizeHandler.ForInstrumentedMethod methodSizeHandler
A handler for computing the method size requirements.
-
stackMapFrameHandler
protected final Advice.StackMapFrameHandler.ForInstrumentedMethod stackMapFrameHandler
A handler for translating and injecting stack map frames.
-
suppressionHandler
protected final Advice.Dispatcher.SuppressionHandler.Bound suppressionHandler
A bound suppression handler that is used for suppressing exceptions of this advice method.
-
relocationHandler
protected final Advice.Dispatcher.RelocationHandler.Bound relocationHandler
A bound relocation handler that is responsible for considering a non-standard control flow.
-
exceptionHandler
protected final StackManipulation exceptionHandler
The exception handler that is resolved for the instrumented method.
-
classReader
protected final AsmClassReader classReader
A class reader for parsing the class file containing the represented advice method.
-
labels
protected final java.util.List<org.objectweb.asm.Label> labels
The labels that were found during parsing the method's exception handler in the order of their discovery.
-
-
Constructor Detail
-
AdviceMethodInliner
protected AdviceMethodInliner(TypeDescription instrumentedType, MethodDescription instrumentedMethod, org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, Advice.ArgumentHandler.ForInstrumentedMethod argumentHandler, Advice.MethodSizeHandler.ForInstrumentedMethod methodSizeHandler, Advice.StackMapFrameHandler.ForInstrumentedMethod stackMapFrameHandler, Advice.Dispatcher.SuppressionHandler.Bound suppressionHandler, Advice.Dispatcher.RelocationHandler.Bound relocationHandler, StackManipulation exceptionHandler, AsmClassReader classReader)
Creates a new advice method inliner.- Parameters:
instrumentedType- A description of the instrumented type.instrumentedMethod- The instrumented method.methodVisitor- The method visitor for writing the instrumented method.implementationContext- The implementation context to use.assigner- The assigner to use.argumentHandler- A handler for accessing values on the local variable array.methodSizeHandler- A handler for computing the method size requirements.stackMapFrameHandler- A handler for translating and injecting stack map frames.suppressionHandler- A bound suppression handler that is used for suppressing exceptions of this advice method.relocationHandler- A bound relocation handler that is responsible for considering a non-standard control flow.exceptionHandler- The exception handler that is resolved for the instrumented method.classReader- A class reader for parsing the class file containing the represented advice method.
-
-
Method Detail
-
prepare
public void prepare()
Prepares the advice method's exception handlers.- Specified by:
preparein interfaceAdvice.Dispatcher.Bound
-
initialize
public void initialize()
Initialized the advice's methods local variables.- Specified by:
initializein interfaceAdvice.Dispatcher.Bound
-
apply
public void apply()
Applies this dispatcher.- Specified by:
applyin interfaceAdvice.Dispatcher.Bound
-
visitMethod
@MaybeNull public org.objectweb.asm.MethodVisitor visitMethod(int modifiers, java.lang.String internalName, java.lang.String descriptor, @MaybeNull java.lang.String signature, @MaybeNull java.lang.String[] exception)
- Overrides:
visitMethodin classorg.objectweb.asm.ClassVisitor
-
-