Package net.bytebuddy.dynamic.scaffold
Class TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending
- java.lang.Object
-
- org.objectweb.asm.MethodVisitor
-
- net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending
-
- All Implemented Interfaces:
TypeInitializer.Drain
,TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler
- Direct Known Subclasses:
TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithDrain
,TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithoutDrain
- Enclosing interface:
- TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler
public abstract static class TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending extends org.objectweb.asm.MethodVisitor implements TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler, TypeInitializer.Drain
An initialization handler that appends code to a previously visited type initializer.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static interface
TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.FrameWriter
A frame writer is responsible for adding empty frames on jump instructions.protected static class
TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithDrain
An initialization handler that appends code to a previously visited type initializer with allowing activeTypeInitializer
registrations.protected static class
TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithoutDrain
An initialization handler that appends code to a previously visited type initializer without allowing activeTypeInitializer
registrations.-
Nested classes/interfaces inherited from interface net.bytebuddy.dynamic.scaffold.TypeInitializer.Drain
TypeInitializer.Drain.Default
-
Nested classes/interfaces inherited from interface net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler
TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending, TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Creating
-
-
Field Summary
Fields Modifier and Type Field Description protected AnnotationValueFilter.Factory
annotationValueFilterFactory
The used annotation value filter factory.protected TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.FrameWriter
frameWriter
The frame writer to use.protected TypeDescription
instrumentedType
The instrumented type.protected int
localVariableLength
The currently recorded local variable length.protected TypeWriter.MethodPool.Record
record
The method pool record for the type initializer.protected int
stackSize
The currently recorded stack size.
-
Constructor Summary
Constructors Modifier Constructor Description protected
Appending(org.objectweb.asm.MethodVisitor methodVisitor, TypeDescription instrumentedType, TypeWriter.MethodPool.Record record, AnnotationValueFilter.Factory annotationValueFilterFactory, boolean requireFrames, boolean expandFrames)
Creates a new appending initialization handler.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
apply(org.objectweb.asm.ClassVisitor classVisitor, TypeInitializer typeInitializer, Implementation.Context implementationContext)
Applies the drain.void
complete(org.objectweb.asm.ClassVisitor classVisitor, Implementation.Context.ExtractableView implementationContext)
Invoked upon completion of writing the instrumented type.protected static TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler
of(boolean enabled, org.objectweb.asm.MethodVisitor methodVisitor, TypeDescription instrumentedType, TypeWriter.MethodPool methodPool, AnnotationValueFilter.Factory annotationValueFilterFactory, boolean requireFrames, boolean expandFrames)
Resolves an initialization handler.protected abstract void
onComplete(Implementation.Context implementationContext)
Invoked upon completion of writing the type initializer.protected abstract void
onStart()
Invoked after the user code was visited.void
visitCode()
abstract void
visitEnd()
void
visitFrame(int type, int localVariableLength, java.lang.Object[] localVariable, int stackSize, java.lang.Object[] stack)
void
visitMaxs(int stackSize, int localVariableLength)
private static TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithDrain
withDrain(org.objectweb.asm.MethodVisitor methodVisitor, TypeDescription instrumentedType, TypeWriter.MethodPool methodPool, AnnotationValueFilter.Factory annotationValueFilterFactory, boolean requireFrames, boolean expandFrames)
Resolves an initialization handler with a drain.private static TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithoutDrain
withoutDrain(org.objectweb.asm.MethodVisitor methodVisitor, TypeDescription instrumentedType, TypeWriter.MethodPool methodPool, AnnotationValueFilter.Factory annotationValueFilterFactory, boolean requireFrames, boolean expandFrames)
Resolves an initialization handler without a drain.-
Methods inherited from class org.objectweb.asm.MethodVisitor
visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitFieldInsn, visitIincInsn, visitInsn, visitInsnAnnotation, visitIntInsn, visitInvokeDynamicInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLineNumber, visitLocalVariable, visitLocalVariableAnnotation, visitLookupSwitchInsn, visitMethodInsn, visitMethodInsn, visitMultiANewArrayInsn, visitParameter, visitParameterAnnotation, visitTableSwitchInsn, visitTryCatchAnnotation, visitTryCatchBlock, visitTypeAnnotation, visitTypeInsn, visitVarInsn
-
-
-
-
Field Detail
-
instrumentedType
protected final TypeDescription instrumentedType
The instrumented type.
-
record
protected final TypeWriter.MethodPool.Record record
The method pool record for the type initializer.
-
annotationValueFilterFactory
protected final AnnotationValueFilter.Factory annotationValueFilterFactory
The used annotation value filter factory.
-
frameWriter
protected final TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.FrameWriter frameWriter
The frame writer to use.
-
stackSize
protected int stackSize
The currently recorded stack size.
-
localVariableLength
protected int localVariableLength
The currently recorded local variable length.
-
-
Constructor Detail
-
Appending
protected Appending(org.objectweb.asm.MethodVisitor methodVisitor, TypeDescription instrumentedType, TypeWriter.MethodPool.Record record, AnnotationValueFilter.Factory annotationValueFilterFactory, boolean requireFrames, boolean expandFrames)
Creates a new appending initialization handler.- Parameters:
methodVisitor
- The underlying method visitor.instrumentedType
- The instrumented type.record
- The method pool record for the type initializer.annotationValueFilterFactory
- The used annotation value filter factory.requireFrames
-true
if the visitor is required to add frames.expandFrames
-true
if the visitor is required to expand any added frame.
-
-
Method Detail
-
of
protected static TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler of(boolean enabled, org.objectweb.asm.MethodVisitor methodVisitor, TypeDescription instrumentedType, TypeWriter.MethodPool methodPool, AnnotationValueFilter.Factory annotationValueFilterFactory, boolean requireFrames, boolean expandFrames)
Resolves an initialization handler.- Parameters:
enabled
-true
if the implementation context is enabled, i.e. anyTypeInitializer
might be active.methodVisitor
- The delegation method visitor.instrumentedType
- The instrumented type.methodPool
- The method pool to use.annotationValueFilterFactory
- The annotation value filter factory to use.requireFrames
-true
if frames must be computed.expandFrames
-true
if frames must be expanded.- Returns:
- An initialization handler which is also guaranteed to be a
MethodVisitor
.
-
withDrain
private static TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithDrain withDrain(org.objectweb.asm.MethodVisitor methodVisitor, TypeDescription instrumentedType, TypeWriter.MethodPool methodPool, AnnotationValueFilter.Factory annotationValueFilterFactory, boolean requireFrames, boolean expandFrames)
Resolves an initialization handler with a drain.- Parameters:
methodVisitor
- The delegation method visitor.instrumentedType
- The instrumented type.methodPool
- The method pool to use.annotationValueFilterFactory
- The annotation value filter factory to use.requireFrames
-true
if frames must be computed.expandFrames
-true
if frames must be expanded.- Returns:
- An initialization handler which is also guaranteed to be a
MethodVisitor
.
-
withoutDrain
private static TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithoutDrain withoutDrain(org.objectweb.asm.MethodVisitor methodVisitor, TypeDescription instrumentedType, TypeWriter.MethodPool methodPool, AnnotationValueFilter.Factory annotationValueFilterFactory, boolean requireFrames, boolean expandFrames)
Resolves an initialization handler without a drain.- Parameters:
methodVisitor
- The delegation method visitor.instrumentedType
- The instrumented type.methodPool
- The method pool to use.annotationValueFilterFactory
- The annotation value filter factory to use.requireFrames
-true
if frames must be computed.expandFrames
-true
if frames must be expanded.- Returns:
- An initialization handler which is also guaranteed to be a
MethodVisitor
.
-
visitCode
public void visitCode()
- Overrides:
visitCode
in classorg.objectweb.asm.MethodVisitor
-
onStart
protected abstract void onStart()
Invoked after the user code was visited.
-
visitFrame
public void visitFrame(int type, int localVariableLength, java.lang.Object[] localVariable, int stackSize, java.lang.Object[] stack)
- Overrides:
visitFrame
in classorg.objectweb.asm.MethodVisitor
-
visitMaxs
public void visitMaxs(int stackSize, int localVariableLength)
- Overrides:
visitMaxs
in classorg.objectweb.asm.MethodVisitor
-
visitEnd
public abstract void visitEnd()
- Overrides:
visitEnd
in classorg.objectweb.asm.MethodVisitor
-
apply
public void apply(org.objectweb.asm.ClassVisitor classVisitor, TypeInitializer typeInitializer, Implementation.Context implementationContext)
Applies the drain.- Specified by:
apply
in interfaceTypeInitializer.Drain
- Parameters:
classVisitor
- The class visitor to apply the initializer to.typeInitializer
- The type initializer to write.implementationContext
- The corresponding implementation context.
-
onComplete
protected abstract void onComplete(Implementation.Context implementationContext)
Invoked upon completion of writing the type initializer.- Parameters:
implementationContext
- The implementation context to use.
-
complete
public void complete(org.objectweb.asm.ClassVisitor classVisitor, Implementation.Context.ExtractableView implementationContext)
Invoked upon completion of writing the instrumented type.- Specified by:
complete
in interfaceTypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler
- Parameters:
classVisitor
- The class visitor to write any methods to.implementationContext
- The implementation context to use.
-
-