blob: 7e43d9a6c150c9bbdca1fe2f5a5814c5fb6c468a [file] [log] [blame]
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#include "vm/counters.h"
#include <string.h>
#include <map> // TODO(koda): Remove STL dependencies.
#include "platform/globals.h"
#include "vm/os.h"
namespace dart {
struct CStrLess {
bool operator()(const char* a, const char* b) const {
return strcmp(a, b) < 0;
}
};
Counters::~Counters() {
if (collision_) {
OS::PrintErr("Counters table collision; increase Counters::kSize.");
return;
}
typedef std::map<const char*, int64_t, CStrLess> TotalsMap;
TotalsMap totals;
for (int i = 0; i < kSize; ++i) {
const Counter& counter = counters_[i];
if (counter.name != NULL) {
totals[counter.name] += counter.value;
}
}
for (TotalsMap::iterator it = totals.begin(); it != totals.end(); ++it) {
OS::PrintErr("%s: %" Pd64 "\n", it->first, it->second);
}
}
} // namespace dart