1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/trace_event/process_memory_totals.h"
6
7 #include "base/format_macros.h"
8 #include "base/strings/stringprintf.h"
9 #include "base/trace_event/trace_event_argument.h"
10
11 namespace base {
12 namespace trace_event {
13
ProcessMemoryTotals()14 ProcessMemoryTotals::ProcessMemoryTotals()
15 : resident_set_bytes_(0),
16 peak_resident_set_bytes_(0),
17 is_peak_rss_resetable_(false) {
18 }
19
~ProcessMemoryTotals()20 ProcessMemoryTotals::~ProcessMemoryTotals() {}
21
AsValueInto(TracedValue * value) const22 void ProcessMemoryTotals::AsValueInto(TracedValue* value) const {
23 value->SetString("resident_set_bytes",
24 StringPrintf("%" PRIx64, resident_set_bytes_));
25 if (peak_resident_set_bytes_ > 0) {
26 value->SetString("peak_resident_set_bytes",
27 StringPrintf("%" PRIx64, peak_resident_set_bytes_));
28 value->SetBoolean("is_peak_rss_resetable", is_peak_rss_resetable_);
29 }
30
31 for (const auto it : extra_fields_) {
32 value->SetString(it.first, StringPrintf("%" PRIx64, it.second));
33 }
34 }
35
Clear()36 void ProcessMemoryTotals::Clear() {
37 resident_set_bytes_ = 0;
38 }
39
SetExtraFieldInBytes(const char * name,uint64_t value)40 void ProcessMemoryTotals::SetExtraFieldInBytes(const char* name,
41 uint64_t value) {
42 DCHECK_EQ(0u, extra_fields_.count(name));
43 extra_fields_[name] = value;
44 }
45
46 } // namespace trace_event
47 } // namespace base
48