Chromium Code Reviews| Index: runtime/vm/tags.cc |
| diff --git a/runtime/vm/tags.cc b/runtime/vm/tags.cc |
| index f05aa22cc77cf3b478de034d91fd3d78e946f146..b1695b82fb0ee550c65cf85fdd79bf04154f0cfa 100644 |
| --- a/runtime/vm/tags.cc |
| +++ b/runtime/vm/tags.cc |
| @@ -6,6 +6,8 @@ |
| #include "vm/isolate.h" |
| #include "vm/json_stream.h" |
| +#include "vm/object.h" |
| +#include "vm/object_store.h" |
| namespace dart { |
| @@ -78,4 +80,34 @@ void VMTagCounters::PrintToJSONObject(JSONObject* obj) { |
| } |
| } |
| + |
| +const char* UserTagHelper::TagName(uword tag_address) { |
| + Isolate* isolate = Isolate::Current(); |
| + const Instance& tag = Instance::Handle( |
|
Cutch
2014/04/09 20:28:54
This is dead code.
|
| + isolate, |
| + reinterpret_cast<RawInstance*>(tag_address)); |
| + if (tag.IsNull()) { |
| + return "Default User Tag"; |
| + } |
| + const Library& profiler_lib = Library::Handle( |
| + isolate, |
| + isolate->object_store()->profiler_library()); |
| + ASSERT(!profiler_lib.IsNull()); |
| + const String& tag_class_name = String::Handle(isolate, String::New("Tag")); |
| + ASSERT(!tag_class_name.IsNull()); |
| + const Class& tag_class = Class::Handle( |
| + profiler_lib.LookupClass(tag_class_name)); |
| + ASSERT(!tag_class.IsNull()); |
| + const String& label_field_name = String::Handle(String::New("label")); |
| + ASSERT(!label_field_name.IsNull()); |
| + const Field& label_field = |
| + Field::Handle(tag_class.LookupField(label_field_name)); |
| + ASSERT(!label_field.IsNull()); |
| + const Object& field = Object::Handle(tag.GetField(label_field)); |
| + ASSERT(!field.IsNull()); |
| + const String& label = String::Cast(field); |
| + return label.ToCString(); |
| +} |
| + |
| + |
| } // namespace dart |