]> sourceware.org Git - glibc.git/commitdiff
Inline tcache functions
authorWilco Dijkstra <wdijkstr@arm.com>
Tue, 17 Oct 2017 17:25:43 +0000 (18:25 +0100)
committerWilco Dijkstra <wdijkstr@arm.com>
Tue, 17 Oct 2017 17:25:43 +0000 (18:25 +0100)
The functions tcache_get and tcache_put show up in profiles as they
are a critical part of the tcache code.  Inline them to give tcache
a 16% performance gain.  Since this improves multi-threaded cases
as well, it helps offset any potential performance loss due to adding
single-threaded fast paths.

* malloc/malloc.c (tcache_put): Inline.
(tcache_get): Inline.

ChangeLog
malloc/malloc.c

index 1bce8a4cc9eab2a7e2eb1e915c35c69543023799..8f47ecf552ab19b68e01b20c43283f8a9fee3080 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-10-17  Wilco Dijkstra  <wdijkstr@arm.com>
+
+       * malloc/malloc.c (tcache_put): Inline.
+       (tcache_get): Inline.
+
 2017-10-17  Jordi Mallach  <jordi@gnu.org>
 
        Aurelien Jarno  <aurelien@aurel32.net>
index d3fcadd20e4fd84e034731296f4f5f64e2389db9..302b34b67e542892087e1070f7dbc0cec0e1a6ad 100644 (file)
@@ -2921,7 +2921,7 @@ static __thread tcache_perthread_struct *tcache = NULL;
 
 /* Caller must ensure that we know tc_idx is valid and there's room
    for more chunks.  */
-static void
+static __always_inline void
 tcache_put (mchunkptr chunk, size_t tc_idx)
 {
   tcache_entry *e = (tcache_entry *) chunk2mem (chunk);
@@ -2933,7 +2933,7 @@ tcache_put (mchunkptr chunk, size_t tc_idx)
 
 /* Caller must ensure that we know tc_idx is valid and there's
    available chunks to remove.  */
-static void *
+static __always_inline void *
 tcache_get (size_t tc_idx)
 {
   tcache_entry *e = tcache->entries[tc_idx];
This page took 0.07567 seconds and 5 git commands to generate.