Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Unified Diff: src/base/accounting-allocator.cc

Issue 2299753002: Made zone segments aligned in memory and included a pointer to the zone in the header. Larger objec…
Patch Set: Added a zone segment pool for small segments to avoid frequent sys calls Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/base/accounting-allocator.h ('k') | src/base/platform/platform.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/base/accounting-allocator.cc
diff --git a/src/base/accounting-allocator.cc b/src/base/accounting-allocator.cc
index c56f037c04c00a9e6ec97976a6b0fb614e7cd091..7313209577a0921e537746e991d789374dcb00a6 100644
--- a/src/base/accounting-allocator.cc
+++ b/src/base/accounting-allocator.cc
@@ -16,20 +16,24 @@ namespace base {
void* AccountingAllocator::Allocate(size_t bytes) {
void* memory = malloc(bytes);
if (memory) {
- AtomicWord current =
- NoBarrier_AtomicIncrement(&current_memory_usage_, bytes);
- AtomicWord max = NoBarrier_Load(&max_memory_usage_);
- while (current > max) {
- max = NoBarrier_CompareAndSwap(&max_memory_usage_, max, current);
- }
+ ChangeCurrentMemoryUsage(bytes);
}
return memory;
}
void AccountingAllocator::Free(void* memory, size_t bytes) {
free(memory);
- NoBarrier_AtomicIncrement(&current_memory_usage_,
- -static_cast<AtomicWord>(bytes));
+ ChangeCurrentMemoryUsage(-static_cast<int64_t>(bytes));
+}
+
+void AccountingAllocator::ChangeCurrentMemoryUsage(const int64_t bytes) {
+ AtomicWord current = NoBarrier_AtomicIncrement(&current_memory_usage_, bytes);
+ AtomicWord max = NoBarrier_Load(&max_memory_usage_);
+ if (bytes > 0) {
+ while (current > max) {
+ max = NoBarrier_CompareAndSwap(&max_memory_usage_, max, current);
+ }
+ }
}
size_t AccountingAllocator::GetCurrentMemoryUsage() const {
« no previous file with comments | « src/base/accounting-allocator.h ('k') | src/base/platform/platform.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698