This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.18-571-g5782a80


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  5782a80f9f8ca86899b30161166f044b0b6b8590 (commit)
      from  aeb95445d128323cdaf9556b9a75c6c9b5a7b980 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=5782a80f9f8ca86899b30161166f044b0b6b8590

commit 5782a80f9f8ca86899b30161166f044b0b6b8590
Author: OndÅ?ej Bílka <neleai@seznam.cz>
Date:   Tue Dec 10 17:56:59 2013 +0100

    Drop PER_THREAD conditionals from malloc.

diff --git a/ChangeLog b/ChangeLog
index 65a4ac2..12bbfbf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2013-12-10  OndÅ?ej Bílka  <neleai@seznam.cz>
+
+	* malloc/Makefile (CPPFLAGS-malloc.c): Remove -DPER_THREAD flag.
+	* malloc/arena.c: Remove PER_THREAD conditional.
+	[!PER_THREAD]: Remove code.
+	(ptmalloc_unlock_all2): Likewise.
+	(ptmalloc_init): Likewise.
+	(_int_new_arena): Likewise.
+	(arena_get2): Likewise.
+	* malloc/hooks.c (__malloc_get_state): Likewise.
+	(__malloc_set_state): Likewise.
+	* malloc/malloc.c: Likewise.
+	(struct malloc_state): Likewise.
+	(struct malloc_par): Likewise.
+	(__libc_realloc): Likewise.
+	(__libc_mallopt): Likewise.
+
 2013-12-09  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
 	* Versions.def (libm): Add GLIBC_2.3 and GLIBC_2.19.
diff --git a/malloc/Makefile b/malloc/Makefile
index 84339d1..0c1e19f 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -119,7 +119,6 @@ endif
 tst-mcheck-ENV = MALLOC_CHECK_=3
 tst-malloc-usable-ENV = MALLOC_CHECK_=3
 
-CPPFLAGS-malloc.c += -DPER_THREAD
 # Uncomment this for test releases.  For public releases it is too expensive.
 #CPPFLAGS-malloc.o += -DMALLOC_DEBUG=1
 
diff --git a/malloc/arena.c b/malloc/arena.c
index 4e83fdb..9d49f93 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -75,10 +75,8 @@ extern int sanity_check_heap_info_alignment[(sizeof (heap_info)
 
 static tsd_key_t arena_key;
 static mutex_t list_lock = MUTEX_INITIALIZER;
-#ifdef PER_THREAD
 static size_t narenas = 1;
 static mstate free_list;
-#endif
 
 #if THREAD_STATS
 static int stat_n_heaps;
@@ -114,21 +112,12 @@ int __malloc_initialized = -1;
   ptr = (mstate)tsd_getspecific(arena_key, vptr); \
 } while(0)
 
-#ifdef PER_THREAD
 # define arena_lock(ptr, size) do { \
   if(ptr) \
     (void)mutex_lock(&ptr->mutex); \
   else \
     ptr = arena_get2(ptr, (size), NULL); \
 } while(0)
-#else
-# define arena_lock(ptr, size) do { \
-  if(ptr && !mutex_trylock(&ptr->mutex)) { \
-    THREAD_STAT(++(ptr->stat_lock_direct)); \
-  } else \
-    ptr = arena_get2(ptr, (size), NULL); \
-} while(0)
-#endif
 
 /* find the heap and corresponding arena for a given ptr */
 
@@ -292,17 +281,13 @@ ptmalloc_unlock_all2 (void)
   tsd_setspecific(arena_key, save_arena);
   __malloc_hook = save_malloc_hook;
   __free_hook = save_free_hook;
-#ifdef PER_THREAD
   free_list = NULL;
-#endif
   for(ar_ptr = &main_arena;;) {
     mutex_init(&ar_ptr->mutex);
-#ifdef PER_THREAD
     if (ar_ptr != save_arena) {
       ar_ptr->next_free = free_list;
       free_list = ar_ptr;
     }
-#endif
     ar_ptr = ar_ptr->next;
     if(ar_ptr == &main_arena) break;
   }
