@@ -17,8 +17,7 @@ namespace snmalloc
1717 {
1818 using ContainsParent<ParentRange>::parent;
1919
20- static inline std::atomic<size_t > current_usage{};
21- static inline std::atomic<size_t > peak_usage{};
20+ static inline Stat usage{};
2221
2322 public:
2423 static constexpr bool Aligned = ParentRange::Aligned;
@@ -29,36 +28,28 @@ namespace snmalloc
2928
3029 constexpr Type () = default;
3130
32- CapPtr <void , ChunkBounds > alloc_range (size_t size)
31+ capptr::Arena <void > alloc_range (size_t size)
3332 {
34- auto result = parent.alloc_range (size);
35- if (result != nullptr )
36- {
37- auto prev = current_usage.fetch_add (size);
38- auto curr = peak_usage.load ();
39- while (curr < prev + size)
40- {
41- if (peak_usage.compare_exchange_weak (curr, prev + size))
42- break ;
43- }
44- }
45- return result;
33+ auto r = parent.alloc_range (size);
34+ if (r != nullptr )
35+ usage += size;
36+ return r;
4637 }
4738
48- void dealloc_range (CapPtr <void , ChunkBounds > base, size_t size)
39+ void dealloc_range (capptr::Arena <void > base, size_t size)
4940 {
50- current_usage -= size;
41+ usage -= size;
5142 parent.dealloc_range (base, size);
5243 }
5344
5445 size_t get_current_usage ()
5546 {
56- return current_usage. load ();
47+ return usage. get_curr ();
5748 }
5849
5950 size_t get_peak_usage ()
6051 {
61- return peak_usage. load ();
52+ return usage. get_peak ();
6253 }
6354 };
6455 };
0 commit comments