You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2009/05/26 20:55:28 UTC
svn commit: r778845 - in /stdcxx/branches/4.3.x/src: iosdata.h iostore.cpp
iso2022.cpp num_put.cpp
Author: sebor
Date: Tue May 26 18:55:28 2009
New Revision: 778845
URL: http://svn.apache.org/viewvc?rev=778845&view=rev
Log:
2009-05-26 Martin Sebor <se...@apache.org>
Merged revs 778780, 778800, and 778803 from 4.2.x.
STDCXX-1036
* src/iosdata.h (ios_base::_C_usr_data::_C_alloc,
ios_base::_C_usr_data::_C_dealloc): Moved functions from here...
* src/iostore.cpp: ...to here and outlined to silence gcc 4.4 -Winline
warnings.
* src/num_put.cpp (__rw_dtoa): Called the unsigned overload of __rw_dtoa
only once to avoid gcc 4.4 -Winline warning (and for a small efficiency
gain).
* src/iso2022.cpp (__rw_allocate_state): Outlined rarely called
function to silence gcc 4.4 -Winline warnings: inlining failed:
call is unlikely and code size would grow.
Modified:
stdcxx/branches/4.3.x/src/iosdata.h
stdcxx/branches/4.3.x/src/iostore.cpp
stdcxx/branches/4.3.x/src/iso2022.cpp
stdcxx/branches/4.3.x/src/num_put.cpp
Modified: stdcxx/branches/4.3.x/src/iosdata.h
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/src/iosdata.h?rev=778845&r1=778844&r2=778845&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/src/iosdata.h (original)
+++ stdcxx/branches/4.3.x/src/iosdata.h Tue May 26 18:55:28 2009
@@ -22,7 +22,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 1994-2006 Rogue Wave Software.
+ * Copyright 1994-2006 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -30,8 +30,6 @@
#define _RWSTD_IOSDATA_H_INCLUDED
-#include <string.h>
-
#include <rw/_iosbase.h>
#include <rw/_defs.h>
@@ -68,66 +66,6 @@
static _C_usr_data _C_std_usr_data [2];
};
-
-inline /* static */ ios_base::_C_usr_data*
-ios_base::_C_usr_data::_C_alloc (_C_fire_fun pfire)
-{
- _TRY {
- // rely on 0-initialization of PODs
- _C_usr_data* const pdata = new _C_usr_data ();
-
-#ifdef _RWSTD_NO_NEW_THROWS
-
- if (!pdata)
- return 0;
-
-#endif // _RWSTD_NO_NEW_THROWS
-
- _RWSTD_ASSERT (0 != pdata);
-
-#ifndef _RWSTD_NO_POD_ZERO_INIT
-
- // assert that the POD ctor above zeroed out all members
- _RWSTD_ASSERT (!pdata->_C_tie);
- _RWSTD_ASSERT (!pdata->_C_iarray);
- _RWSTD_ASSERT (!pdata->_C_parray);
- _RWSTD_ASSERT (!pdata->_C_cbarray);
- _RWSTD_ASSERT (!pdata->_C_isize);
- _RWSTD_ASSERT (!pdata->_C_psize);
- _RWSTD_ASSERT (!pdata->_C_cbsize);
-
-#else // if defined (_RWSTD_NO_POD_ZERO_INIT)
-
- memset (pdata, 0, sizeof *pdata);
-
-#endif // _RWSTD_NO_POD_ZERO_INIT
-
- pdata->_C_fire = pfire;
-
- return pdata;
- }
- _CATCH (...) {
- return 0;
- }
-}
-
-
-inline /* static */ void
-ios_base::_C_usr_data::_C_dealloc (_C_usr_data *ptr)
-{
- if (ptr) {
- operator delete (ptr->_C_iarray);
- operator delete (ptr->_C_parray);
- operator delete (ptr->_C_cbarray);
-
- if ( ptr != _C_usr_data::_C_std_usr_data
- && ptr != _C_usr_data::_C_std_usr_data + 1)
- delete ptr;
- }
-}
-
-
} // namespace std
-
#endif // _RWSTD_IOSDATA_H_INCLUDED
Modified: stdcxx/branches/4.3.x/src/iostore.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/src/iostore.cpp?rev=778845&r1=778844&r2=778845&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/src/iostore.cpp (original)
+++ stdcxx/branches/4.3.x/src/iostore.cpp Tue May 26 18:55:28 2009
@@ -84,6 +84,64 @@
_RWSTD_NAMESPACE (std) {
+/* static */ ios_base::_C_usr_data*
+ios_base::_C_usr_data::_C_alloc (_C_fire_fun pfire)
+{
+ _TRY {
+ // rely on zero-initialization of PODs
+ _C_usr_data* const pdata = new _C_usr_data ();
+
+#ifdef _RWSTD_NO_NEW_THROWS
+
+ if (!pdata)
+ return 0;
+
+#endif // _RWSTD_NO_NEW_THROWS
+
+ _RWSTD_ASSERT (0 != pdata);
+
+#ifndef _RWSTD_NO_POD_ZERO_INIT
+
+ // assert that the POD ctor above zeroed out all members
+ _RWSTD_ASSERT (!pdata->_C_tie);
+ _RWSTD_ASSERT (!pdata->_C_iarray);
+ _RWSTD_ASSERT (!pdata->_C_parray);
+ _RWSTD_ASSERT (!pdata->_C_cbarray);
+ _RWSTD_ASSERT (!pdata->_C_isize);
+ _RWSTD_ASSERT (!pdata->_C_psize);
+ _RWSTD_ASSERT (!pdata->_C_cbsize);
+
+#else // if defined (_RWSTD_NO_POD_ZERO_INIT)
+
+ memset (pdata, 0, sizeof *pdata);
+
+#endif // _RWSTD_NO_POD_ZERO_INIT
+
+ pdata->_C_fire = pfire;
+
+ return pdata;
+ }
+ _CATCH (...) {
+ return 0;
+ }
+}
+
+
+/* static */ void
+ios_base::_C_usr_data::_C_dealloc (_C_usr_data *ptr)
+{
+ if (ptr) {
+ operator delete (ptr->_C_iarray);
+ operator delete (ptr->_C_parray);
+ operator delete (ptr->_C_cbarray);
+
+ if ( ptr != _C_usr_data::_C_std_usr_data
+ && ptr != _C_usr_data::_C_std_usr_data + 1)
+ delete ptr;
+ }
+}
+
+
/* static */ int ios_base::xalloc ()
{
// outlined to hide implementation details
Modified: stdcxx/branches/4.3.x/src/iso2022.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/src/iso2022.cpp?rev=778845&r1=778844&r2=778845&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/src/iso2022.cpp (original)
+++ stdcxx/branches/4.3.x/src/iso2022.cpp Tue May 26 18:55:28 2009
@@ -1,6 +1,6 @@
/***************************************************************************
*
- * rw_iso2022.cpp
+ * iso2022.cpp
*
* $Id$
*
@@ -416,8 +416,8 @@
// returns an index in the array of state structures or -1 if none
// is available; ISO-2022-JP and ISO-2022-JP-2 assume different
// initializations
-static inline
-int __rw_allocate_state ()
+static inline int
+__rw_allocate_state ()
{
_RWSTD_MT_CLASS_GUARD (__rw_iso2022_state_t);
@@ -434,8 +434,8 @@
// deallocates state and makes it available for future conversions
// if `initial_only' is non-zero suceeds only if the `iso_state'
// argument represents an initial shift state
-static inline
-void __rw_deallocate_state (__rw_iso2022_state_t &iso_state,
+static void
+__rw_deallocate_state (__rw_iso2022_state_t &iso_state,
_RWSTD_MBSTATE_T &state,
bool initial_only)
{
Modified: stdcxx/branches/4.3.x/src/num_put.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/src/num_put.cpp?rev=778845&r1=778844&r2=778845&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/src/num_put.cpp (original)
+++ stdcxx/branches/4.3.x/src/num_put.cpp Tue May 26 18:55:28 2009
@@ -153,7 +153,7 @@
const _RWSTD_SIZE_T len = begin - end;
- memmove (buf, end, len);
+ memmove (buf, end, len);
return len;
}
@@ -185,7 +185,7 @@
const _RWSTD_SIZE_T len = begin - end;
- memmove (buf, end, len);
+ memmove (buf, end, len);
return len;
}
@@ -194,13 +194,23 @@
static inline _RWSTD_SIZE_T
__rw_dtoa (char *buf, _LLong i, unsigned flags)
{
+ size_t n;
+
if (i < 0) {
+ // prepend the minus sign and clear the showpos bit in flags
+ // and the sign bit in the number
flags &= ~_RWSTD_IOS_SHOWPOS;
*buf++ = '-';
- return 1 + __rw_dtoa (buf, _RWSTD_STATIC_CAST (_ULLong, -i), flags);
+
+ i = -i;
+
+ // remember to add 1 for the minus sign
+ n = 1;
}
-
- return __rw_dtoa (buf, _RWSTD_STATIC_CAST (_ULLong, i), flags);
+ else
+ n = 0; // no sign here
+
+ return n + __rw_dtoa (buf, _RWSTD_STATIC_CAST (_ULLong, i), flags);
}
@@ -312,7 +322,7 @@
}
-static inline _RWSTD_SIZE_T
+static inline size_t
__rw_dtoa (char *buf, unsigned long i, unsigned flags)
{
// get the maximum number of decimal digits for an unsigned long
@@ -341,7 +351,7 @@
// move the contents of the buffer to the beginning
const _RWSTD_SIZE_T len = begin - end;
- memmove (buf, end, len);
+ memmove (buf, end, len);
return len;
}
@@ -350,14 +360,23 @@
static inline _RWSTD_SIZE_T
__rw_dtoa (char *buf, long i, unsigned flags)
{
+ size_t n;
+
if (i < 0) {
+ // prepend the minus sign and clear the showpos bit in flags
+ // and the sign bit in the number
flags &= ~_RWSTD_IOS_SHOWPOS;
*buf++ = '-';
- return 1 + __rw_dtoa (buf, _RWSTD_STATIC_CAST (unsigned long, -i),
- flags);
+
+ i = -i;
+
+ // remember to add 1 for the minus sign
+ n = 1;
}
-
- return __rw_dtoa (buf, _RWSTD_STATIC_CAST (unsigned long, i), flags);
+ else
+ n = 0; // no sign here
+
+ return n + __rw_dtoa (buf, _RWSTD_STATIC_CAST (unsigned long, i), flags);
}