From: Adam Sitnik Date: Tue, 1 Oct 2019 01:25:29 +0000 (+0200) Subject: allow ASCII equality ordinal fast path for en-* cultures (dotnet/coreclr#26905) X-Git-Tag: submit/tizen/20210909.063632~11030^2~495 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b3fb181725218980569e283699ba460f38df4003;p=platform%2Fupstream%2Fdotnet%2Fruntime.git allow ASCII equality ordinal fast path for en-* cultures (dotnet/coreclr#26905) * allow ASCII equality ordinal fast path for en-* cultures * dont use StartsWith in the initialization execution path * Update src/System.Private.CoreLib/shared/System/Globalization/CompareInfo.Unix.cs Co-Authored-By: Jan Kotas Commit migrated from https://github.com/dotnet/coreclr/commit/87e4971a68114987d81a21ba6df9035e30255c51 --- diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Unix.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Unix.cs index 3388c09e1c2..4e42a543ba2 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Unix.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Unix.cs @@ -32,7 +32,12 @@ namespace System.Globalization } else { - _isAsciiEqualityOrdinal = (_sortName == "en-US" || _sortName == ""); + // Inline the following condition to avoid potential implementation cycles within globalization + // + // _isAsciiEqualityOrdinal = _sortName == "" || _sortName == "en" || _sortName.StartsWith("en-", StringComparison.Ordinal); + // + _isAsciiEqualityOrdinal = _sortName.Length == 0 || + (_sortName.Length >= 2 && _sortName[0] == 'e' && _sortName[1] == 'n' && (_sortName.Length == 2 || _sortName[2] == '-')); _sortHandle = SortHandleCache.GetCachedSortHandle(_sortName); }