author | Stefan Teleman <stefan.teleman@oracle.com> |
Wed, 21 Mar 2012 11:17:19 -0700 | |
changeset 742 | 8e2984d64f67 |
permissions | -rw-r--r-- |
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: |