缓存 UnityRenamePolicy::IsUnitySourceGeneratedAssemblyType的计算结果,优化性能

before-split
walon 2025-05-27 22:21:24 +08:00
parent 14a6ddb661
commit 94b9b7ee2f
1 changed files with 14 additions and 1 deletions

View File

@ -126,7 +126,9 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies
"OnCancel",
};
private bool IsUnitySourceGeneratedAssemblyType(TypeDef typeDef)
private readonly Dictionary<TypeDef, bool> _unitySourceGeneratedComputeCache = new Dictionary<TypeDef, bool>();
private bool ComputeIsUnitySourceGeneratedAssemblyType(TypeDef typeDef)
{
if (typeDef.Name.StartsWith("UnitySourceGeneratedAssemblyMonoScriptTypes_"))
{
@ -155,6 +157,17 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies
return false;
}
private bool IsUnitySourceGeneratedAssemblyType(TypeDef typeDef)
{
if (_unitySourceGeneratedComputeCache.TryGetValue(typeDef, out var result))
{
return result;
}
result = ComputeIsUnitySourceGeneratedAssemblyType(typeDef);
_unitySourceGeneratedComputeCache.Add(typeDef, result);
return result;
}
private bool DoesDeclaringTypeDisableAllMemberRenaming(TypeDef typeDef)
{
if (typeDef.IsEnum && MetaUtil.HasBlackboardEnumAttribute(typeDef))