private static void writeEntryExitMessage()

in log4j-weaver/src/main/java/org/apache/logging/log4j/weaver/LocationCacheGenerator.java [185:206]


    private static void writeEntryExitMessage(final InstructionAdapter mv, final SupplierLambdaType type) {
        final Type[] args = type.getArgumentTypes();
        mv.visitCode();
        mv.visitMaxs(args.length, args.length);
        mv.load(0, LOGGER_TYPE);
        mv.invokeinterface(
                LOGGER_TYPE.getInternalName(),
                "getFlowMessageFactory",
                Type.getMethodDescriptor(FLOW_MESSAGE_FACTORY_TYPE));
        for (int i = 1; i < args.length; i++) {
            mv.load(i, args[i]);
        }
        final boolean isEntry = type.name().startsWith("ENTRY");
        final String methodName = isEntry ? "newEntryMessage" : "newExitMessage";
        mv.invokeinterface(
                FLOW_MESSAGE_FACTORY_TYPE.getInternalName(),
                methodName,
                Type.getMethodDescriptor(
                        isEntry ? ENTRY_MESSAGE_TYPE : EXIT_MESSAGE_TYPE, Arrays.copyOfRange(args, 1, args.length)));
        mv.areturn(MESSAGE_TYPE);
        mv.visitEnd();
    }