in sdk/Sdk.Generators/FunctionExecutor/FunctionExecutorGenerator.Emitter.cs [170:215]
private static string EmitFastPath(ExecutableFunction function)
{
var sb = new StringBuilder();
if (!function.IsStatic)
{
sb.Append($"""
var instanceType = types["{function.ParentFunctionClassName}"];
var i = _functionActivator.CreateInstance(instanceType, context) as {function.ParentFunctionFullyQualifiedClassName};
""");
}
sb.Append(!function.IsStatic
? """
"""
: " ");
if (function.IsReturnValueAssignable)
{
sb.Append("context.GetInvocationResult().Value = ");
}
if (function.ShouldAwait)
{
sb.Append("await ");
}
// Parameters
int functionParamCounter = 0;
var functionParamList = new List<string>();
foreach (var argumentTypeName in function.ParameterTypeNames)
{
functionParamList.Add($"({argumentTypeName})inputArguments[{functionParamCounter++}]");
}
var methodParamsStr = string.Join(", ", functionParamList);
sb.Append(function.IsStatic
? $"{function.ParentFunctionFullyQualifiedClassName}.{function.MethodName}({methodParamsStr});"
: $"i.{function.MethodName}({methodParamsStr});");
return sb.ToString();
}