aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2014-05-17 19:47:36 +0200
committerMarc Glisse <glisse@gcc.gnu.org>2014-05-17 17:47:36 +0000
commit80333d3d23015d7e6e3a4380ccea5a04d807b9db (patch)
tree9d513fa25588d3793a824ee7c970c7b6469ff54d
parent86498dbaae86f711a98ea020441562de84946879 (diff)
downloadgcc-80333d3d23015d7e6e3a4380ccea5a04d807b9db.zip
gcc-80333d3d23015d7e6e3a4380ccea5a04d807b9db.tar.gz
gcc-80333d3d23015d7e6e3a4380ccea5a04d807b9db.tar.bz2
new_op.cc: Factor the calls to malloc, use __builtin_expect.
2014-05-17 Marc Glisse <marc.glisse@inria.fr> * libsupc++/new_op.cc: Factor the calls to malloc, use __builtin_expect. * libsupc++/new_opnt.cc: Likewise. From-SVN: r210560
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/libsupc++/new_op.cc5
-rw-r--r--libstdc++-v3/libsupc++/new_opnt.cc6
3 files changed, 9 insertions, 7 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 8c6b15b..429b168 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2014-05-17 Marc Glisse <marc.glisse@inria.fr>
+
+ * libsupc++/new_op.cc: Factor the calls to malloc, use __builtin_expect.
+ * libsupc++/new_opnt.cc: Likewise.
+
2014-05-17 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/60966
diff --git a/libstdc++-v3/libsupc++/new_op.cc b/libstdc++-v3/libsupc++/new_op.cc
index 4a3e858..fb54488 100644
--- a/libstdc++-v3/libsupc++/new_op.cc
+++ b/libstdc++-v3/libsupc++/new_op.cc
@@ -46,14 +46,13 @@ operator new (std::size_t sz) _GLIBCXX_THROW (std::bad_alloc)
/* malloc (0) is unpredictable; avoid it. */
if (sz == 0)
sz = 1;
- p = (void *) malloc (sz);
- while (p == 0)
+
+ while (__builtin_expect ((p = malloc (sz)) == 0, false))
{
new_handler handler = std::get_new_handler ();
if (! handler)
_GLIBCXX_THROW_OR_ABORT(bad_alloc());
handler ();
- p = (void *) malloc (sz);
}
return p;
diff --git a/libstdc++-v3/libsupc++/new_opnt.cc b/libstdc++-v3/libsupc++/new_opnt.cc
index b83da60..968082f 100644
--- a/libstdc++-v3/libsupc++/new_opnt.cc
+++ b/libstdc++-v3/libsupc++/new_opnt.cc
@@ -39,8 +39,8 @@ operator new (std::size_t sz, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
/* malloc (0) is unpredictable; avoid it. */
if (sz == 0)
sz = 1;
- p = (void *) malloc (sz);
- while (p == 0)
+
+ while (__builtin_expect ((p = malloc (sz)) == 0, false))
{
new_handler handler = std::get_new_handler ();
if (! handler)
@@ -53,8 +53,6 @@ operator new (std::size_t sz, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
{
return 0;
}
-
- p = (void *) malloc (sz);
}
return p;