Simplify arena_migrate() to take arena_t* instead of indices.
This makes debugging slightly easier and avoids the confusion of "should we create new arenas" here.
This commit is contained in:
parent
648b3b9f76
commit
ddb170b1d9
@ -62,7 +62,7 @@ void arena_set(unsigned ind, arena_t *arena);
|
|||||||
unsigned narenas_total_get(void);
|
unsigned narenas_total_get(void);
|
||||||
arena_t *arena_init(tsdn_t *tsdn, unsigned ind, const arena_config_t *config);
|
arena_t *arena_init(tsdn_t *tsdn, unsigned ind, const arena_config_t *config);
|
||||||
arena_t *arena_choose_hard(tsd_t *tsd, bool internal);
|
arena_t *arena_choose_hard(tsd_t *tsd, bool internal);
|
||||||
void arena_migrate(tsd_t *tsd, unsigned oldind, unsigned newind);
|
void arena_migrate(tsd_t *tsd, arena_t *oldarena, arena_t *newarena);
|
||||||
void iarena_cleanup(tsd_t *tsd);
|
void iarena_cleanup(tsd_t *tsd);
|
||||||
void arena_cleanup(tsd_t *tsd);
|
void arena_cleanup(tsd_t *tsd);
|
||||||
size_t batch_alloc(void **ptrs, size_t num, size_t size, int flags);
|
size_t batch_alloc(void **ptrs, size_t num, size_t size, int flags);
|
||||||
|
@ -16,7 +16,7 @@ percpu_arena_update(tsd_t *tsd, unsigned cpu) {
|
|||||||
assert(newarena != NULL);
|
assert(newarena != NULL);
|
||||||
|
|
||||||
/* Set new arena/tcache associations. */
|
/* Set new arena/tcache associations. */
|
||||||
arena_migrate(tsd, oldind, newind);
|
arena_migrate(tsd, oldarena, newarena);
|
||||||
tcache_t *tcache = tcache_get(tsd);
|
tcache_t *tcache = tcache_get(tsd);
|
||||||
if (tcache != NULL) {
|
if (tcache != NULL) {
|
||||||
tcache_slow_t *tcache_slow = tsd_tcache_slowp_get(tsd);
|
tcache_slow_t *tcache_slow = tsd_tcache_slowp_get(tsd);
|
||||||
|
@ -2259,7 +2259,7 @@ thread_arena_ctl(tsd_t *tsd, const size_t *mib, size_t miblen,
|
|||||||
goto label_return;
|
goto label_return;
|
||||||
}
|
}
|
||||||
/* Set new arena/tcache associations. */
|
/* Set new arena/tcache associations. */
|
||||||
arena_migrate(tsd, oldind, newind);
|
arena_migrate(tsd, oldarena, newarena);
|
||||||
if (tcache_available(tsd)) {
|
if (tcache_available(tsd)) {
|
||||||
tcache_arena_reassociate(tsd_tsdn(tsd),
|
tcache_arena_reassociate(tsd_tsdn(tsd),
|
||||||
tsd_tcache_slowp_get(tsd), tsd_tcachep_get(tsd),
|
tsd_tcache_slowp_get(tsd), tsd_tcachep_get(tsd),
|
||||||
|
@ -464,11 +464,10 @@ arena_bind(tsd_t *tsd, unsigned ind, bool internal) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
arena_migrate(tsd_t *tsd, unsigned oldind, unsigned newind) {
|
arena_migrate(tsd_t *tsd, arena_t *oldarena, arena_t *newarena) {
|
||||||
arena_t *oldarena, *newarena;
|
assert(oldarena != NULL);
|
||||||
|
assert(newarena != NULL);
|
||||||
|
|
||||||
oldarena = arena_get(tsd_tsdn(tsd), oldind, false);
|
|
||||||
newarena = arena_get(tsd_tsdn(tsd), newind, false);
|
|
||||||
arena_nthreads_dec(oldarena, false);
|
arena_nthreads_dec(oldarena, false);
|
||||||
arena_nthreads_inc(newarena, false);
|
arena_nthreads_inc(newarena, false);
|
||||||
tsd_arena_set(tsd, newarena);
|
tsd_arena_set(tsd, newarena);
|
||||||
|
Loading…
Reference in New Issue
Block a user