diff options
author | David Goldblatt <davidgoldblatt@fb.com> | 2017-03-13 23:18:40 (GMT) |
---|---|---|
committer | David Goldblatt <davidtgoldblatt@gmail.com> | 2017-03-14 01:22:33 (GMT) |
commit | ee202efc79d650e16e3ecb1569efccbc5666e116 (patch) | |
tree | 29db85be47aeabdab0823fcaefbe242ef41127ee /include/jemalloc | |
parent | 4fc2acf5aef9ea8fe7e2dd39ee8b6a5050c5ff7f (diff) | |
download | jemalloc-ee202efc79d650e16e3ecb1569efccbc5666e116.zip jemalloc-ee202efc79d650e16e3ecb1569efccbc5666e116.tar.gz jemalloc-ee202efc79d650e16e3ecb1569efccbc5666e116.tar.bz2 |
Convert remaining arena_stats_t fields to atomics
These were all size_ts, so we have atomics support for them on all platforms, so
the conversion is straightforward.
Left non-atomic is curlextents, which AFAICT is not used atomically anywhere.
Diffstat (limited to 'include/jemalloc')
-rw-r--r-- | include/jemalloc/internal/arena_inlines_a.h | 6 | ||||
-rw-r--r-- | include/jemalloc/internal/stats_structs.h | 14 |
2 files changed, 10 insertions, 10 deletions
diff --git a/include/jemalloc/internal/arena_inlines_a.h b/include/jemalloc/internal/arena_inlines_a.h index 9dd5304..e1c4765 100644 --- a/include/jemalloc/internal/arena_inlines_a.h +++ b/include/jemalloc/internal/arena_inlines_a.h @@ -19,17 +19,17 @@ arena_ind_get(const arena_t *arena) { JEMALLOC_INLINE void arena_internal_add(arena_t *arena, size_t size) { - atomic_add_zu(&arena->stats.internal, size); + atomic_fetch_add_zu(&arena->stats.internal, size, ATOMIC_RELAXED); } JEMALLOC_INLINE void arena_internal_sub(arena_t *arena, size_t size) { - atomic_sub_zu(&arena->stats.internal, size); + atomic_fetch_sub_zu(&arena->stats.internal, size, ATOMIC_RELAXED); } JEMALLOC_INLINE size_t arena_internal_get(arena_t *arena) { - return atomic_read_zu(&arena->stats.internal); + return atomic_load_zu(&arena->stats.internal, ATOMIC_RELAXED); } JEMALLOC_INLINE bool diff --git a/include/jemalloc/internal/stats_structs.h b/include/jemalloc/internal/stats_structs.h index b64ba2d..4e9c898 100644 --- a/include/jemalloc/internal/stats_structs.h +++ b/include/jemalloc/internal/stats_structs.h @@ -88,7 +88,7 @@ struct arena_stats_s { #endif /* Number of bytes currently mapped, excluding retained memory. */ - size_t mapped; /* Partially derived. */ + atomic_zu_t mapped; /* Partially derived. */ /* * Number of bytes currently retained as a side effect of munmap() being @@ -96,7 +96,7 @@ struct arena_stats_s { * always decommitted or purged), but they are excluded from the mapped * statistic (above). */ - size_t retained; /* Derived. */ + atomic_zu_t retained; /* Derived. */ /* * Total number of purge sweeps, total number of madvise calls made, @@ -107,17 +107,17 @@ struct arena_stats_s { arena_stats_u64_t nmadvise; arena_stats_u64_t purged; - size_t base; /* Derived. */ - size_t internal; - size_t resident; /* Derived. */ + atomic_zu_t base; /* Derived. */ + atomic_zu_t internal; + atomic_zu_t resident; /* Derived. */ - size_t allocated_large; /* Derived. */ + atomic_zu_t allocated_large; /* Derived. */ arena_stats_u64_t nmalloc_large; /* Derived. */ arena_stats_u64_t ndalloc_large; /* Derived. */ arena_stats_u64_t nrequests_large; /* Derived. */ /* Number of bytes cached in tcache associated with this arena. */ - size_t tcache_bytes; /* Derived. */ + atomic_zu_t tcache_bytes; /* Derived. */ /* One element for each large size class. */ malloc_large_stats_t lstats[NSIZES - NBINS]; |