[glib/wip/desrt/ghash-valgrind] ghash: Disable small-arrays under valgrind
- From: Allison Karlitskaya <desrt src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/desrt/ghash-valgrind] ghash: Disable small-arrays under valgrind
- Date: Tue, 14 May 2019 11:11:57 +0000 (UTC)
commit 9b979e8fe43d813014200cc532de42c7f863084a
Author: Allison Karlitskaya <allison karlitskaya redhat com>
Date: Tue May 14 09:49:56 2019 +0200
ghash: Disable small-arrays under valgrind
Valgrind can't find 64bit pointers when we pack them into an array of
32bit values. Disable this optimisation if we detect that we are
running under valgrind.
Fixes #1749
glib/ghash.c | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
---
diff --git a/glib/ghash.c b/glib/ghash.c
index 48696e3b0..242465e31 100644
--- a/glib/ghash.c
+++ b/glib/ghash.c
@@ -38,6 +38,7 @@
#include "gtestutils.h"
#include "gslice.h"
#include "grefcount.h"
+#include "gvalgrind.h"
/* The following #pragma is here so we can do this...
*
@@ -1016,6 +1017,7 @@ g_hash_table_new_full (GHashFunc hash_func,
GDestroyNotify value_destroy_func)
{
GHashTable *hash_table;
+ gboolean small;
hash_table = g_slice_new (GHashTable);
g_hash_table_set_shift (hash_table, HASH_TABLE_MIN_SHIFT);
@@ -1033,14 +1035,27 @@ g_hash_table_new_full (GHashFunc hash_func,
hash_table->values = hash_table->keys;
hash_table->hashes = g_new0 (guint, hash_table->size);
+ /* We want to use small arrays only if:
+ * - we are running on a system where that makes sense (64 bit); and
+ * - we are not running under valgrind.
+ */
+ small = FALSE;
+
#ifdef USE_SMALL_ARRAYS
- hash_table->have_big_keys = FALSE;
- hash_table->have_big_values = FALSE;
-#else
- hash_table->have_big_keys = TRUE;
- hash_table->have_big_values = TRUE;
+ small = TRUE;
+
+# ifdef ENABLE_VALGRIND
+ if (RUNNING_ON_VALGRIND)
+ {
+ g_printerr ("byebye\n");
+ small = FALSE;
+ }
+# endif
#endif
+ hash_table->have_big_keys = !small;
+ hash_table->have_big_values = !small;
+
return hash_table;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]