memory_history.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/memory_history.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc {
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<MemoryHistory> MemoryHistory::Create() {
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return make_scoped_ptr(new MemoryHistory());
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)MemoryHistory::MemoryHistory() {}
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MemoryHistory::SaveEntry(const MemoryHistory::Entry& entry) {
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ring_buffer_.SaveToBuffer(entry);
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MemoryHistory::GetMinAndMax(size_t* min, size_t* max) const {
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  *min = std::numeric_limits<size_t>::max();
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  *max = 0;
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  for (RingBufferType::Iterator it = ring_buffer_.Begin(); it; ++it) {
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    size_t bytes_total = it->bytes_total();
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (bytes_total < *min)
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      *min = bytes_total;
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (bytes_total > *max)
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      *max = bytes_total;
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (*min > *max)
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    *min = *max;
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace cc
38