aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2015-11-10 13:27:33 +0100
committerMartin Liska <marxin@gcc.gnu.org>2015-11-10 12:27:33 +0000
commit8bd37a2ec9774884a4609a7832b2293f62936962 (patch)
treee3f101b43dd441f9e25403f1f28c3ccfca3bc5cc
parentbea408857a7d48d27024a1e0f7ce5074c7fd3ebb (diff)
downloadgcc-8bd37a2ec9774884a4609a7832b2293f62936962.zip
gcc-8bd37a2ec9774884a4609a7832b2293f62936962.tar.gz
gcc-8bd37a2ec9774884a4609a7832b2293f62936962.tar.bz2
Enhance pool allocator
* alloc-pool.h (allocate_raw): New function. (operator new (size_t, object_allocator<T> &a)): Use the function instead of object_allocator::allocate). From-SVN: r230105
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/alloc-pool.h15
2 files changed, 20 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0763ca1..103b872 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-11-10 Martin Liska <mliska@suse.cz>
+
+ * alloc-pool.h (allocate_raw): New function.
+ (operator new (size_t, object_allocator<T> &a)): Use the
+ function instead of object_allocator::allocate).
+
2015-11-10 Ilya Enkovich <enkovich.gnu@gmail.com>
* config/i386/sse.md (HALFMASKMODE): New attribute.
diff --git a/gcc/alloc-pool.h b/gcc/alloc-pool.h
index bf9b0eb..38aff28 100644
--- a/gcc/alloc-pool.h
+++ b/gcc/alloc-pool.h
@@ -477,12 +477,25 @@ public:
m_allocator.release_if_empty ();
}
+
+ /* Allocate memory for instance of type T and call a default constructor. */
+
inline T *
allocate () ATTRIBUTE_MALLOC
{
return ::new (m_allocator.allocate ()) T;
}
+ /* Allocate memory for instance of type T and return void * that
+ could be used in situations where a default constructor is not provided
+ by the class T. */
+
+ inline void *
+ allocate_raw () ATTRIBUTE_MALLOC
+ {
+ return m_allocator.allocate ();
+ }
+
inline void
remove (T *object)
{
@@ -528,7 +541,7 @@ template <typename T>
inline void *
operator new (size_t, object_allocator<T> &a)
{
- return a.allocate ();
+ return a.allocate_raw ();
}
/* Hashtable mapping alloc_pool names to descriptors. */