From bdb1bb6190f5de2eb259a67424c60ebbaf769521 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Thu, 26 Sep 2019 14:30:31 -0700 Subject: [PATCH] Avoid ToCharArray allocation in JsonCamelCaseNamingPolicy (dotnet/corefx#41363) Commit migrated from https://github.com/dotnet/corefx/commit/4cfc7ecdf44fee10b86477c67eb9c7d335cf3269 --- .../Text/Json/Serialization/JsonCamelCaseNamingPolicy.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonCamelCaseNamingPolicy.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonCamelCaseNamingPolicy.cs index f29ed11..172d45d 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonCamelCaseNamingPolicy.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonCamelCaseNamingPolicy.cs @@ -13,8 +13,21 @@ namespace System.Text.Json return name; } +#if BUILDING_INBOX_LIBRARY + return string.Create(name.Length, name, (chars, name) => + { + name.AsSpan().CopyTo(chars); + FixCasing(chars); + }); +#else char[] chars = name.ToCharArray(); + FixCasing(chars); + return new string(chars); +#endif + } + private static void FixCasing(Span chars) + { for (int i = 0; i < chars.Length; i++) { if (i == 1 && !char.IsUpper(chars[i])) @@ -38,8 +51,6 @@ namespace System.Text.Json chars[i] = char.ToLowerInvariant(chars[i]); } - - return new string(chars); } } } -- 2.7.4