@@ -423,13 +408,10 @@ ptmalloc_init (void)
 		{
 		  if (memcmp (envline, "MMAP_MAX_", 9) == 0)
 		    __libc_mallopt(M_MMAP_MAX, atoi(&envline[10]));
-#ifdef PER_THREAD
 		  else if (memcmp (envline, "ARENA_MAX", 9) == 0)
 		    __libc_mallopt(M_ARENA_MAX, atoi(&envline[10]));
-#endif
 		}
 	      break;
-#ifdef PER_THREAD
 	    case 10:
 	      if (! __builtin_expect (__libc_enable_secure, 0))
 		{
@@ -437,7 +419,6 @@ ptmalloc_init (void)
 		    __libc_mallopt(M_ARENA_TEST, atoi(&envline[11]));
 		}
 	      break;
-#endif
 	    case 15:
 	      if (! __builtin_expect (__libc_enable_secure, 0))
 		{
@@ -745,18 +726,14 @@ _int_new_arena(size_t size)
   mutex_init(&a->mutex);
   (void)mutex_lock(&a->mutex);
 
-#ifdef PER_THREAD
   (void)mutex_lock(&list_lock);
-#endif
 
   /* Add the new arena to the global list.  */
   a->next = main_arena.next;
   atomic_write_barrier ();
   main_arena.next = a;
 
-#ifdef PER_THREAD
   (void)mutex_unlock(&list_lock);
-#endif
 
   THREAD_STAT(++(a->stat_lock_loop));
 
@@ -764,7 +741,6 @@ _int_new_arena(size_t size)
 }
 
 
-#ifdef PER_THREAD
 static mstate
 get_free_list (void)
 {
@@ -827,7 +803,6 @@ reused_arena (mstate avoid_arena)
 
   return result;
 }
-#endif
 
 static mstate
 internal_function
@@ -835,7 +810,6 @@ arena_get2(mstate a_tsd, size_t size, mstate avoid_arena)
 {
   mstate a;
 
-#ifdef PER_THREAD
   static size_t narenas_limit;
 
   a = get_free_list ();
@@ -878,54 +852,6 @@ arena_get2(mstate a_tsd, size_t size, mstate avoid_arena)
       else
 	a = reused_arena (avoid_arena);
     }
-#else
-  if(!a_tsd)
-    a = a_tsd = &main_arena;
-  else {
-    a = a_tsd->next;
-    if(!a) {
-      /* This can only happen while initializing the new arena. */
-      (void)mutex_lock(&main_arena.mutex);
-      THREAD_STAT(++(main_arena.stat_lock_wait));
-      return &main_arena;
-    }
-  }
-
-  /* Check the global, circularly linked list for available arenas. */
-  bool retried = false;
- repeat:
-  do {
-    if(!mutex_trylock(&a->mutex)) {
-      if (retried)
-	(void)mutex_unlock(&list_lock);
-      THREAD_STAT(++(a->stat_lock_loop));
-      LIBC_PROBE (memory_arena_reuse, 2, a, a_tsd);
-      tsd_setspecific(arena_key, (void *)a);
-      return a;
-    }
-    a = a->next;
-  } while(a != a_tsd);
-
-  /* If not even the list_lock can be obtained, try again.  This can
-     happen during `atfork', or for example on systems where thread
-     creation makes it temporarily impossible to obtain _any_
-     locks. */
-  if(!retried && mutex_trylock(&list_lock)) {
-    /* We will block to not run in a busy loop.  */
-    LIBC_PROBE (memory_arena_reuse_wait, 3, &list_lock, NULL, a_tsd);
-    (void)mutex_lock(&list_lock);
-
-    /* Since we blocked there might be an arena available now.  */
-    retried = true;
-    a = a_tsd;
-    goto repeat;
-  }
-
-  /* Nothing immediately available, so generate a new arena.  */
-  a = _int_new_arena(size);
-  (void)mutex_unlock(&list_lock);
-#endif
-
   return a;
 }
 
@@ -951,7 +877,6 @@ arena_get_retry (mstate ar_ptr, size_t bytes)
   return ar_ptr;
 }
 
-#ifdef PER_THREAD
 static void __attribute__ ((section ("__libc_thread_freeres_fn")))
 arena_thread_freeres (void)
 {
@@ -968,7 +893,6 @@ arena_thread_freeres (void)
     }
 }
 text_set_element (__libc_thread_subfreeres, arena_thread_freeres);
