Merge branch 'backport-840-hash-table-valgrind-glib-2-60' into 'glib-2-60'

Backport !840 “ghash: Disable small-arrays under valgrind” to glib-2-60

See merge request GNOME/glib!844
This commit is contained in:
Philip Withnall
2019-05-20 15:55:05 +00:00

View File

@@ -38,6 +38,7 @@
#include "gtestutils.h" #include "gtestutils.h"
#include "gslice.h" #include "gslice.h"
#include "grefcount.h" #include "grefcount.h"
#include "gvalgrind.h"
/* The following #pragma is here so we can do this... /* The following #pragma is here so we can do this...
* *
@@ -1014,6 +1015,7 @@ g_hash_table_new_full (GHashFunc hash_func,
GDestroyNotify value_destroy_func) GDestroyNotify value_destroy_func)
{ {
GHashTable *hash_table; GHashTable *hash_table;
gboolean small;
hash_table = g_slice_new (GHashTable); hash_table = g_slice_new (GHashTable);
g_hash_table_set_shift (hash_table, HASH_TABLE_MIN_SHIFT); g_hash_table_set_shift (hash_table, HASH_TABLE_MIN_SHIFT);
@@ -1031,14 +1033,24 @@ g_hash_table_new_full (GHashFunc hash_func,
hash_table->values = hash_table->keys; hash_table->values = hash_table->keys;
hash_table->hashes = g_new0 (guint, hash_table->size); 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 #ifdef USE_SMALL_ARRAYS
hash_table->have_big_keys = FALSE; small = TRUE;
hash_table->have_big_values = FALSE;
#else # ifdef ENABLE_VALGRIND
hash_table->have_big_keys = TRUE; if (RUNNING_ON_VALGRIND)
hash_table->have_big_values = TRUE; small = FALSE;
# endif
#endif #endif
hash_table->have_big_keys = !small;
hash_table->have_big_values = !small;
return hash_table; return hash_table;
} }