public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Fix detailed mem report WRT hash tables
@ 2015-03-27 15:26 Jan Hubicka
  2015-03-30  9:13 ` Richard Biener
  2015-04-13 13:35 ` Jeff Law
  0 siblings, 2 replies; 3+ messages in thread
From: Jan Hubicka @ 2015-03-27 15:26 UTC (permalink / raw)
  To: gcc-patches

Hi,
I notieced that GGC hash tables are now accounted to hash-table.h:alloc_entries
that is not very informative (we do not have any stats for heap hash tables that
would be nice to have).

This patch fixes the first problem by adding annotations. OK (perhaps for next stage1?)
Bootstrapped/regtested x86_64-linux with and without gathering stats.

Honza

	* hash-table.c (hash_table constructor): Add mem stats.
	(alloc_entries): Likewise.
Index: hash-table.h
===================================================================
--- hash-table.h	(revision 221734)
+++ hash-table.h	(working copy)
@@ -615,7 +615,7 @@ class hash_table<Descriptor, Allocator,
   typedef typename Descriptor::compare_type compare_type;
 
 public:
-  hash_table (size_t);
+  hash_table (size_t CXX_MEM_STAT_INFO);
   ~hash_table ();
 
   /* Current size (in entries) of the hash table.  */
@@ -751,7 +751,8 @@ private:
 };
 
 template<typename Descriptor, template<typename Type> class Allocator>
-hash_table<Descriptor, Allocator, false>::hash_table (size_t size) :
+hash_table<Descriptor, Allocator, false>::hash_table (size_t size
+						      MEM_STAT_DECL) :
   m_n_elements (0), m_n_deleted (0), m_searches (0), m_collisions (0)
 {
   unsigned int size_prime_index;
@@ -1116,7 +1117,7 @@ class hash_table<Descriptor, Allocator,
   typedef typename Descriptor::compare_type compare_type;
 
 public:
-  explicit hash_table (size_t, bool ggc = false);
+  explicit hash_table (size_t, bool ggc = false CXX_MEM_STAT_INFO);
   ~hash_table ();
 
   /* Create a hash_table in gc memory.  */
@@ -1245,7 +1246,7 @@ private:
   template<typename T> friend void gt_pch_nx (hash_table<T> *,
 					      gt_pointer_operator, void *);
 
-  value_type *alloc_entries (size_t n) const;
+  value_type *alloc_entries (size_t n CXX_MEM_STAT_INFO) const;
   value_type *find_empty_slot_for_expand (hashval_t);
   void expand ();
   static bool is_deleted (value_type &v)
@@ -1295,7 +1296,8 @@ private:
 };
 
 template<typename Descriptor, template<typename Type> class Allocator>
-hash_table<Descriptor, Allocator, true>::hash_table (size_t size, bool ggc) :
+hash_table<Descriptor, Allocator, true>::hash_table (size_t size, bool ggc
+						     MEM_STAT_DECL) :
   m_n_elements (0), m_n_deleted (0), m_searches (0), m_collisions (0),
   m_ggc (ggc)
 {
@@ -1304,7 +1306,7 @@ hash_table<Descriptor, Allocator, true>:
   size_prime_index = hash_table_higher_prime_index (size);
   size = prime_tab[size_prime_index].prime;
 
-  m_entries = alloc_entries (size);
+  m_entries = alloc_entries (size PASS_MEM_STAT);
   m_size = size;
   m_size_prime_index = size_prime_index;
 }
@@ -1326,14 +1328,15 @@ hash_table<Descriptor, Allocator, true>:
 
 template<typename Descriptor, template<typename Type> class Allocator>
 inline typename hash_table<Descriptor, Allocator, true>::value_type *