-#endif
 
 /*
  * Local variables:
diff --git a/malloc/hooks.c b/malloc/hooks.c
index fdacdef..8784adb 100644
--- a/malloc/hooks.c
+++ b/malloc/hooks.c
@@ -476,11 +476,9 @@ __malloc_get_state(void)
   ms->max_mmapped_mem = mp_.max_mmapped_mem;
   ms->using_malloc_checking = using_malloc_checking;
   ms->max_fast = get_max_fast();
-#ifdef PER_THREAD
   ms->arena_test = mp_.arena_test;
   ms->arena_max = mp_.arena_max;
   ms->narenas = narenas;
-#endif
   (void)mutex_unlock(&main_arena.mutex);
   return (void*)ms;
 }
@@ -577,11 +575,9 @@ __malloc_set_state(void* msptr)
     }
   }
   if (ms->version >= 4) {
-#ifdef PER_THREAD
     mp_.arena_test = ms->arena_test;
     mp_.arena_max = ms->arena_max;
     narenas = ms->narenas;
-#endif
   }
   check_malloc_state(&main_arena);
 
diff --git a/malloc/malloc.c b/malloc/malloc.c
index ac8c3f6..4437ee2 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -1707,10 +1707,8 @@ struct malloc_state {
   /* Linked list */
   struct malloc_state *next;
 
-#ifdef PER_THREAD
   /* Linked list for free arenas.  */
   struct malloc_state *next_free;
-#endif
 
   /* Memory allocated from the system in this arena.  */
   INTERNAL_SIZE_T system_mem;
@@ -1722,10 +1720,8 @@ struct malloc_par {
   unsigned long    trim_threshold;
   INTERNAL_SIZE_T  top_pad;
   INTERNAL_SIZE_T  mmap_threshold;
-#ifdef PER_THREAD
   INTERNAL_SIZE_T  arena_test;
   INTERNAL_SIZE_T  arena_max;
-#endif
 
   /* Memory map support */
   int              n_mmaps;
@@ -1767,18 +1763,14 @@ static struct malloc_par mp_ =
     .n_mmaps_max    = DEFAULT_MMAP_MAX,
     .mmap_threshold = DEFAULT_MMAP_THRESHOLD,
     .trim_threshold = DEFAULT_TRIM_THRESHOLD,
-#ifdef PER_THREAD
 # define NARENAS_FROM_NCORES(n) ((n) * (sizeof(long) == 4 ? 2 : 8))
     .arena_test     = NARENAS_FROM_NCORES (1)
-#endif
   };
 
 
-#ifdef PER_THREAD
 /*  Non public mallopt parameters.  */
 #define M_ARENA_TEST -7
 #define M_ARENA_MAX  -8
-#endif
 
 
 /* Maximum size of memory handled in fastbins.  */
@@ -2981,11 +2973,6 @@ __libc_realloc(void* oldmem, size_t bytes)
   (void)mutex_lock(&ar_ptr->mutex);
 #endif
 
-#if !defined PER_THREAD
-  LIBC_PROBE (memory_arena_reuse_realloc, 1, ar_ptr);
-  /* As in malloc(), remember this arena for the next allocation. */
-  tsd_setspecific(arena_key, (void *)ar_ptr);
-#endif
 
   newp = _int_realloc(ar_ptr, oldp, oldsize, nb);
 
@@ -4688,7 +4675,6 @@ int __libc_mallopt(int param_number, int value)
     perturb_byte = value;
     break;
 
-#ifdef PER_THREAD
   case M_ARENA_TEST:
     if (value > 0)
       {
@@ -4704,7 +4690,6 @@ int __libc_mallopt(int param_number, int value)
 	mp_.arena_max = value;
       }
     break;
-#endif
   }
   (void)mutex_unlock(&av->mutex);
   return res;

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog       |   17 ++++++++++++
 malloc/Makefile |    1 -
 malloc/arena.c  |   76 -------------------------------------------------------
 malloc/hooks.c  |    4 ---
 malloc/malloc.c |   15 -----------
 5 files changed, 17 insertions(+), 96 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]