/** * Visits the end of the method. This method, which is the last one to be called, is used to * inform the visitor that all the annotations and attributes of the method have been visited. */ public void visitEnd() { if (mv != null) { mv.visitEnd(); } } }
/** * {@inheritDoc} */ public void complete(ClassVisitor classVisitor, Implementation.Context.ExtractableView implementationContext) { implementationContext.drain(this, classVisitor, annotationValueFilterFactory); mv.visitMaxs(stackSize, localVariableLength); mv.visitEnd(); }
/** * Resolves this this advice emulating method visitor for its delegate. * * @param methodVisitor The method visitor to apply. * @param implementationContext The implementation context to apply. * @param instrumentedMethod The instrumented method. * @return The resulting size of the implemented method. */ protected ByteCodeAppender.Size resolve(MethodVisitor methodVisitor, Implementation.Context implementationContext, MethodDescription instrumentedMethod) { methodVisitor.visitCode(); Size size = delegate.apply(methodVisitor, implementationContext, instrumentedMethod); methodVisitor.visitMaxs(size.getOperandStackSize(), size.getLocalVariableSize()); methodVisitor.visitEnd(); return new ByteCodeAppender.Size(stackSize, localVariableLength); }
methodVisitor.visitEnd(); return currentOffset;
/** * {@inheritDoc} */ public void apply(ClassVisitor classVisitor, Implementation.Context implementationContext, AnnotationValueFilter.Factory annotationValueFilterFactory) { MethodVisitor methodVisitor = classVisitor.visitMethod(getMethod().getActualModifiers(getSort().isImplemented(), getVisibility()), getMethod().getInternalName(), getMethod().getDescriptor(), getMethod().getGenericSignature(), getMethod().getExceptionTypes().asErasures().toInternalNames()); if (methodVisitor != null) { ParameterList<?> parameterList = getMethod().getParameters(); if (parameterList.hasExplicitMetaData()) { for (ParameterDescription parameterDescription : parameterList) { methodVisitor.visitParameter(parameterDescription.getName(), parameterDescription.getModifiers()); } } applyHead(methodVisitor); applyBody(methodVisitor, implementationContext, annotationValueFilterFactory); methodVisitor.visitEnd(); } }
).apply(methodVisitor, implementationContext, bridgeMethod); methodVisitor.visitMaxs(size.getOperandStackSize(), size.getLocalVariableSize()); methodVisitor.visitEnd();
methodVisitor.visitInsn(Opcodes.ARETURN); methodVisitor.visitMaxs(8, 8); methodVisitor.visitEnd(); return IGNORE_ORIGINAL;
@Override public void visitEnd() { methodMaxLocals.add(name, signature, maxLocals); super.visitEnd(); } }
@Override public void visitEnd() { recordedCalls.add(List.of("visitEnd")); super.visitEnd(); }
methodVisitor.visitInsn(Opcodes.ARETURN); methodVisitor.visitMaxs(9, 10); methodVisitor.visitEnd(); return IGNORE_ORIGINAL;