-hash_table<Descriptor, Allocator, true>::alloc_entries (size_t n) const
+hash_table<Descriptor, Allocator, true>::alloc_entries
+	 (size_t n MEM_STAT_DECL) const
 {
   value_type *nentries;
 
   if (!m_ggc)
     nentries = Allocator <value_type> ::data_alloc (n);
   else
-    nentries = ::ggc_cleared_vec_alloc<value_type> (n);
+    nentries = ::ggc_cleared_vec_alloc<value_type> (n PASS_MEM_STAT);
 
   gcc_assert (nentries != NULL);
   for (size_t i = 0; i < n; i++)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Fix detailed mem report WRT hash tables
  2015-03-27 15:26 Fix detailed mem report WRT hash tables Jan Hubicka
@ 2015-03-30  9:13 ` Richard Biener
  2015-04-13 13:35 ` Jeff Law
  1 sibling, 0 replies; 3+ messages in thread
From: Richard Biener @ 2015-03-30  9:13 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: GCC Patches

On Fri, Mar 27, 2015 at 4:26 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
> Hi,
> I notieced that GGC hash tables are now accounted to hash-table.h:alloc_entries
> that is not very informative (we do not have any stats for heap hash tables that
> would be nice to have).
>
> This patch fixes the first problem by adding annotations. OK (perhaps for next stage1?)

Ok for stage1.

Thanks,
Richard.

> Bootstrapped/regtested x86_64-linux with and without gathering stats.
>
> Honza
>
>         * hash-table.c (hash_table constructor): Add mem stats.
>         (alloc_entries): Likewise.
> Index: hash-table.h
> ===================================================================
> --- hash-table.h        (revision 221734)
> +++ hash-table.h        (working copy)
> @@ -615,7 +615,7 @@ class hash_table<Descriptor, Allocator,
>    typedef typename Descriptor::compare_type compare_type;
>
>  public:
> -  hash_table (size_t);
> +  hash_table (size_t CXX_MEM_STAT_INFO);
>    ~hash_table ();
>
>    /* Current size (in entries) of the hash table.  */
> @@ -751,7 +751,8 @@ private:
>  };
>
>  template<typename Descriptor, template<typename Type> class Allocator>
> -hash_table<Descriptor, Allocator, false>::hash_table (size_t size) :
> +hash_table<Descriptor, Allocator, false>::hash_table (size_t size
> +                                                     MEM_STAT_DECL) :
>    m_n_elements (0), m_n_deleted (0), m_searches (0), m_collisions (0)
>  {
>    unsigned int size_prime_index;
> @@ -1116,7 +1117,7 @@ class hash_table<Descriptor, Allocator,
>    typedef typename Descriptor::compare_type compare_type;
>
>  public:
> -  explicit hash_table (size_t, bool ggc = false);
> +  explicit hash_table (size_t, bool ggc = false CXX_MEM_STAT_INFO);
>    ~hash_table ();
>
>    /* Create a hash_table in gc memory.  */
> @@ -1245,7 +1246,7 @@ private:
>    template<typename T> friend void gt_pch_nx (hash_table<T> *,
>                                               gt_pointer_operator, void *);
>
> -  value_type *alloc_entries (size_t n) const;
> +  value_type *alloc_entries (size_t n CXX_MEM_STAT_INFO) const;
>    value_type *find_empty_slot_for_expand (hashval_t);
>    void expand ();
>    static bool is_deleted (value_type &v)
> @@ -1295,7 +1296,8 @@ private:
>  };
>
>  template<typename Descriptor, template<typename Type> class Allocator>
> -hash_table<Descriptor, Allocator, true>::hash_table (size_t size, bool ggc) :
> +hash_table<Descriptor, Allocator, true>::hash_table (size_t size, bool ggc
> +                                                    MEM_STAT_DECL) :
>    m_n_elements (0), m_n_deleted (0), m_searches (0), m_collisions (0),
>    m_ggc (ggc)
>  {
> @@ -1304,7 +1306,7 @@ hash_table<Descriptor, Allocator, true>:
>    size_prime_index = hash_table_higher_prime_index (size);
>    size = prime_tab[size_prime_index].prime;
>
> -  m_entries = alloc_entries (size);
> +  m_entries = alloc_entries (size PASS_MEM_STAT);
>    m_size = size;
>    m_size_prime_index = size_prime_index;
>  }
> @@ -1326,14 +1328,15 @@ hash_table<Descriptor, Allocator, true>:
>
>  template<typename Descriptor, template<typename Type> class Allocator>
>  inline typename hash_table<Descriptor, Allocator, true>::value_type *
> -hash_table<Descriptor, Allocator, true>::alloc_entries (size_t n) const
> +hash_table<Descriptor, Allocator, true>::alloc_entries
> +        (size_t n MEM_STAT_DECL) const
>  {
>    value_type *nentries;
>
>    if (!m_ggc)
>      nentries = Allocator <value_type> ::data_alloc (n);
>    else
> -    nentries = ::ggc_cleared_vec_alloc<value_type> (n);
> +    nentries = ::ggc_cleared_vec_alloc<value_type> (n PASS_MEM_STAT);
>
>    gcc_assert (nentries != NULL);
>    for (size_t i = 0; i < n; i++)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Fix detailed mem report WRT hash tables
  2015-03-27 15:26 Fix detailed mem report WRT hash tables Jan Hubicka
  2015-03-30  9:13 ` Richard Biener
@ 2015-04-13 13:35 ` Jeff Law
  1 sibling, 0 replies; 3+ messages in thread
From: Jeff Law @ 2015-04-13 13:35 UTC (permalink / raw)
  To: Jan Hubicka, gcc-patches

On 03/27/2015 09:26 AM, Jan Hubicka wrote:
> Hi,
> I notieced that GGC hash tables are now accounted to hash-table.h:alloc_entries
> that is not very informative (we do not have any stats for heap hash tables that
> would be nice to have).
>
> This patch fixes the first problem by adding annotations. OK (perhaps for next stage1?)
> Bootstrapped/regtested x86_64-linux with and without gathering stats.
>
> Honza
>
> 	* hash-table.c (hash_table constructor): Add mem stats.
> 	(alloc_entries): Likewise.
OK for the trunk.

jeff

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-04-13 13:35 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-27 15:26 Fix detailed mem report WRT hash tables Jan Hubicka
2015-03-30  9:13 ` Richard Biener
2015-04-13 13:35 ` Jeff Law

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).