mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 23:23:38 -04:00
Statistic/Timer: Include timers in PrintStatisticsJSON().
Differential Revision: https://reviews.llvm.org/D25588 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287370 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
+16
-16
@@ -29,7 +29,9 @@
|
||||
#include "llvm/Support/Format.h"
|
||||
#include "llvm/Support/ManagedStatic.h"
|
||||
#include "llvm/Support/Mutex.h"
|
||||
#include "llvm/Support/Timer.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Support/YAMLTraits.h"
|
||||
#include <algorithm>
|
||||
#include <cstring>
|
||||
using namespace llvm;
|
||||
@@ -60,6 +62,7 @@ class StatisticInfo {
|
||||
/// Sort statistics by debugtype,name,description.
|
||||
void sort();
|
||||
public:
|
||||
StatisticInfo();
|
||||
~StatisticInfo();
|
||||
|
||||
void addStatistic(const Statistic *S) {
|
||||
@@ -90,6 +93,11 @@ void Statistic::RegisterStatistic() {
|
||||
}
|
||||
}
|
||||
|
||||
StatisticInfo::StatisticInfo() {
|
||||
// Ensure timergroup lists are created first so they are destructed after us.
|
||||
TimerGroup::ConstructTimerLists();
|
||||
}
|
||||
|
||||
// Print information when destroyed, iff command line option is specified.
|
||||
StatisticInfo::~StatisticInfo() {
|
||||
if (::Stats || PrintOnExit)
|
||||
@@ -148,17 +156,6 @@ void llvm::PrintStatistics(raw_ostream &OS) {
|
||||
OS.flush();
|
||||
}
|
||||
|
||||
static void write_json_string_escaped(raw_ostream &OS, const char *string) {
|
||||
// Out current usage should not need any escaping. Keep it simple and just
|
||||
// check that the input is pure ASCII without special characers.
|
||||
#ifndef NDEBUG
|
||||
for (const unsigned char *c = (const unsigned char*)string; *c != '\0'; ++c) {
|
||||
assert(*c != '\\' && *c != '\"' && *c >= 0x20 && *c < 0x80);
|
||||
}
|
||||
#endif
|
||||
OS << string;
|
||||
}
|
||||
|
||||
void llvm::PrintStatisticsJSON(raw_ostream &OS) {
|
||||
StatisticInfo &Stats = *StatInfo;
|
||||
|
||||
@@ -169,13 +166,16 @@ void llvm::PrintStatisticsJSON(raw_ostream &OS) {
|
||||
const char *delim = "";
|
||||
for (const Statistic *Stat : Stats.Stats) {
|
||||
OS << delim;
|
||||
OS << "\t\"";
|
||||
write_json_string_escaped(OS, Stat->getDebugType());
|
||||
OS << '.';
|
||||
write_json_string_escaped(OS, Stat->getName());
|
||||
OS << "\": " << Stat->getValue();
|
||||
assert(!yaml::needsQuotes(Stat->getDebugType()) &&
|
||||
"Statistic group/type name is simple.");
|
||||
assert(!yaml::needsQuotes(Stat->getName()) && "Statistic name is simple");
|
||||
OS << "\t\"" << Stat->getDebugType() << '.' << Stat->getName() << "\": "
|
||||
<< Stat->getValue();
|
||||
delim = ",\n";
|
||||
}
|
||||
// Print timers.
|
||||
TimerGroup::printAllJSONValues(OS, delim);
|
||||
|
||||
OS << "\n}\n";
|
||||
OS.flush();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user