Move zone registration to zone.c
This commit is contained in:
parent
2cfe6d67ef
commit
71a93b8725
@ -82,7 +82,6 @@
|
|||||||
#define ckh_string_keycomp JEMALLOC_N(ckh_string_keycomp)
|
#define ckh_string_keycomp JEMALLOC_N(ckh_string_keycomp)
|
||||||
#define ckh_try_bucket_insert JEMALLOC_N(ckh_try_bucket_insert)
|
#define ckh_try_bucket_insert JEMALLOC_N(ckh_try_bucket_insert)
|
||||||
#define ckh_try_insert JEMALLOC_N(ckh_try_insert)
|
#define ckh_try_insert JEMALLOC_N(ckh_try_insert)
|
||||||
#define create_zone JEMALLOC_N(create_zone)
|
|
||||||
#define ctl_boot JEMALLOC_N(ctl_boot)
|
#define ctl_boot JEMALLOC_N(ctl_boot)
|
||||||
#define ctl_bymib JEMALLOC_N(ctl_bymib)
|
#define ctl_bymib JEMALLOC_N(ctl_bymib)
|
||||||
#define ctl_byname JEMALLOC_N(ctl_byname)
|
#define ctl_byname JEMALLOC_N(ctl_byname)
|
||||||
@ -195,6 +194,7 @@
|
|||||||
#define prof_tdata_init JEMALLOC_N(prof_tdata_init)
|
#define prof_tdata_init JEMALLOC_N(prof_tdata_init)
|
||||||
#define prof_tdata_tls JEMALLOC_N(prof_tdata_tls)
|
#define prof_tdata_tls JEMALLOC_N(prof_tdata_tls)
|
||||||
#define pthread_create JEMALLOC_N(pthread_create)
|
#define pthread_create JEMALLOC_N(pthread_create)
|
||||||
|
#define register_zone JEMALLOC_N(register_zone)
|
||||||
#define rtree_get JEMALLOC_N(rtree_get)
|
#define rtree_get JEMALLOC_N(rtree_get)
|
||||||
#define rtree_get_locked JEMALLOC_N(rtree_get_locked)
|
#define rtree_get_locked JEMALLOC_N(rtree_get_locked)
|
||||||
#define rtree_new JEMALLOC_N(rtree_new)
|
#define rtree_new JEMALLOC_N(rtree_new)
|
||||||
|
@ -12,8 +12,7 @@
|
|||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
#ifdef JEMALLOC_H_EXTERNS
|
#ifdef JEMALLOC_H_EXTERNS
|
||||||
|
|
||||||
malloc_zone_t *create_zone(void);
|
void register_zone(void);
|
||||||
void szone2ozone(malloc_zone_t *zone);
|
|
||||||
|
|
||||||
#endif /* JEMALLOC_H_EXTERNS */
|
#endif /* JEMALLOC_H_EXTERNS */
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
@ -712,26 +712,6 @@ malloc_init_hard(void)
|
|||||||
/* Copy the pointer to the one arena that was already initialized. */
|
/* Copy the pointer to the one arena that was already initialized. */
|
||||||
arenas[0] = init_arenas[0];
|
arenas[0] = init_arenas[0];
|
||||||
|
|
||||||
#ifdef JEMALLOC_ZONE
|
|
||||||
/* Register the custom zone. At this point it won't be the default. */
|
|
||||||
malloc_zone_t *jemalloc_zone = create_zone();
|
|
||||||
malloc_zone_register(jemalloc_zone);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Unregister and reregister the default zone. On OSX >= 10.6,
|
|
||||||
* unregistering takes the last registered zone and places it at the
|
|
||||||
* location of the specified zone. Unregistering the default zone thus
|
|
||||||
* makes the last registered one the default. On OSX < 10.6,
|
|
||||||
* unregistering shifts all registered zones. The first registered zone
|
|
||||||
* then becomes the default.
|
|
||||||
*/
|
|
||||||
do {
|
|
||||||
malloc_zone_t *default_zone = malloc_default_zone();
|
|
||||||
malloc_zone_unregister(default_zone);
|
|
||||||
malloc_zone_register(default_zone);
|
|
||||||
} while (malloc_default_zone() != jemalloc_zone);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
malloc_initialized = true;
|
malloc_initialized = true;
|
||||||
malloc_mutex_unlock(&init_lock);
|
malloc_mutex_unlock(&init_lock);
|
||||||
return (false);
|
return (false);
|
||||||
@ -743,8 +723,8 @@ void
|
|||||||
jemalloc_darwin_init(void)
|
jemalloc_darwin_init(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (malloc_init_hard())
|
if (malloc_init_hard() == false)
|
||||||
abort();
|
register_zone();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
22
src/zone.c
22
src/zone.c
@ -159,8 +159,8 @@ zone_force_unlock(malloc_zone_t *zone)
|
|||||||
jemalloc_postfork_parent();
|
jemalloc_postfork_parent();
|
||||||
}
|
}
|
||||||
|
|
||||||
malloc_zone_t *
|
void
|
||||||
create_zone(void)
|
register_zone(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
zone.size = (void *)zone_size;
|
zone.size = (void *)zone_size;
|
||||||
@ -206,5 +206,21 @@ create_zone(void)
|
|||||||
zone_introspect.enumerate_unavailable_without_blocks = NULL;
|
zone_introspect.enumerate_unavailable_without_blocks = NULL;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
return (&zone);
|
|
||||||
|
/* Register the custom zone. At this point it won't be the default. */
|
||||||
|
malloc_zone_register(&zone);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Unregister and reregister the default zone. On OSX >= 10.6,
|
||||||
|
* unregistering takes the last registered zone and places it at the
|
||||||
|
* location of the specified zone. Unregistering the default zone thus
|
||||||
|
* makes the last registered one the default. On OSX < 10.6,
|
||||||
|
* unregistering shifts all registered zones. The first registered zone
|
||||||
|
* then becomes the default.
|
||||||
|
*/
|
||||||
|
do {
|
||||||
|
malloc_zone_t *default_zone = malloc_default_zone();
|
||||||
|
malloc_zone_unregister(default_zone);
|
||||||
|
malloc_zone_register(default_zone);
|
||||||
|
} while (malloc_default_zone() != &zone);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user