소스 검색

Avoid array allocation when signal have 0 arg

DE YU 5 달 전
부모
커밋
af67fb1f62
1개의 변경된 파일11개의 추가작업 그리고 4개의 파일을 삭제
  1. 11 4
      modules/mono/glue/GodotSharp/GodotSharp/Core/SignalAwaiter.cs

+ 11 - 4
modules/mono/glue/GodotSharp/GodotSharp/Core/SignalAwaiter.cs

@@ -48,12 +48,19 @@ namespace Godot
 
                 awaiter._completed = true;
 
-                Variant[] signalArgs = new Variant[argCount];
+                if (argCount > 0)
+                {
+                    Variant[] signalArgs = new Variant[argCount];
 
-                for (int i = 0; i < argCount; i++)
-                    signalArgs[i] = Variant.CreateCopyingBorrowed(*args[i]);
+                    for (int i = 0; i < argCount; i++)
+                        signalArgs[i] = Variant.CreateCopyingBorrowed(*args[i]);
 
-                awaiter._result = signalArgs;
+                    awaiter._result = signalArgs;
+                }
+                else
+                {
+                    awaiter._result = [];
+                }
 
                 awaiter._continuation?.Invoke();
             }