diff options
author | Marek Safar <marek.safar@gmail.com> | 2013-02-25 17:10:11 +0400 |
---|---|---|
committer | Marek Safar <marek.safar@gmail.com> | 2013-02-25 17:11:04 +0400 |
commit | feb5080d23ca3b0d53a13a77ae39c68734907b6a (patch) | |
tree | 0be94f461d53ecd9c44d961a8ebf96fd1adf5a86 /mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs | |
parent | 0eb3bdce8381e19231da9d50dc182068eee248c3 (diff) |
Optimize parameters handling to do much less allocation
Diffstat (limited to 'mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs')
-rw-r--r-- | mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs b/mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs index 931573d5449..0e87b8a340f 100644 --- a/mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs +++ b/mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs @@ -245,9 +245,15 @@ namespace System.Reflection.Emit { return MethodImplAttributes.IL | MethodImplAttributes.Managed; } - public override ParameterInfo[] GetParameters () { + public override ParameterInfo[] GetParameters () + { + return GetParametersInternal (); + } + + internal override ParameterInfo[] GetParametersInternal () + { if (parameters == null) - return new ParameterInfo [0]; + return EmptyArray<ParameterInfo>.Value; ParameterInfo[] retval = new ParameterInfo [parameters.Length]; for (int i = 0; i < parameters.Length; i++) { @@ -256,7 +262,7 @@ namespace System.Reflection.Emit { return retval; } - internal override int GetParameterCount () + internal override int GetParametersCount () { return parameters == null ? 0 : parameters.Length; } @@ -297,7 +303,7 @@ namespace System.Reflection.Emit { public override string ToString () { string parms = String.Empty; - ParameterInfo[] p = GetParameters (); + ParameterInfo[] p = GetParametersInternal (); for (int i = 0; i < p.Length; ++i) { if (i > 0) parms = parms + ", "; |