Home | History | Annotate | Download | only in trace_event
      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 
     14 ProcessMemoryTotals::ProcessMemoryTotals()
     15     : resident_set_bytes_(0),
     16       peak_resident_set_bytes_(0),
     17       is_peak_rss_resetable_(false) {
     18 }
     19 
     20 ProcessMemoryTotals::~ProcessMemoryTotals() {}
     21 
     22 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 
     36 void ProcessMemoryTotals::Clear() {
     37   resident_set_bytes_ = 0;
     38 }
     39 
     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