in log4j-weaver/src/main/java/org/apache/logging/log4j/weaver/LocationCacheGenerator.java [68:89]
public Handle createLambda(String internalClassName, SupplierLambdaType type) {
final String cacheClassName = getCacheClassName(internalClassName);
final LocationCacheContents contents = locationCacheClasses.computeIfAbsent(cacheClassName,
k -> new LocationCacheContents());
contents.addLambda(type);
final String methodName = type.name().toLowerCase();
final String methodDescriptor = Type.getMethodDescriptor(MESSAGE_TYPE, type.getArgumentTypes());
switch (type) {
case FORMATTED_MESSAGE:
case ENTRY_MESSAGE_MESSAGE:
case ENTRY_MESSAGE_STRING_OBJECTS:
case ENTRY_MESSAGE_STRING_SUPPLIERS:
case EXIT_MESSAGE_ENTRY_MESSAGE:
case EXIT_MESSAGE_MESSAGE:
case EXIT_MESSAGE_OBJECT_ENTRY_MESSAGE:
case EXIT_MESSAGE_OBJECT_MESSAGE:
case EXIT_MESSAGE_STRING_OBJECT:
return new Handle(Opcodes.H_INVOKESTATIC, cacheClassName, methodName, methodDescriptor, false);
default:
throw new IllegalArgumentException();
}
}