From 5b8e1780ad7740e632c285bc2af13a8d0b20c5a9 Mon Sep 17 00:00:00 2001 From: Marek Safar Date: Sun, 6 Jun 2021 10:51:02 +0200 Subject: [PATCH] Add Invariant check to DateTimeParse tokens codepaths (#53717) Cuts about 7k for invariant mode --- .../src/System/Globalization/DateTimeFormatInfo.cs | 2 +- .../src/System/Globalization/DateTimeParse.cs | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeFormatInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeFormatInfo.cs index c91e7fa..a7b603e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeFormatInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeFormatInfo.cs @@ -2409,7 +2409,7 @@ namespace System.Globalization if (isLetter) { ch = Culture.TextInfo.ToLower(ch); - if (IsHebrewChar(ch) && TokenMask == TokenType.RegularTokenMask) + if (!GlobalizationMode.Invariant && IsHebrewChar(ch) && TokenMask == TokenType.RegularTokenMask) { if (TryParseHebrewNumber(ref str, out bool badFormat, out tokenValue)) { diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeParse.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeParse.cs index e4b2608..ce6e23b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeParse.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeParse.cs @@ -1050,6 +1050,12 @@ new DS[] { DS.ERROR, DS.TX_NNN, DS.TX_NNN, DS.TX_NNN, DS.ERROR, DS.ERROR, } break; case TokenType.JapaneseEraToken: + if (GlobalizationMode.Invariant) + { + Debug.Fail("Should never be reached"); + return false; + } + // Special case for Japanese. We allow Japanese era name to be used even if the calendar is not Japanese Calendar. result.calendar = JapaneseCalendar.GetDefaultInstance(); dtfi = DateTimeFormatInfo.GetJapaneseCalendarDTFI(); @@ -1066,6 +1072,12 @@ new DS[] { DS.ERROR, DS.TX_NNN, DS.TX_NNN, DS.TX_NNN, DS.ERROR, DS.ERROR, } break; case TokenType.TEraToken: + if (GlobalizationMode.Invariant) + { + Debug.Fail("Should never be reached"); + return false; + } + result.calendar = TaiwanCalendar.GetDefaultInstance(); dtfi = DateTimeFormatInfo.GetTaiwanCalendarDTFI(); if (result.era != -1) -- 2.7.4