Package net.bytebuddy.implementation
Class MethodCall.Appender
java.lang.Object
net.bytebuddy.implementation.MethodCall.Appender
- All Implemented Interfaces:
ByteCodeAppender
- Enclosing class:
MethodCall
@Enhance(includeSyntheticFields=true)
protected class MethodCall.Appender
extends Object
implements ByteCodeAppender
The appender being used to implement a
MethodCall
.-
Nested Class Summary
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.bytecode.ByteCodeAppender
ByteCodeAppender.Compound, ByteCodeAppender.Simple, ByteCodeAppender.Size
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final List
<MethodCall.ArgumentLoader.ArgumentProvider> The argument providers to use.private final Implementation.Target
The implementation target.private final MethodCall.MethodInvoker
The method invoker to use.private final MethodCall.MethodLocator
The method locator to use.private final MethodCall.TargetHandler
The target handler to use.private final MethodCall.TerminationHandler
The termination handler to use. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Appender
(Implementation.Target implementationTarget, MethodCall.TerminationHandler terminationHandler) Creates a new appender. -
Method Summary
Modifier and TypeMethodDescriptionapply
(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, MethodDescription instrumentedMethod) Applies this byte code appender to a type creation process.protected MethodDescription
toInvokedMethod
(MethodDescription instrumentedMethod, MethodCall.TargetHandler.Resolved targetHandler) Resolves this appender to the method being invoked.protected StackManipulation
toStackManipulation
(MethodDescription instrumentedMethod, MethodDescription invokedMethod, MethodCall.TargetHandler.Resolved targetHandler) Resolves this appender to a stack manipulation.
-
Field Details
-
implementationTarget
The implementation target. -
methodLocator
The method locator to use. -
argumentProviders
The argument providers to use. -
methodInvoker
The method invoker to use. -
targetHandler
The target handler to use. -
terminationHandler
The termination handler to use.
-
-
Constructor Details
-
Appender
protected Appender(Implementation.Target implementationTarget, MethodCall.TerminationHandler terminationHandler) Creates a new appender.- Parameters:
implementationTarget
- The implementation target.terminationHandler
- The termination handler to use.
-
-
Method Details
-
apply
public ByteCodeAppender.Size apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, MethodDescription instrumentedMethod) Applies this byte code appender to a type creation process.- Specified by:
apply
in interfaceByteCodeAppender
- Parameters:
methodVisitor
- The method visitor to which the byte code appender writes its code to.implementationContext
- The implementation context of the current type creation process.instrumentedMethod
- The method that is the target of the instrumentation.- Returns:
- The required size for the applied byte code to run.
-
toInvokedMethod
protected MethodDescription toInvokedMethod(MethodDescription instrumentedMethod, MethodCall.TargetHandler.Resolved targetHandler) Resolves this appender to the method being invoked.- Parameters:
instrumentedMethod
- The instrumented method.targetHandler
- The resolved target handler to base the stack manipulation upon.- Returns:
- The invoked method.
-
toStackManipulation
protected StackManipulation toStackManipulation(MethodDescription instrumentedMethod, MethodDescription invokedMethod, MethodCall.TargetHandler.Resolved targetHandler) Resolves this appender to a stack manipulation.- Parameters:
instrumentedMethod
- The instrumented method.invokedMethod
- The invoked method.targetHandler
- The resolved target handler to base the stack manipulation upon.- Returns:
- A stack manipulation that represents this method call.
-