| Index: runtime/vm/tags.cc
|
| diff --git a/runtime/vm/tags.cc b/runtime/vm/tags.cc
|
| index 84b40f4f24ecfae6bf57aeb2dd06f101c736bf28..f05aa22cc77cf3b478de034d91fd3d78e946f146 100644
|
| --- a/runtime/vm/tags.cc
|
| +++ b/runtime/vm/tags.cc
|
| @@ -5,14 +5,15 @@
|
| #include "vm/tags.h"
|
|
|
| #include "vm/isolate.h"
|
| +#include "vm/json_stream.h"
|
|
|
| namespace dart {
|
|
|
| -const char* VMTag::TagName(uword id) {
|
| - ASSERT(id != kInvalidTagId);
|
| - ASSERT(id < kNumVMTags);
|
| - const TagEntry& entry = entries_[id];
|
| - ASSERT(entry.id == id);
|
| +const char* VMTag::TagName(uword tag) {
|
| + ASSERT(tag != kInvalidTagId);
|
| + ASSERT(tag < kNumVMTags);
|
| + const TagEntry& entry = entries_[tag];
|
| + ASSERT(entry.id == tag);
|
| return entry.name;
|
| }
|
|
|
| @@ -41,4 +42,40 @@ VMTagScope::~VMTagScope() {
|
| }
|
|
|
|
|
| +VMTagCounters::VMTagCounters() {
|
| + for (intptr_t i = 0; i < VMTag::kNumVMTags; i++) {
|
| + counters_[i] = 0;
|
| + }
|
| +}
|
| +
|
| +
|
| +void VMTagCounters::Increment(uword tag) {
|
| + ASSERT(tag != VMTag::kInvalidTagId);
|
| + ASSERT(tag < VMTag::kNumVMTags);
|
| + counters_[tag]++;
|
| +}
|
| +
|
| +
|
| +int64_t VMTagCounters::count(uword tag) {
|
| + ASSERT(tag != VMTag::kInvalidTagId);
|
| + ASSERT(tag < VMTag::kNumVMTags);
|
| + return counters_[tag];
|
| +}
|
| +
|
| +
|
| +void VMTagCounters::PrintToJSONObject(JSONObject* obj) {
|
| + {
|
| + JSONArray arr(obj, "names");
|
| + for (intptr_t i = 1; i < VMTag::kNumVMTags; i++) {
|
| + arr.AddValue(VMTag::TagName(i));
|
| + }
|
| + }
|
| + {
|
| + JSONArray arr(obj, "counters");
|
| + for (intptr_t i = 1; i < VMTag::kNumVMTags; i++) {
|
| + arr.AddValue64(counters_[i]);
|
| + }
|
| + }
|
| +}
|
| +
|
| } // namespace dart
|
|
|