private void handlePrintfMethods()

in log4j-weaver/src/main/java/org/apache/logging/log4j/weaver/log4j2/LoggerConversionHandler.java [213:232]


    private void handlePrintfMethods(LocationMethodVisitor mv, String descriptor) {
        final Type[] types = Type.getArgumentTypes(descriptor);
        // Transform the last two arguments into a supplier
        mv.invokeSupplierLambda(SupplierLambdaType.FORMATTED_MESSAGE);
        int supplierIndex = mv.nextLocal();
        mv.storeLocal(supplierIndex, SUPPLIER_TYPE);
        int markerIndex = -1;
        if (types[1].equals(MARKER_TYPE)) {
            markerIndex = mv.nextLocal();
            mv.storeLocal(markerIndex, MARKER_TYPE);
        }
        mv.invokeInterface(LOGGER_TYPE, AT_LEVEL_METHOD);
        mv.storeLocation();
        if (markerIndex >= 0) {
            mv.loadLocal(markerIndex, MARKER_TYPE);
            mv.invokeInterface(LOG_BUILDER_TYPE, WITH_MARKER_METHOD);
        }
        mv.loadLocal(supplierIndex, SUPPLIER_TYPE);
        mv.invokeInterface(LOG_BUILDER_TYPE, LOG_BUILDER_LOG_SUPPLIER_METHOD);
    }