// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/trace_event/process_memory_totals.h"
#include "base/format_macros.h"
#include "base/strings/stringprintf.h"
#include "base/trace_event/trace_event_argument.h"
namespace base {
namespace trace_event {
ProcessMemoryTotals::ProcessMemoryTotals()
: resident_set_bytes_(0),
peak_resident_set_bytes_(0),
is_peak_rss_resetable_(false) {
}
ProcessMemoryTotals::~ProcessMemoryTotals() {}
void ProcessMemoryTotals::AsValueInto(TracedValue* value) const {
value->SetString("resident_set_bytes",
StringPrintf("%" PRIx64, resident_set_bytes_));
if (peak_resident_set_bytes_ > 0) {
value->SetString("peak_resident_set_bytes",
StringPrintf("%" PRIx64, peak_resident_set_bytes_));
value->SetBoolean("is_peak_rss_resetable", is_peak_rss_resetable_);
}
for (const auto it : extra_fields_) {
value->SetString(it.first, StringPrintf("%" PRIx64, it.second));
}
}
void ProcessMemoryTotals::Clear() {
resident_set_bytes_ = 0;
}
void ProcessMemoryTotals::SetExtraFieldInBytes(const char* name,
uint64_t value) {
DCHECK_EQ(0u, extra_fields_.count(name));
extra_fields_[name] = value;
}
} // namespace trace_event
} // namespace base