components/stdcxx/patches/092-7148352-basic_ios.patch
author Stefan Teleman <stefan.teleman@oracle.com>
Wed, 21 Mar 2012 11:17:19 -0700
changeset 742 8e2984d64f67
permissions -rw-r--r--
7148352 performance improvement for stdcxx based on 7144618
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
742
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     1
# patch for 7148352
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     2
--- stdcxx-4.2.1/include/rw/_basic_ios.h	2008-04-24 17:23:43.000000000 -0700
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     3
+++ stdcxx-4.2.1/include/rw/_basic_ios.h	2012-03-08 10:57:28.262697514 -0800
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     4
@@ -217,12 +217,20 @@
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     5
 
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     6
     // 27.4.4.2, p10
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     7
     char narrow (char_type __c, char __dflt) const {
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     8
-        return _USE_FACET (ctype<char_type>, getloc ()).narrow (__c, __dflt);
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     9
+	// For better performance, call the non-const version of getloc
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    10
+	basic_ios<_CharT, _Traits>* p =
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    11
+	    const_cast<basic_ios<_CharT, _Traits>*>(this);
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    12
+
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    13
+        return _USE_FACET (ctype<char_type>, p->getloc()).narrow (__c, __dflt);
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    14
     }
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    15
 
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    16
     // 27.4.4.2, p11
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    17
     char_type widen (char __c) const {
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    18
-        return _USE_FACET (ctype<char_type>, getloc ()).widen (__c);
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    19
+	// For better performance, call the non-const version of getloc
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    20
+	basic_ios<_CharT, _Traits>* p =
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    21
+	    const_cast<basic_ios<_CharT, _Traits>*>(this);
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    22
+
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    23
+        return _USE_FACET (ctype<char_type>, p->getloc()).widen (__c);
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    24
     }
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    25
 
8e2984d64f67 7148352 performance improvement for stdcxx based on 7144618
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    26
 protected: