Remove FEATURE_BLC_FORMATTING (#8699)
authorJan Vorlicek <janvorli@microsoft.com>
Wed, 21 Dec 2016 15:42:51 +0000 (16:42 +0100)
committerJan Kotas <jkotas@microsoft.com>
Wed, 21 Dec 2016 15:42:51 +0000 (07:42 -0800)
This feature is always defined and the PAL functions that would be used
if the feature was not defined are not in PAL anymore.

clr.coreclr.props
clr.defines.targets
clr.desktop.props
clrdefinitions.cmake
src/ToolBox/SOS/Strike/sos.targets
src/classlibnative/bcltype/number.cpp
src/classlibnative/bcltype/number.h
src/pal/inc/pal.h

index 447b302..dc655f7 100644 (file)
@@ -8,7 +8,6 @@
     <FeatureAppdomainResourceMonitoring>true</FeatureAppdomainResourceMonitoring>
     <FeatureArrayStubAsIL Condition="('$(TargetArch)' == 'arm') or ('$(TargetArch)' == 'amd64') or ('$(TargetArch)' == 'arm64')">true</FeatureArrayStubAsIL>
     <FeatureStubsAsIL Condition="'$(TargetArch)' == 'arm64'">true</FeatureStubsAsIL>
-    <FeatureBclFormatting>true</FeatureBclFormatting>
     <FeatureCollectibleTypes>true</FeatureCollectibleTypes>
     <FeatureCominteropApartmentSupport>true</FeatureCominteropApartmentSupport>
     <FeatureCoreclr>true</FeatureCoreclr>
index a45d0dd..9518d55 100644 (file)
@@ -11,7 +11,6 @@
         <CDefines Condition="'$(FeatureAptca)' == 'true'">$(CDefines);FEATURE_APTCA</CDefines>
         <CDefines Condition="'$(FeatureArrayStubAsIL)' == 'true'">$(CDefines);FEATURE_ARRAYSTUB_AS_IL</CDefines>
         <CDefines Condition="'$(FeatureStubsAsIL)' == 'true'">$(CDefines);FEATURE_STUBS_AS_IL</CDefines>
-        <CDefines Condition="'$(FeatureBclFormatting)' == 'true'">$(CDefines);FEATURE_BCL_FORMATTING</CDefines>
         <CDefines Condition="'$(FeatureCasPolicy)' == 'true'">$(CDefines);FEATURE_CAS_POLICY</CDefines>
         <CDefines Condition="'$(FeatureClassicCominterop)' == 'true'">$(CDefines);FEATURE_CLASSIC_COMINTEROP</CDefines>
         <CDefines Condition="'$(FeatureClickonce)' == 'true'">$(CDefines);FEATURE_CLICKONCE</CDefines>
         <DefineConstants Condition="'$(FeatureAptca)' == 'true'">$(DefineConstants);FEATURE_APTCA</DefineConstants>
         <DefineConstants Condition="'$(FeatureArrayStubAsIL)' == 'true'">$(DefineConstants);FEATURE_ARRAYSTUB_AS_IL</DefineConstants>
         <DefineConstants Condition="'$(FeatureStubsAsIL)' == 'true'">$(DefineConstants);FEATURE_STUBS_AS_IL</DefineConstants>
-        <DefineConstants Condition="'$(FeatureBclFormatting)' == 'true'">$(DefineConstants);FEATURE_BCL_FORMATTING</DefineConstants>
         <DefineConstants Condition="'$(FeatureCasPolicy)' == 'true'">$(DefineConstants);FEATURE_CAS_POLICY</DefineConstants>
         <DefineConstants Condition="'$(FeatureClassicCominterop)' == 'true'">$(DefineConstants);FEATURE_CLASSIC_COMINTEROP</DefineConstants>
         <DefineConstants Condition="'$(FeatureClickonce)' == 'true'">$(DefineConstants);FEATURE_CLICKONCE</DefineConstants>
index 6d5951e..abd323b 100644 (file)
@@ -10,7 +10,6 @@
     <FeatureAppXBinder>true</FeatureAppXBinder>
     <FeatureAptca>true</FeatureAptca>
     <FeatureArrayStubAsIL Condition="('$(TargetArch)' == 'arm')">true</FeatureArrayStubAsIL>
-    <FeatureBclFormatting>true</FeatureBclFormatting>
     <FeatureCasPolicy>true</FeatureCasPolicy>
     <FeatureTraceLogging>true</FeatureTraceLogging>
     <FeatureClassicCominterop>true</FeatureClassicCominterop>
index 91346ec..acca50a 100644 (file)
@@ -96,7 +96,6 @@ if(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_ARM OR CLR_CMAKE_TARGET_
 endif()
 
 add_definitions(-DFEATURE_ASYNC_IO)
-add_definitions(-DFEATURE_BCL_FORMATTING)
 add_definitions(-DFEATURE_COLLECTIBLE_TYPES)
 
 if(WIN32)
index 3a8185c..8cf0a16 100644 (file)
@@ -54,7 +54,7 @@
     <ClAdditionalOptions Condition="'$(FeatureCoreSystem)' == 'true'">$(ClAdditionalOptions) -DFEATURE_CORESYSTEM</ClAdditionalOptions>
     <MscOptimizations Condition="!('$(DebugBuild)' == 'true')">
     </MscOptimizations>
-    <ClAdditionalOptions>$(ClAdditionalOptions) -DSTRIKE -D_MT=1  -DORCAS=0 -DMDA_SUPPORTED -DDEBUGGING_SUPPORTED -DEnC_SUPPORTED -DPROFILING_SUPPORTED -DFEATURE_COMINTEROP -DFEATURE_COMINTEROP_UNMANAGED_ACTIVATION -DFEATURE_COMINTEROP_MANAGED_ACTIVATION -DFEATURE_COMINTEROP_APARTMENT_SUPPORT -DFEATURE_RWLOCK -DFEATURE_PREJIT -DFEATURE_STACK_PROBE -DFEATURE_SVR_GC -DFEATURE_CAS_POLICY -DFEATURE_CLICKONCE -DFEATURE_CRYPTO -DFEATURE_IMPERSONATION -DFEATURE_ISOSTORE -DFEATURE_MACL -DFEATURE_WATSON -DFEATURE_X509 -DFEATURE_X509_SECURESTRINGS -DFEATURE_COMINTEROP_REGISTRATION -DFEATURE_MIXEDMODE -DFEATURE_PERFMON -DFEATURE_REFLECTION_ONLY_LOAD -DFEATURE_FUSION -DFEATURE_SYNTHETIC_CULTURES -DFEATURE_SORT_TABLES -DFEATURE_CODEPAGES_FILE -DFEATURE_VALIDATOR -DFEATURE_WIN32_REGISTRY -DFEATURE_REMOTING -DFEATURE_SERIALIZATION -DFEATURE_ISYM_READER -DFEATURE_LOADER_OPTIMIZATION -DFEATURE_IPCMAN -DFEATURE_STRONGNAME_DELAY_SIGNING_ALLOWED -DFEATURE_MULTIMODULE_ASSEMBLIES -DFEATURE_METHOD_RENTAL -DFEATURE_APTCA -DFEATURE_USE_LCID -DFEATURE_BCL_FORMATTING -DENABLE_DOWNLEVEL_FOR_NLS -DFEATURE_INCLUDE_ALL_INTERFACES -DFEATURE_NONGENERIC_COLLECTIONS -DFEATURE_APPDOMAINMANAGER_INITOPTIONS -DFEATURE_COMPRESSEDSTACK -DFEATURE_PLS -DFEATURE_SYNCHRONIZATIONCONTEXT -DFEATURE_SYNCHRONIZATIONCONTEXT_WAIT -DUEF_CHAINING_SUPPORTED -DFEATURE_LEAK_CULTURE_INFO -DFEATURE_UEF_CHAINMANAGER -DFEATURE_CORRUPTING_EXCEPTIONS -DFEATURE_APPDOMAIN_RESOURCE_MONITORING -DFEATURE_EXCEPTION_NOTIFICATIONS -DFEATURE_LEGACY_THREADPOOL -DFEATURE_INTEROP_DEBUGGING</ClAdditionalOptions>
+    <ClAdditionalOptions>$(ClAdditionalOptions) -DSTRIKE -D_MT=1  -DORCAS=0 -DMDA_SUPPORTED -DDEBUGGING_SUPPORTED -DEnC_SUPPORTED -DPROFILING_SUPPORTED -DFEATURE_COMINTEROP -DFEATURE_COMINTEROP_UNMANAGED_ACTIVATION -DFEATURE_COMINTEROP_MANAGED_ACTIVATION -DFEATURE_COMINTEROP_APARTMENT_SUPPORT -DFEATURE_RWLOCK -DFEATURE_PREJIT -DFEATURE_STACK_PROBE -DFEATURE_SVR_GC -DFEATURE_CAS_POLICY -DFEATURE_CLICKONCE -DFEATURE_CRYPTO -DFEATURE_IMPERSONATION -DFEATURE_ISOSTORE -DFEATURE_MACL -DFEATURE_WATSON -DFEATURE_X509 -DFEATURE_X509_SECURESTRINGS -DFEATURE_COMINTEROP_REGISTRATION -DFEATURE_MIXEDMODE -DFEATURE_PERFMON -DFEATURE_REFLECTION_ONLY_LOAD -DFEATURE_FUSION -DFEATURE_SYNTHETIC_CULTURES -DFEATURE_SORT_TABLES -DFEATURE_CODEPAGES_FILE -DFEATURE_VALIDATOR -DFEATURE_WIN32_REGISTRY -DFEATURE_REMOTING -DFEATURE_SERIALIZATION -DFEATURE_ISYM_READER -DFEATURE_LOADER_OPTIMIZATION -DFEATURE_IPCMAN -DFEATURE_STRONGNAME_DELAY_SIGNING_ALLOWED -DFEATURE_MULTIMODULE_ASSEMBLIES -DFEATURE_METHOD_RENTAL -DFEATURE_APTCA -DFEATURE_USE_LCID -DENABLE_DOWNLEVEL_FOR_NLS -DFEATURE_INCLUDE_ALL_INTERFACES -DFEATURE_NONGENERIC_COLLECTIONS -DFEATURE_APPDOMAINMANAGER_INITOPTIONS -DFEATURE_COMPRESSEDSTACK -DFEATURE_PLS -DFEATURE_SYNCHRONIZATIONCONTEXT -DFEATURE_SYNCHRONIZATIONCONTEXT_WAIT -DUEF_CHAINING_SUPPORTED -DFEATURE_LEAK_CULTURE_INFO -DFEATURE_UEF_CHAINMANAGER -DFEATURE_CORRUPTING_EXCEPTIONS -DFEATURE_APPDOMAIN_RESOURCE_MONITORING -DFEATURE_EXCEPTION_NOTIFICATIONS -DFEATURE_LEGACY_THREADPOOL -DFEATURE_INTEROP_DEBUGGING</ClAdditionalOptions>
     <ExceptionHandling>$(Fullcxxeh)</ExceptionHandling>
     <!-- As part of X-plat DAC feature work we decided to put x86 SOS inside binaries\x86 subdirectory.
              The pdb file will be places following the same subdir rule SymbolsDir\x86.  
index 6ca24d8..3f2d63c 100644 (file)
@@ -142,12 +142,6 @@ void DoubleToNumber(double value, int precision, NUMBER* number)
     WRAPPER_NO_CONTRACT
     _ASSERTE(number != NULL);
 
-#ifndef FEATURE_BCL_FORMATTING
-    number->palNumber=PAL_DoubleToNumber(value);
-    IfNullThrow(number->palNumber);
-    number->palNumberType=PALNUMBERTYPE_DOUBLE;
-#endif
-
     number->precision = precision;
     if (((FPDOUBLE*)&value)->exp == 0x7FF) {
         number->scale = (((FPDOUBLE*)&value)->mantLo || ((FPDOUBLE*)&value)->mantHi) ? SCALE_NAN: SCALE_INF;
@@ -736,13 +730,6 @@ void Int32ToNumber(int value, NUMBER* number)
     WRAPPER_NO_CONTRACT
     _ASSERTE(number != NULL);
 
-#ifndef FEATURE_BCL_FORMATTING
-    number->palNumber=PAL_IntToNumber(value);
-    IfNullThrow(number->palNumber);
-    number->palNumberType=PALNUMBERTYPE_INT;
-#endif
-
-
     wchar buffer[INT32_PRECISION+1];
     number->precision = INT32_PRECISION;
     if (value >= 0) {
@@ -769,12 +756,6 @@ void UInt32ToNumber(unsigned int value, NUMBER* number)
     WRAPPER_NO_CONTRACT
     _ASSERTE(number != NULL);
 
-#ifndef FEATURE_BCL_FORMATTING
-    number->palNumber=PAL_UIntToNumber(value);
-    IfNullThrow(number->palNumber);
-    number->palNumberType=PALNUMBERTYPE_UINT;
-#endif
-
     wchar buffer[UINT32_PRECISION+1];
     number->precision = UINT32_PRECISION;
     number->sign = 0;
@@ -880,12 +861,6 @@ void Int64ToNumber(__int64 value, NUMBER* number)
 {
     WRAPPER_NO_CONTRACT
 
-#ifndef FEATURE_BCL_FORMATTING
-    number->palNumber=PAL_Int64ToNumber(value);
-    IfNullThrow(number->palNumber);
-    number->palNumberType=PALNUMBERTYPE_INT64;
-#endif
-
     wchar buffer[INT64_PRECISION+1];
     number->precision = INT64_PRECISION;
     if (value >= 0) {
@@ -934,29 +909,6 @@ void UInt64ToNumber(unsigned __int64 value, NUMBER* number)
     
 }
 
-#ifndef FEATURE_BCL_FORMATTING
-void NumberToUInt64(NUMBER * number, unsigned __int64* value)
-{
-    _ASSERTE(NULL != number);
-    _ASSERTE(NULL != value);
-
-    if (NULL != number && NULL != value) {
-        (*value) = 0;
-        int i = 0;
-        while (i < NUMBER_MAXDIGITS && i < number->precision && number->digits[i] != NULL) {
-            _ASSERTE((number->digits[i] - '0') >= 0 && (number->digits[i] - '0') <= 9);
-            *value = (10 * (*value)) + (number->digits[i] - '0');
-            i++;
-        }
-        while (i < number->scale) {
-            *value = (10 * (*value));
-            i++;
-        }
-    }
-}
-#endif
-
-
 void RoundNumber(NUMBER* number, int pos)
 {
     LIMITED_METHOD_CONTRACT
@@ -985,50 +937,6 @@ void RoundNumber(NUMBER* number, int pos)
     }
     digits[i] = 0;
 
-#ifndef FEATURE_BCL_FORMATTING
-//
-// The PAL stores PALNUMBER as the actual numeric type where as NUMBER is in string form;
-// Convert NUMBER back into its original type and pass it to the PAL for later use
-//
-    if (0 != number->palNumber) {
-        if (PALNUMBERTYPE_DOUBLE == number->palNumberType) {
-            // no need to round NaN or infinity double values
-            if (SCALE_NAN != ((unsigned int)number->scale) && SCALE_INF != ((unsigned int)number->scale)) {
-                double value = 0.0;
-                NumberToDouble(number, &value);
-                // make sure the rounding didn't accidently cause the good value
-                // to be turned into NaN or infinity
-                if (((FPDOUBLE*)&value)->exp != 0x7FF) {
-                    number->palNumber=PAL_DoubleToNumber(value);
-                }
-            }
-        }
-        else {
-            unsigned __int64 value = 0;
-            NumberToUInt64(number, &value);                
-            switch(number->palNumberType) {
-                case PALNUMBERTYPE_INT:
-                    _ASSERTE((value >> 32) == 0);
-                    number->palNumber=PAL_IntToNumber(((unsigned int)value) * (number->sign ? -1 : 1));
-                    break;
-                case PALNUMBERTYPE_UINT:
-                    _ASSERTE((value >> 32) == 0);
-                    number->palNumber=PAL_UIntToNumber((unsigned int)value);
-                    break;
-                case PALNUMBERTYPE_INT64:
-                    _ASSERTE((value >> 63) == 0);
-                    number->palNumber=PAL_Int64ToNumber(((__int64)value) * (number->sign ? -1 : 1));
-                    break;
-                case PALNUMBERTYPE_UINT64:
-                    number->palNumber=PAL_UInt64ToNumber(value);
-                    break;
-                default:
-                    CONSISTENCY_CHECK_MSGF(0, ("This palNumberType is not understood '(%d)''\n", number->palNumberType));
-                    break;
-            }
-        }
-    }
-#endif
 }
 
 #if defined(_MSC_VER) && defined(_TARGET_X86_)
@@ -1112,29 +1020,6 @@ wchar* FormatGeneral(__in_ecount(cchBuffer) wchar* buffer, SIZE_T cchBuffer, NUM
         }
     }
 
-#ifndef FEATURE_BCL_FORMATTING
-    if (number->palNumber)
-    {
-        WCHAR sExp[2]={expChar};
-        LPCWSTR strNumberDecimal(sNumberDecimal!=NULL?sNumberDecimal->GetBuffer():NULL);
-        LPCWSTR strPositive(sPositive!=NULL?sPositive->GetBuffer():NULL);
-        LPCWSTR strNegative(sNegative!=NULL?sNegative->GetBuffer():NULL);
-        LPCWSTR strZero(sZero!=NULL?sZero->GetBuffer():NULL);
-
-        int nChars;
-
-         // nMaxDigits for Scientific are 1 more than needed
-        if (scientific)
-            nChars=PAL_FormatScientific(NULL, buffer, cchBuffer, number->palNumber,-1,nMaxDigits-1,sExp,strNumberDecimal,strPositive,strNegative,strZero);
-        else
-            nChars=PAL_FormatDecimal(NULL, buffer, cchBuffer, number->palNumber,-1,nMaxDigits,-1, -1,-1,strNumberDecimal,NULL,strNegative,strZero);
-        
-        if(nChars<0)
-            return NULL;
-        return buffer+nChars;
-    }
-#endif
-    
     wchar* dig = GetDigitsBuffer(number);
     _ASSERT(dig != NULL);
     if (digPos > 0) {
@@ -1162,26 +1047,9 @@ wchar* FormatGeneral(__in_ecount(cchBuffer) wchar* buffer, SIZE_T cchBuffer, NUM
 wchar* FormatScientific(__in_ecount(cchBuffer) wchar* buffer, SIZE_T cchBuffer, NUMBER* number, int nMinDigits, int nMaxDigits, wchar expChar,
     STRINGREF sNumberDecimal, STRINGREF sPositive, STRINGREF sNegative, STRINGREF sZero)
 {
-        WRAPPER_NO_CONTRACT
-        _ASSERTE(number != NULL);
-        _ASSERTE(buffer != NULL);
-#ifndef FEATURE_BCL_FORMATTING
-    if (number->palNumber)
-    {
-        WCHAR sExp[2]={expChar};
-        LPCWSTR strNumberDecimal(sNumberDecimal!=NULL?sNumberDecimal->GetBuffer():NULL);
-        LPCWSTR strPositive(sPositive!=NULL?sPositive->GetBuffer():NULL);
-        LPCWSTR strNegative(sNegative!=NULL?sNegative->GetBuffer():NULL);
-        LPCWSTR strZero(sZero!=NULL?sZero->GetBuffer():NULL);
-
-        // nMaxDigits passed into FormatScientific are 1 more than requested
-        int nChars=PAL_FormatScientific(NULL, buffer, cchBuffer, number->palNumber,nMinDigits, nMaxDigits-1,sExp,strNumberDecimal,strPositive,strNegative,strZero);
-        if(nChars<0)
-            ThrowLastError();
-        return buffer+nChars;
-    }
-#endif
-    
+    WRAPPER_NO_CONTRACT
+    _ASSERTE(number != NULL);
+    _ASSERTE(buffer != NULL);
 
     wchar* dig = GetDigitsBuffer(number);
     _ASSERTE(dig != NULL);
@@ -1207,21 +1075,6 @@ wchar* FormatFixed(__in_ecount(cchBuffer) wchar* buffer, SIZE_T cchBuffer, NUMBE
         PRECONDITION(CheckPointer(number));
     } CONTRACTL_END;
 
-#ifndef FEATURE_BCL_FORMATTING
-    if (number->palNumber)
-    {
-        LPCWSTR strDecimal(sDecimal!=NULL?sDecimal->GetBuffer():NULL);
-        LPCWSTR strNegative(sNegative!=NULL?sNegative->GetBuffer():NULL);
-        LPCWSTR strZero(sZero!=NULL?sZero->GetBuffer():NULL);
-        
-        int nChars=PAL_FormatDecimal(NULL, buffer, cchBuffer, number->palNumber,nMinDigits,nMaxDigits,-1,  -1,-1,strDecimal,W(""),strNegative,strZero);
-        if(nChars<0)
-            return NULL;
-        return buffer+nChars;
-    }
-#endif
-
-
     int digPos = number->scale;
     wchar* dig = GetDigitsBuffer(number);
     const I4* groupDigits = NULL;
@@ -1328,33 +1181,6 @@ wchar* FormatNumber(__in_ecount(cchBuffer) wchar* buffer, SIZE_T cchBuffer, NUMB
         PRECONDITION(CheckPointer(buffer));
         PRECONDITION(CheckPointer(number));
     } CONTRACTL_END;
-#ifndef FEATURE_BCL_FORMATTING
-    if (number->palNumber)
-    {
-        LPCWSTR strDecimal(sNumberDecimal!=NULL?sNumberDecimal->GetBuffer():NULL);
-        LPCWSTR strGroup(sNumberGroup!=NULL?sNumberGroup->GetBuffer():NULL);
-        LPCWSTR strNegative(sNegative!=NULL?sNegative->GetBuffer():NULL);
-        LPCWSTR strZero(sZero!=NULL?sZero->GetBuffer():NULL);
-        int iPrimaryGroup=0;
-        int iSecondaryGroup=0;
-        if(cNumberGroup!=NULL)
-        {
-            int nGroups = cNumberGroup->GetNumComponents();
-            I4* pGroups=(I4*)cNumberGroup->GetDataPtr();
-            
-            if(nGroups>0)
-                iPrimaryGroup=pGroups[0];
-            if(nGroups>1)
-                iSecondaryGroup=pGroups[1];
-        }
-        
-        int nChars=PAL_FormatDecimal(NULL, buffer, cchBuffer, number->palNumber,nMinDigits,nMaxDigits, cNegativeNumberFormat, 
-                                                            iPrimaryGroup,iSecondaryGroup,strDecimal,strGroup,strNegative,strZero);
-        if(nChars<0)
-            return NULL;
-        return buffer+nChars;
-    }
-#endif
 
     char ch;
     const char* fmt;
@@ -1391,36 +1217,6 @@ wchar* FormatCurrency(__in_ecount(cchBuffer) wchar* buffer, SIZE_T cchBuffer, NU
         PRECONDITION(CheckPointer(number));
     } CONTRACTL_END;
 
-#ifndef FEATURE_BCL_FORMATTING
-    if (number->palNumber)
-    {
-        LPCWSTR strCurrencyDecimal(sCurrencyDecimal!=NULL?sCurrencyDecimal->GetBuffer():NULL);
-        LPCWSTR strCurrencyGroup(sCurrencyGroup!=NULL?sCurrencyGroup->GetBuffer():NULL);
-        LPCWSTR strNegative(sNegative!=NULL?sNegative->GetBuffer():NULL);
-        LPCWSTR strCurrency(sCurrency!=NULL?sCurrency->GetBuffer():NULL);
-        LPCWSTR strZero(sZero!=NULL?sZero->GetBuffer():NULL);
-        int iPrimaryGroup=0;
-        int iSecondaryGroup=0;
-
-        if(cCurrencyGroup!=NULL)
-        {
-            int nGroups = cCurrencyGroup->GetNumComponents();
-            I4* pGroups=(I4*)cCurrencyGroup->GetDataPtr();
-            
-            if(nGroups>0)
-                iPrimaryGroup=pGroups[0];
-            if(nGroups>1)
-                iSecondaryGroup=pGroups[1];
-        }
-
-        int nChars=PAL_FormatCurrency(NULL, buffer, cchBuffer, number->palNumber,nMinDigits,nMaxDigits,cNegCurrencyFormat, cPosCurrencyFormat, 
-                                      iPrimaryGroup, iSecondaryGroup, strCurrencyDecimal,strCurrencyGroup,strNegative, strCurrency,strZero);
-        if (nChars<0)
-            return NULL;
-
-        return buffer+nChars;
-    }
-#endif
     char ch;
     const char* fmt;
     fmt = number->sign?
@@ -1458,39 +1254,6 @@ wchar* FormatPercent(__in_ecount(cchBuffer) wchar* buffer, SIZE_T cchBuffer, NUM
         PRECONDITION(CheckPointer(number));
     } CONTRACTL_END;
 
-
-#ifndef FEATURE_BCL_FORMATTING
-    if (number->palNumber)
-    {
-        LPCWSTR strPercentDecimal(sPercentDecimal!=NULL?sPercentDecimal->GetBuffer():NULL);
-        LPCWSTR strPercentGroup(sPercentGroup!=NULL?sPercentGroup->GetBuffer():NULL);
-        LPCWSTR strNegative(sNegative!=NULL?sNegative->GetBuffer():NULL);
-        LPCWSTR strPercent(sPercent!=NULL?sPercent->GetBuffer():NULL);
-        LPCWSTR strZero(sZero!=NULL?sZero->GetBuffer():NULL);
-        
-        int iPrimaryGroup=0;
-        int iSecondaryGroup=0;
-
-        if(cPercentGroup!=NULL)
-        {
-            int nGroups = cPercentGroup->GetNumComponents();
-            I4* pGroups=(I4*)cPercentGroup->GetDataPtr();
-            
-            if(nGroups>0)
-                iPrimaryGroup=pGroups[0];
-            if(nGroups>1)
-                iSecondaryGroup=pGroups[1];
-        }
-
-        int nChars=PAL_FormatPercent(NULL, buffer, cchBuffer, number->palNumber,nMinDigits,nMaxDigits,cNegativePercentFormat, cPositivePercentFormat,
-                                                            iPrimaryGroup, iSecondaryGroup,strPercentDecimal,strPercentGroup,strNegative, strPercent,strZero);
-        if(nChars<0)
-            return NULL;
-        
-        return buffer+nChars;
-    }
-#endif
-
     char ch;
     const char* fmt;
     fmt = number->sign?
@@ -1612,12 +1375,6 @@ STRINGREF NumberToString(NUMBER* number, wchar format, int nMaxDigits, NUMFMTREF
         STRINGREF sCurrencyGroup = numfmt->sCurrencyGroup;
         STRINGREF sNegative = numfmt->sNegative;
         STRINGREF sCurrency = numfmt->sCurrency;        
-#ifndef FEATURE_BCL_FORMATTING
-        if (numfmt->bIsInvariant || 0 == number->palNumber)
-        {
-            // So that FormatCurrency uses BCL format
-            number->palNumber = 0;
-#endif            
         // Prefix: bogus warning 22011: newBufferLen+=digCount may be smaller than MIN_BUFFER_SIZE
         PREFIX_ASSUME(digCount >=0 && digCount <= INT32_MAX);
         newBufferLen += digCount;
@@ -1637,22 +1394,6 @@ STRINGREF NumberToString(NUMBER* number, wchar format, int nMaxDigits, NUMFMTREF
             RoundNumber(number, number->scale + nMaxDigits); // Don't change this line to use digPos since digCount could have its sign changed.
             dst = FormatCurrency(dst, static_cast<SIZE_T>(newBufferLen/sizeof(WCHAR)), number, nMinDigits,nMaxDigits, cNegCurrencyFormat, cPosCurrencyFormat, cCurrencyGroup, sCurrencyDecimal, sCurrencyGroup, sNegative, sCurrency,sZero);
             
-#ifndef FEATURE_BCL_FORMATTING
-            }
-            else
-            {
-                for ( SIZE_T nChars=128;;nChars*=2)
-                {
-                    dst = buffer = (WCHAR*)buf.AllocThrows(nChars * sizeof(WCHAR));
-                    dst = FormatCurrency(dst, nChars, number, nMinDigits, nMaxDigits, cNegCurrencyFormat, cPosCurrencyFormat, cCurrencyGroup, sCurrencyDecimal, sCurrencyGroup, sNegative, sCurrency,sZero);
-                    if (dst)
-                        break;
-                    if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER)
-                        ThrowLastError();
-                }
-            }
-#endif
-
             break;
         }
     case 'F':
@@ -1672,49 +1413,25 @@ STRINGREF NumberToString(NUMBER* number, wchar format, int nMaxDigits, NUMFMTREF
         // It is critical to format with the same values that we use to calculate buffer size.
         STRINGREF sNumberDecimal = numfmt->sNumberDecimal;
         STRINGREF sNegative = numfmt->sNegative;
-#ifndef FEATURE_BCL_FORMATTING
-        if (numfmt->bIsInvariant || 0 == number->palNumber)
-        {
-            // So that FormatFixed uses BCL format
-            number->palNumber = 0;
-#endif            
-            
-            newBufferLen += digCount;
-            newBufferLen += sNegative->GetStringLength(); // For number and exponent
-            newBufferLen += sNumberDecimal->GetStringLength();
-    
-            _ASSERTE(newBufferLen >= MIN_BUFFER_SIZE);
-            if (newBufferLen > INT32_MAX) {
-                COMPlusThrowOM();
-            }
-            newBufferLen = newBufferLen * sizeof(WCHAR);
-            dst = buffer = (WCHAR*)buf.AllocThrows(static_cast<SIZE_T>(newBufferLen));
-    
-            RoundNumber(number, number->scale + nMaxDigits);
+           
+        newBufferLen += digCount;
+        newBufferLen += sNegative->GetStringLength(); // For number and exponent
+        newBufferLen += sNumberDecimal->GetStringLength();
+
+        _ASSERTE(newBufferLen >= MIN_BUFFER_SIZE);
+        if (newBufferLen > INT32_MAX) {
+            COMPlusThrowOM();
+        }
+        newBufferLen = newBufferLen * sizeof(WCHAR);
+        dst = buffer = (WCHAR*)buf.AllocThrows(static_cast<SIZE_T>(newBufferLen));
+
+        RoundNumber(number, number->scale + nMaxDigits);
         if (number->sign) {
             AddStringRef(&dst, sNegative);
         }
             dst = FormatFixed(dst, static_cast<SIZE_T>(newBufferLen/sizeof(WCHAR)-(dst-buffer)), number, nMinDigits,nMaxDigits,
                 NULL,
                 sNumberDecimal, NULL, sNegative, sZero);
-#ifndef FEATURE_BCL_FORMATTING
-        }
-        else
-        {
-            for( SIZE_T nChars=128;;nChars*=2)
-            {
-                dst = buffer = (WCHAR*)buf.AllocThrows(nChars * sizeof(WCHAR));
-                dst = FormatFixed(dst, nChars, number, nMinDigits,nMaxDigits,
-                NULL,
-                sNumberDecimal, NULL,sNegative,sZero);           
-    
-                if (dst)
-                    break;
-                if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER)
-                    ThrowLastError();
-            }
-        }
-#endif
         
         break;
         }
@@ -1737,44 +1454,21 @@ STRINGREF NumberToString(NUMBER* number, wchar format, int nMaxDigits, NUMFMTREF
         STRINGREF sNumberDecimal = numfmt->sNumberDecimal;
         STRINGREF sNumberGroup = numfmt->sNumberGroup;
         int cNegativeNumberFormat = numfmt->cNegativeNumberFormat;
-#ifndef FEATURE_BCL_FORMATTING
-        if (numfmt->bIsInvariant || 0 == number->palNumber)
-        {
-            // So that FormatNumber uses BCL format
-            number->palNumber = 0;
-#endif            
-            
-            newBufferLen += digCount;
-            newBufferLen += sNegative->GetStringLength(); // For number and exponent
-            if (!ClrSafeInt<UINT64>::addition((UINT64)sNumberGroup->GetStringLength() * digCount, newBufferLen, newBufferLen))
-                COMPlusThrowOM();
-            newBufferLen += sNumberDecimal->GetStringLength();
-    
-            _ASSERTE(newBufferLen >= MIN_BUFFER_SIZE);
-            if (newBufferLen > INT32_MAX) {
-                COMPlusThrowOM();
-            }
-            newBufferLen = newBufferLen * sizeof(WCHAR);
-            dst = buffer = (WCHAR*)buf.AllocThrows(static_cast<SIZE_T>(newBufferLen));
-    
-            RoundNumber(number, number->scale + nMaxDigits);
-            dst = FormatNumber(dst, static_cast<SIZE_T>(newBufferLen/sizeof(WCHAR)),number, nMinDigits, nMaxDigits, cNegativeNumberFormat, cNumberGroup, sNumberDecimal, sNumberGroup, sNegative, sZero);
-#ifndef FEATURE_BCL_FORMATTING
-        }
-        else
-        {
-            for( SIZE_T nChars=128;;nChars*=2)
-            {
-                dst = buffer = (WCHAR*)buf.AllocThrows(nChars * sizeof(WCHAR));
-                dst = FormatNumber(dst, nChars, number, nMinDigits,nMaxDigits, cNegativeNumberFormat, cNumberGroup, sNumberDecimal, sNumberGroup, sNegative,sZero);
-    
-                if (dst)
-                    break;
-                if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER)
-                    ThrowLastError();
-            }
+        newBufferLen += digCount;
+        newBufferLen += sNegative->GetStringLength(); // For number and exponent
+        if (!ClrSafeInt<UINT64>::addition((UINT64)sNumberGroup->GetStringLength() * digCount, newBufferLen, newBufferLen))
+            COMPlusThrowOM();
+        newBufferLen += sNumberDecimal->GetStringLength();
+
+        _ASSERTE(newBufferLen >= MIN_BUFFER_SIZE);
+        if (newBufferLen > INT32_MAX) {
+            COMPlusThrowOM();
         }
-#endif
+        newBufferLen = newBufferLen * sizeof(WCHAR);
+        dst = buffer = (WCHAR*)buf.AllocThrows(static_cast<SIZE_T>(newBufferLen));
+
+        RoundNumber(number, number->scale + nMaxDigits);
+        dst = FormatNumber(dst, static_cast<SIZE_T>(newBufferLen/sizeof(WCHAR)),number, nMinDigits, nMaxDigits, cNegativeNumberFormat, cNumberGroup, sNumberDecimal, sNumberGroup, sNegative, sZero);
         
         break;
         }
@@ -1792,45 +1486,22 @@ STRINGREF NumberToString(NUMBER* number, wchar format, int nMaxDigits, NUMFMTREF
             nMinDigits=nMaxDigits;
         nMaxDigits++;
 
-#ifndef FEATURE_BCL_FORMATTING
-        if (numfmt->bIsInvariant || 0 == number->palNumber)
-        {
-            // So that FormatScientific uses BCL format
-            number->palNumber = 0;
-#endif            
-
-            newBufferLen += nMaxDigits;
-            newBufferLen += (((INT64)sNegative->GetStringLength() + sPositive->GetStringLength()) *2); // For number and exponent
-            newBufferLen += sNumberDecimal->GetStringLength();
-    
-            _ASSERTE(newBufferLen >= MIN_BUFFER_SIZE);
-            if (newBufferLen > INT32_MAX) {
-                COMPlusThrowOM();
-            }
-            newBufferLen = newBufferLen * sizeof(WCHAR);
-            dst = buffer = (WCHAR*)buf.AllocThrows(static_cast<SIZE_T>(newBufferLen));
+        newBufferLen += nMaxDigits;
+        newBufferLen += (((INT64)sNegative->GetStringLength() + sPositive->GetStringLength()) *2); // For number and exponent
+        newBufferLen += sNumberDecimal->GetStringLength();
 
-            RoundNumber(number, nMaxDigits);
-            if (number->sign) {
-                AddStringRef(&dst, sNegative);
-            }
-            dst = FormatScientific(dst, static_cast<SIZE_T>(newBufferLen * sizeof(WCHAR)-(dst-buffer)),number, nMinDigits,nMaxDigits, format, sNumberDecimal, sPositive, sNegative,sZero);
-#ifndef FEATURE_BCL_FORMATTING
+        _ASSERTE(newBufferLen >= MIN_BUFFER_SIZE);
+        if (newBufferLen > INT32_MAX) {
+            COMPlusThrowOM();
         }
-        else
-        {
-            for( SIZE_T nChars=128;;nChars*=2)
-            {
-                dst = buffer = (WCHAR*)buf.AllocThrows(nChars * sizeof(WCHAR));
-                dst = FormatScientific(dst, nChars, number, nMinDigits, nMaxDigits, format, sNumberDecimal, sPositive, sNegative,sZero);
+        newBufferLen = newBufferLen * sizeof(WCHAR);
+        dst = buffer = (WCHAR*)buf.AllocThrows(static_cast<SIZE_T>(newBufferLen));
 
-                if (dst)
-                    break;
-                if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER)
-                    ThrowLastError();
-            }
+        RoundNumber(number, nMaxDigits);
+        if (number->sign) {
+            AddStringRef(&dst, sNegative);
         }
-#endif
+        dst = FormatScientific(dst, static_cast<SIZE_T>(newBufferLen * sizeof(WCHAR)-(dst-buffer)),number, nMinDigits,nMaxDigits, format, sNumberDecimal, sPositive, sNegative,sZero);
 
         break;
         }
@@ -1878,30 +1549,7 @@ STRINGREF NumberToString(NUMBER* number, wchar format, int nMaxDigits, NUMFMTREF
             }
 
 
-#ifndef FEATURE_BCL_FORMATTING
-        if (numfmt->bIsInvariant || 0 == number->palNumber)
-        {
-            // So that FormatScientific uses BCL format
-            number->palNumber = 0;
-#endif         
-        
-            dst = FormatGeneral(dst, static_cast<SIZE_T>(newBufferLen/sizeof(WCHAR)), number, nMinDigits,nMaxDigits, format - ('G' - 'E'), sNumberDecimal, sPositive, sNegative, sZero, !enableRounding);
-#ifndef FEATURE_BCL_FORMATTING
-        }
-        else
-        {
-            for( SIZE_T nChars=128;;nChars*=2)
-            {
-                dst = buffer = (WCHAR*)buf.AllocThrows(nChars * sizeof(WCHAR));
-                dst = FormatGeneral(dst, nChars, number, nMinDigits,nMaxDigits, format - ('G' - 'E'), sNumberDecimal, sPositive, sNegative, sZero, !enableRounding);
-    
-                if (dst)
-                    break;
-                if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER)
-                    ThrowLastError();
-            }
-        }
-#endif
+        dst = FormatGeneral(dst, static_cast<SIZE_T>(newBufferLen/sizeof(WCHAR)), number, nMinDigits,nMaxDigits, format - ('G' - 'E'), sNumberDecimal, sPositive, sNegative, sZero, !enableRounding);
         
         }
         break;
@@ -1930,10 +1578,6 @@ STRINGREF NumberToString(NUMBER* number, wchar format, int nMaxDigits, NUMFMTREF
         STRINGREF sNegative = numfmt->sNegative;
         STRINGREF sPercent = numfmt->sPercent;
 
-#ifndef FEATURE_BCL_FORMATTING
-        // So that FormatPercent uses BCL format
-        number->palNumber = 0;
-#endif
         newBufferLen += digCount;
         newBufferLen += sNegative->GetStringLength(); // For number and exponent
         if (!ClrSafeInt<UINT64>::addition((UINT64)sPercentGroup->GetStringLength() * digCount, newBufferLen, newBufferLen))
@@ -1957,7 +1601,6 @@ STRINGREF NumberToString(NUMBER* number, wchar format, int nMaxDigits, NUMFMTREF
         COMPlusThrow(kFormatException, W("Argument_BadFormatSpecifier"));
     }
  // check for overflow of the preallocated buffer
-#ifdef FEATURE_BCL_FORMATTING // when not defined the buffer could be resized, so skip the check
 // Review signed/unsigned mismatch in '<=' comparison.
 #pragma warning(push)
 #pragma warning(disable:4018)
@@ -1965,7 +1608,6 @@ STRINGREF NumberToString(NUMBER* number, wchar format, int nMaxDigits, NUMFMTREF
 #pragma warning(pop)
         DoJITFailFast();
     }
-#endif
 
     return StringObject::NewString(buffer, (int) (dst - buffer));
 }
@@ -2047,12 +1689,6 @@ STRINGREF NumberToStringFormat(NUMBER* number, STRINGREF str, NUMFMTREF numfmt)
 
     section = FindSection(format, (GetDigitsBuffer(number))[0] == 0 ? 2 : number->sign ? 1 : 0);
 
-#ifndef FEATURE_BCL_FORMATTING
-    // custom formatting is all done in the VM without the PAL.  Blanking
-    // the palNumber field avoids unnecessary RoundNumber calculations
-    number->palNumber = 0; 
-#endif
-
 ParseSection:
     digitCount = 0;
     decimalPos = -1;
@@ -2607,11 +2243,6 @@ FCIMPL3_VII(Object*, COMNumber::FormatSingle, float value, StringObject* formatU
             //and display that.
 
             DoubleToNumber(argsValue, FLOAT_PRECISION, &number);
-#ifndef FEATURE_BCL_FORMATTING
-            // Make sure that BCL formatting is used for Single to avoid lossy conversion to Double
-            number.palNumber = 0;
-#endif
-
             if (number.scale == (int) SCALE_NAN) {
                 gc.refRetVal = gc.numfmt->sNaN;
                 goto lExit;
@@ -2654,10 +2285,6 @@ FCIMPL3_VII(Object*, COMNumber::FormatSingle, float value, StringObject* formatU
     }
 
     DoubleToNumber(value, precision, &number);
-#ifndef FEATURE_BCL_FORMATTING
-    // Make sure that BCL formatting is used for Single to avoid lossy conversion to Double
-    number.palNumber = 0;
-#endif
 
     if (number.scale == (int) SCALE_NAN) {
         gc.refRetVal = gc.numfmt->sNaN;
index 3b72781..87bab3b 100644 (file)
 
 #define NUMBER_MAXDIGITS 50
 
-#ifndef FEATURE_BCL_FORMATTING
-enum PAL_NUMBERType {
-    PALNUMBERTYPE_INT     = 1,    // PAL_IntToNumber
-    PALNUMBERTYPE_INT64   = 2,    // PAL_Int64ToNumber
-    PALNUMBERTYPE_UINT    = 3,    // PAL_UIntToNumber
-    PALNUMBERTYPE_UINT64  = 4,    // PAL_UInt64ToNumber
-    PALNUMBERTYPE_DOUBLE  = 5,    // PAL_DoubleToNumber
-};
-#endif
-
 struct NUMBER {
     int precision;
     int scale;
     int sign;
     wchar_t digits[NUMBER_MAXDIGITS + 1];
     wchar_t* allDigits;
-#ifndef FEATURE_BCL_FORMATTING
-    PAL_NUMBERHolder palNumber;
-    PAL_NUMBERType palNumberType;
-#endif
     NUMBER() : precision(0), scale(0), sign(0), allDigits(NULL) {}
 };
 
index 0d7c89e..05c777c 100644 (file)
@@ -4554,33 +4554,6 @@ PAL_GetCalendar(
 
 #define GEOID_NOT_AVAILABLE -1
 
-// "a number", might represent different types
-typedef struct PALNUMBER__* PALNUMBER;
-
-// return NULL on OOM
-PALIMPORT PALNUMBER PALAPI PAL_DoubleToNumber(double);
-PALIMPORT PALNUMBER PALAPI PAL_Int64ToNumber(INT64);
-PALIMPORT PALNUMBER PALAPI PAL_UInt64ToNumber(UINT64);
-PALIMPORT PALNUMBER PALAPI PAL_IntToNumber(int);
-PALIMPORT PALNUMBER PALAPI PAL_UIntToNumber(unsigned int);
-
-PALIMPORT void PALAPI PAL_ReleaseNumber(PALNUMBER);
-
-
-// return string length if Buffer is NULL or the result fits in cchBuffer, otherwise -1
-PALIMPORT int PALAPI PAL_FormatScientific(LPCWSTR sLocale, LPWSTR pBuffer, SIZE_T cchBuffer, PALNUMBER number, int nMinDigits, int nMaxDigits,
-                                                                      LPCWSTR sExponent, LPCWSTR sNumberDecimal, LPCWSTR sPositive, LPCWSTR sNegative, LPCWSTR sZero);
-
-PALIMPORT int PALAPI  PAL_FormatCurrency(LPCWSTR sLocale, LPWSTR pBuffer, SIZE_T cchBuffer, PALNUMBER number, int nMinDigits, int nMaxDigits, int iNegativeFormat, int iPositiveFormat,
-                      int iPrimaryGroup, int iSecondaryGroup, LPCWSTR sCurrencyDecimal, LPCWSTR sCurrencyGroup, LPCWSTR sNegative, LPCWSTR sCurrency, LPCWSTR sZero);
-
-PALIMPORT int PALAPI  PAL_FormatPercent(LPCWSTR sLocale, LPWSTR pBuffer, SIZE_T cchBuffer, PALNUMBER number,  int nMinDigits, int nMaxDigits,int iNegativeFormat, int iPositiveFormat, 
-                      int iPrimaryGroup, int iSecondaryGroup, LPCWSTR sPercentDecimal, LPCWSTR sPercentGroup, LPCWSTR sNegative, LPCWSTR sPercent, LPCWSTR sZero);
-
-PALIMPORT int PALAPI  PAL_FormatDecimal(LPCWSTR sLocale, LPWSTR pBuffer, SIZE_T cchBuffer, PALNUMBER number, int nMinDigits, int nMaxDigits, int iNegativeFormat,
-                                    int iPrimaryGroup, int iSecondaryGroup,  LPCWSTR sDecimal, LPCWSTR sGroup, LPCWSTR sNegative, LPCWSTR sZero);
-
-
 #define DATE_USE_ALT_CALENDAR 0x00000004
 
 #if ENABLE_DOWNLEVEL_FOR_NLS