Class Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableSubstitutor
java.lang.Object
org.objectweb.asm.MethodVisitor
net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableSubstitutor
- Enclosing class:
Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner
protected class Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableSubstitutor
extends org.objectweb.asm.MethodVisitor
A label substitutor allows to visit an advice method a second time after the exception handlers were already written.
Doing so, this visitor substitutes all labels that were already created during the first visit to keep the mapping
consistent. It is not required to resolve labels for non-code instructions as meta information is not propagated to
the target method visitor for advice code.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intThe current index of the visited labels that are used for try-catch-finally blocks.private final Map<org.objectweb.asm.Label, org.objectweb.asm.Label> A map containing resolved substitutions.Fields inherited from class org.objectweb.asm.MethodVisitor
api, mv -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedExceptionTableSubstitutor(org.objectweb.asm.MethodVisitor methodVisitor) Creates a label substitutor. -
Method Summary
Modifier and TypeMethodDescriptionprivate org.objectweb.asm.Labelresolve(org.objectweb.asm.Label label) Resolves a single label if mapped or returns the original label.private org.objectweb.asm.Label[]resolve(org.objectweb.asm.Label[] label) Resolves an array of labels.voidvisitJumpInsn(int opcode, org.objectweb.asm.Label label) voidvisitLabel(org.objectweb.asm.Label label) voidvisitLookupSwitchInsn(org.objectweb.asm.Label defaultOption, int[] keys, org.objectweb.asm.Label[] label) voidvisitTableSwitchInsn(int minimum, int maximum, org.objectweb.asm.Label defaultOption, org.objectweb.asm.Label... label) org.objectweb.asm.AnnotationVisitorvisitTryCatchAnnotation(int typeReference, org.objectweb.asm.TypePath typePath, String descriptor, boolean visible) voidvisitTryCatchBlock(org.objectweb.asm.Label start, org.objectweb.asm.Label end, org.objectweb.asm.Label handler, String type) Methods inherited from class org.objectweb.asm.MethodVisitor
getDelegate, visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitCode, visitEnd, visitFieldInsn, visitFrame, visitIincInsn, visitInsn, visitInsnAnnotation, visitIntInsn, visitInvokeDynamicInsn, visitLdcInsn, visitLineNumber, visitLocalVariable, visitLocalVariableAnnotation, visitMaxs, visitMethodInsn, visitMethodInsn, visitMultiANewArrayInsn, visitParameter, visitParameterAnnotation, visitTypeAnnotation, visitTypeInsn, visitVarInsn
-
Field Details
-
substitutions
A map containing resolved substitutions. -
index
private int indexThe current index of the visited labels that are used for try-catch-finally blocks.
-
-
Constructor Details
-
ExceptionTableSubstitutor
protected ExceptionTableSubstitutor(org.objectweb.asm.MethodVisitor methodVisitor) Creates a label substitutor.- Parameters:
methodVisitor- The method visitor for which to substitute labels.
-
-
Method Details
-
visitTryCatchBlock
public void visitTryCatchBlock(org.objectweb.asm.Label start, org.objectweb.asm.Label end, org.objectweb.asm.Label handler, String type) - Overrides:
visitTryCatchBlockin classorg.objectweb.asm.MethodVisitor
-
visitTryCatchAnnotation
@MaybeNull public org.objectweb.asm.AnnotationVisitor visitTryCatchAnnotation(int typeReference, @MaybeNull org.objectweb.asm.TypePath typePath, String descriptor, boolean visible) - Overrides:
visitTryCatchAnnotationin classorg.objectweb.asm.MethodVisitor
-
visitLabel
public void visitLabel(org.objectweb.asm.Label label) - Overrides:
visitLabelin classorg.objectweb.asm.MethodVisitor
-
visitJumpInsn
public void visitJumpInsn(int opcode, org.objectweb.asm.Label label) - Overrides:
visitJumpInsnin classorg.objectweb.asm.MethodVisitor
-
visitTableSwitchInsn
public void visitTableSwitchInsn(int minimum, int maximum, org.objectweb.asm.Label defaultOption, org.objectweb.asm.Label... label) - Overrides:
visitTableSwitchInsnin classorg.objectweb.asm.MethodVisitor
-
visitLookupSwitchInsn
public void visitLookupSwitchInsn(org.objectweb.asm.Label defaultOption, int[] keys, org.objectweb.asm.Label[] label) - Overrides:
visitLookupSwitchInsnin classorg.objectweb.asm.MethodVisitor
-
resolve
private org.objectweb.asm.Label[] resolve(org.objectweb.asm.Label[] label) Resolves an array of labels.- Parameters:
label- The labels to resolved.- Returns:
- An array containing the resolved arrays.
-
resolve
private org.objectweb.asm.Label resolve(org.objectweb.asm.Label label) Resolves a single label if mapped or returns the original label.- Parameters:
label- The label to resolve.- Returns:
- The resolved label.
-