Skip to content

Commit 0b85095

Browse files
authored
Improve performance of converting contexts to AsmResolver types (#545)
The opportunities were discovered via performance profiling of Il2CppInterop.
1 parent 9638864 commit 0b85095

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

Cpp2IL.Core/Utils/AsmResolver/ContextToMethodDescriptor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public static IMethodDescriptor ToMethodDescriptor(this ConcreteGenericMethodAna
4343
}
4444
else
4545
{
46-
var typeSignatures = methodGenericParameters.Select(p => p.ToTypeSignature(parentModule)).ToArray();
46+
var typeSignatures = methodGenericParameters.Select(p => p.ToTypeSignature(parentModule));
4747
return parentModule.DefaultImporter.ImportMethod(memberReference.MakeGenericInstanceMethod(typeSignatures));
4848
}
4949
}

Cpp2IL.Core/Utils/AsmResolver/ContextToTypeSignature.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ private static TypeDefinition GetTypeDefinition(this TypeAnalysisContext context
1717
public static TypeSignature ToTypeSignature(this TypeAnalysisContext context, ModuleDefinition parentModule) => context switch
1818
{
1919
ReferencedTypeAnalysisContext referencedTypeAnalysisContext => referencedTypeAnalysisContext.ToTypeSignature(parentModule),
20-
_ => parentModule.DefaultImporter.ImportType(context.GetTypeDefinition()).ToTypeSignature(parentModule.RuntimeContext)
20+
_ => parentModule.DefaultImporter.ImportType(context.GetTypeDefinition()).ToTypeSignature(context.IsValueType)
2121
};
2222

2323
public static TypeSignature ToTypeSignature(this ReferencedTypeAnalysisContext context, ModuleDefinition parentModule) => context switch
@@ -32,7 +32,7 @@ private static TypeDefinition GetTypeDefinition(this TypeAnalysisContext context
3232
public static GenericInstanceTypeSignature ToTypeSignature(this GenericInstanceTypeAnalysisContext context, ModuleDefinition parentModule)
3333
{
3434
var genericType = context.GenericType.ToTypeSignature(parentModule).ToTypeDefOrRef();
35-
var genericArguments = context.GenericArguments.Select(a => a.ToTypeSignature(parentModule)).ToArray();
35+
var genericArguments = context.GenericArguments.Select(a => a.ToTypeSignature(parentModule));
3636

3737
return new GenericInstanceTypeSignature(genericType, context.IsValueType, genericArguments);
3838
}

0 commit comments

Comments
 (0)