Skip to content

Commit 2041f7e

Browse files
rucchoNoelStephensUnity
authored andcommitted
match by name earlier
1 parent a6c0d86 commit 2041f7e

File tree

1 file changed

+28
-27
lines changed

1 file changed

+28
-27
lines changed

com.unity.netcode.gameobjects/Editor/CodeGen/NetworkBehaviourILPP.cs

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -963,37 +963,42 @@ private bool ImportReferences(ModuleDefinition moduleDefinition, string[] assemb
963963

964964
foreach (var method in type.Methods)
965965
{
966+
// to reduce unnecessary type resolution, we first check if it can be a serialization extension without type resolution
967+
966968
if (!method.IsStatic)
967969
{
968970
continue;
969971
}
970972

971-
// to reduce unnecessary type resolution, we first check if it can be an extension without type resolution
973+
if (method.Name is not (k_WriteValueMethodName or k_ReadValueMethodName))
974+
{
975+
continue;
976+
}
972977

973-
var mayHaveExtension = false;
978+
var mayHaveExtensionAttr = false;
974979

975980
foreach (var attr in method.CustomAttributes)
976981
{
977982
if (attr.Constructor.DeclaringType.FullName == extensionConstructor.DeclaringType.FullName)
978983
{
979-
mayHaveExtension = true;
984+
mayHaveExtensionAttr = true;
980985
break;
981986
}
982987
}
983988

984-
if (!mayHaveExtension)
989+
if (!mayHaveExtensionAttr)
985990
{
986991
continue;
987992
}
988993

989994
var parameters = method.Parameters;
990995

991-
if (parameters.Count != 2 || parameters[0].ParameterType is not ByReferenceType byRefType)
996+
if (parameters.Count != 2 || parameters[0].ParameterType is not ByReferenceType firstParameterType)
992997
{
993998
continue;
994999
}
9951000

996-
if (byRefType.ElementType.FullName != m_FastBufferWriter_TypeRef.FullName && byRefType.ElementType.FullName != m_FastBufferReader_TypeRef.FullName)
1001+
if (firstParameterType.ElementType.FullName != m_FastBufferWriter_TypeRef.FullName && firstParameterType.ElementType.FullName != m_FastBufferReader_TypeRef.FullName)
9971002
{
9981003
continue;
9991004
}
@@ -1014,11 +1019,11 @@ private bool ImportReferences(ModuleDefinition moduleDefinition, string[] assemb
10141019
continue;
10151020
}
10161021

1017-
if (parameters[0].ParameterType.Resolve() == m_FastBufferWriter_TypeRef.MakeByReferenceType().Resolve())
1022+
if (method.Name == k_WriteValueMethodName && firstParameterType.Resolve() == m_FastBufferWriter_TypeRef.MakeByReferenceType().Resolve())
10181023
{
10191024
m_FastBufferWriter_ExtensionMethodRefs.Add(m_MainModule.ImportReference(method));
10201025
}
1021-
else if (parameters[0].ParameterType.Resolve() == m_FastBufferReader_TypeRef.MakeByReferenceType().Resolve())
1026+
else if (method.Name == k_ReadValueMethodName && firstParameterType.Resolve() == m_FastBufferReader_TypeRef.MakeByReferenceType().Resolve())
10221027
{
10231028
m_FastBufferReader_ExtensionMethodRefs.Add(m_MainModule.ImportReference(method));
10241029
}
@@ -1818,27 +1823,24 @@ private bool GetWriteMethodForParameter(TypeReference paramType, out MethodRefer
18181823
{
18191824
var parameters = method.Resolve().Parameters;
18201825

1821-
if (method.Name == k_WriteValueMethodName)
1826+
if (parameters[1].IsIn)
18221827
{
1823-
if (parameters[1].IsIn)
1828+
if (((ByReferenceType)parameters[1].ParameterType).ElementType.FullName == paramType.FullName &&
1829+
((ByReferenceType)parameters[1].ParameterType).ElementType.IsArray == paramType.IsArray)
18241830
{
1825-
if (((ByReferenceType)parameters[1].ParameterType).ElementType.FullName == paramType.FullName &&
1826-
((ByReferenceType)parameters[1].ParameterType).ElementType.IsArray == paramType.IsArray)
1827-
{
1828-
methodRef = method;
1829-
m_FastBufferWriter_WriteValue_MethodRefs[assemblyQualifiedName] = methodRef;
1830-
return true;
1831-
}
1831+
methodRef = method;
1832+
m_FastBufferWriter_WriteValue_MethodRefs[assemblyQualifiedName] = methodRef;
1833+
return true;
18321834
}
1833-
else
1835+
}
1836+
else
1837+
{
1838+
if (parameters[1].ParameterType.FullName == paramType.FullName &&
1839+
parameters[1].ParameterType.IsArray == paramType.IsArray)
18341840
{
1835-
if (parameters[1].ParameterType.FullName == paramType.FullName &&
1836-
parameters[1].ParameterType.IsArray == paramType.IsArray)
1837-
{
1838-
methodRef = method;
1839-
m_FastBufferWriter_WriteValue_MethodRefs[assemblyQualifiedName] = methodRef;
1840-
return true;
1841-
}
1841+
methodRef = method;
1842+
m_FastBufferWriter_WriteValue_MethodRefs[assemblyQualifiedName] = methodRef;
1843+
return true;
18421844
}
18431845
}
18441846
}
@@ -2054,8 +2056,7 @@ private bool GetReadMethodForParameter(TypeReference paramType, out MethodRefere
20542056
foreach (var method in m_FastBufferReader_ExtensionMethodRefs)
20552057
{
20562058
var parameters = method.Resolve().Parameters;
2057-
if (method.Name == k_ReadValueMethodName &&
2058-
parameters[1].IsOut &&
2059+
if (parameters[1].IsOut &&
20592060
((ByReferenceType)parameters[1].ParameterType).ElementType.FullName == paramType.FullName &&
20602061
((ByReferenceType)parameters[1].ParameterType).ElementType.IsArray == paramType.IsArray)
20612062
{

0 commit comments

Comments
 (0)