[PATCH 10/11] Remove extra argument for malloc_tsd_cleanup_register
Mike Hommey
mh+jemalloc at glandium.org
Wed Apr 18 09:29:49 PDT 2012
From: Mike Hommey <mh at glandium.org>
Bookkeeping an extra argument that actually only stores a function pointer
for a function we already have is not very useful.
---
include/jemalloc/internal/tsd.h | 15 +++++----------
src/tsd.c | 7 +++----
2 files changed, 8 insertions(+), 14 deletions(-)
diff --git a/include/jemalloc/internal/tsd.h b/include/jemalloc/internal/tsd.h
index db6b1a6..8f671a2 100644
--- a/include/jemalloc/internal/tsd.h
+++ b/include/jemalloc/internal/tsd.h
@@ -4,11 +4,7 @@
/* Maximum number of malloc_tsd users with cleanup functions. */
#define MALLOC_TSD_CLEANUPS_MAX 8
-typedef struct malloc_tsd_cleanup_s malloc_tsd_cleanup_t;
-struct malloc_tsd_cleanup_s {
- bool (*f)(void *);
- void *arg;
-};
+typedef bool (*malloc_tsd_cleanup_t)(void);
/*
* TLS/TSD-agnostic macro-based implementation of thread-specific data. There
@@ -110,13 +106,12 @@ a_attr bool a_name##_booted = false;
a_cleanup) \
/* Initialization/cleanup. */ \
a_attr bool \
-a_name##_tsd_cleanup_wrapper(void *arg) \
+a_name##_tsd_cleanup_wrapper(void) \
{ \
- bool (*cleanup)(void *) = arg; \
\
if (a_name##_initialized) { \
a_name##_initialized = false; \
- cleanup(&a_name##_tls); \
+ a_cleanup(&a_name##_tls); \
} \
return (a_name##_initialized); \
} \
@@ -126,7 +121,7 @@ a_name##_tsd_boot(void) \
\
if (a_cleanup != malloc_tsd_no_cleanup) { \
malloc_tsd_cleanup_register( \
- &a_name##_tsd_cleanup_wrapper, a_cleanup); \
+ &a_name##_tsd_cleanup_wrapper); \
} \
a_name##_booted = true; \
return (false); \
@@ -290,7 +285,7 @@ a_name##_tsd_set(a_type *val) \
void *malloc_tsd_malloc(size_t size);
void malloc_tsd_dalloc(void *wrapper);
void malloc_tsd_no_cleanup(void *);
-void malloc_tsd_cleanup_register(bool (*f)(void *), void *arg);
+void malloc_tsd_cleanup_register(bool (*f)(void));
void malloc_tsd_boot(void);
#endif /* JEMALLOC_H_EXTERNS */
diff --git a/src/tsd.c b/src/tsd.c
index 0838dc8..8e5e716 100644
--- a/src/tsd.c
+++ b/src/tsd.c
@@ -45,7 +45,7 @@ _malloc_thread_cleanup(void)
again = false;
for (i = 0; i < ncleanups; i++) {
if (pending[i]) {
- pending[i] = cleanups[i].f(cleanups[i].arg);
+ pending[i] = cleanups[i]();
if (pending[i])
again = true;
}
@@ -55,12 +55,11 @@ _malloc_thread_cleanup(void)
#endif
void
-malloc_tsd_cleanup_register(bool (*f)(void *), void *arg)
+malloc_tsd_cleanup_register(bool (*f)(void))
{
assert(ncleanups < MALLOC_TSD_CLEANUPS_MAX);
- cleanups[ncleanups].f = f;
- cleanups[ncleanups].arg = arg;
+ cleanups[ncleanups] = f;
ncleanups++;
}
--
1.7.10
More information about the jemalloc-discuss
mailing list