OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/service.h" | 5 #include "vm/service.h" |
6 | 6 |
7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
8 #include "include/dart_native_api.h" | 8 #include "include/dart_native_api.h" |
9 #include "platform/globals.h" | 9 #include "platform/globals.h" |
10 | 10 |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 // TODO(johnmccutchan): Unify embedder service handler lists and their APIs. | 101 // TODO(johnmccutchan): Unify embedder service handler lists and their APIs. |
102 EmbedderServiceHandler* Service::isolate_service_handler_head_ = NULL; | 102 EmbedderServiceHandler* Service::isolate_service_handler_head_ = NULL; |
103 EmbedderServiceHandler* Service::root_service_handler_head_ = NULL; | 103 EmbedderServiceHandler* Service::root_service_handler_head_ = NULL; |
104 struct ServiceMethodDescriptor; | 104 struct ServiceMethodDescriptor; |
105 const ServiceMethodDescriptor* FindMethod(const char* method_name); | 105 const ServiceMethodDescriptor* FindMethod(const char* method_name); |
106 | 106 |
107 // Support for streams defined in embedders. | 107 // Support for streams defined in embedders. |
108 Dart_ServiceStreamListenCallback Service::stream_listen_callback_ = NULL; | 108 Dart_ServiceStreamListenCallback Service::stream_listen_callback_ = NULL; |
109 Dart_ServiceStreamCancelCallback Service::stream_cancel_callback_ = NULL; | 109 Dart_ServiceStreamCancelCallback Service::stream_cancel_callback_ = NULL; |
110 Dart_GetVMServiceAssetsArchive Service::get_service_assets_callback_ = NULL; | 110 Dart_GetVMServiceAssetsArchive Service::get_service_assets_callback_ = NULL; |
| 111 Dart_GetEmbedderInformation Service::get_embedder_information_callback_ = NULL; |
111 | 112 |
112 // These are the set of streams known to the core VM. | 113 // These are the set of streams known to the core VM. |
113 StreamInfo Service::vm_stream("VM"); | 114 StreamInfo Service::vm_stream("VM"); |
114 StreamInfo Service::isolate_stream("Isolate"); | 115 StreamInfo Service::isolate_stream("Isolate"); |
115 StreamInfo Service::debug_stream("Debug"); | 116 StreamInfo Service::debug_stream("Debug"); |
116 StreamInfo Service::gc_stream("GC"); | 117 StreamInfo Service::gc_stream("GC"); |
117 StreamInfo Service::echo_stream("_Echo"); | 118 StreamInfo Service::echo_stream("_Echo"); |
118 StreamInfo Service::graph_stream("_Graph"); | 119 StreamInfo Service::graph_stream("_Graph"); |
119 StreamInfo Service::logging_stream("_Logging"); | 120 StreamInfo Service::logging_stream("_Logging"); |
120 StreamInfo Service::extension_stream("Extension"); | 121 StreamInfo Service::extension_stream("Extension"); |
(...skipping 1098 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1219 Dart_ServiceStreamCancelCallback cancel_callback) { | 1220 Dart_ServiceStreamCancelCallback cancel_callback) { |
1220 stream_listen_callback_ = listen_callback; | 1221 stream_listen_callback_ = listen_callback; |
1221 stream_cancel_callback_ = cancel_callback; | 1222 stream_cancel_callback_ = cancel_callback; |
1222 } | 1223 } |
1223 | 1224 |
1224 void Service::SetGetServiceAssetsCallback( | 1225 void Service::SetGetServiceAssetsCallback( |
1225 Dart_GetVMServiceAssetsArchive get_service_assets) { | 1226 Dart_GetVMServiceAssetsArchive get_service_assets) { |
1226 get_service_assets_callback_ = get_service_assets; | 1227 get_service_assets_callback_ = get_service_assets; |
1227 } | 1228 } |
1228 | 1229 |
| 1230 void Service::SetGetEmbedderInformationCallback( |
| 1231 Dart_GetEmbedderInformation get_embedder_information) { |
| 1232 get_embedder_information_callback_ = get_embedder_information; |
| 1233 } |
| 1234 |
| 1235 int64_t Service::CurrentRSS() { |
| 1236 if (get_embedder_information_callback_ == NULL) { |
| 1237 return -1; |
| 1238 } |
| 1239 return get_embedder_information_callback_()->current_rss; |
| 1240 } |
| 1241 |
| 1242 int64_t Service::MaxRSS() { |
| 1243 if (get_embedder_information_callback_ == NULL) { |
| 1244 return -1; |
| 1245 } |
| 1246 return get_embedder_information_callback_()->max_rss; |
| 1247 } |
| 1248 |
1229 EmbedderServiceHandler* Service::FindRootEmbedderHandler(const char* name) { | 1249 EmbedderServiceHandler* Service::FindRootEmbedderHandler(const char* name) { |
1230 EmbedderServiceHandler* current = root_service_handler_head_; | 1250 EmbedderServiceHandler* current = root_service_handler_head_; |
1231 while (current != NULL) { | 1251 while (current != NULL) { |
1232 if (strcmp(name, current->name()) == 0) { | 1252 if (strcmp(name, current->name()) == 0) { |
1233 return current; | 1253 return current; |
1234 } | 1254 } |
1235 current = current->next(); | 1255 current = current->next(); |
1236 } | 1256 } |
1237 return NULL; | 1257 return NULL; |
1238 } | 1258 } |
(...skipping 2576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3815 return; | 3835 return; |
3816 } | 3836 } |
3817 jsobj.AddProperty("architectureBits", static_cast<intptr_t>(kBitsPerWord)); | 3837 jsobj.AddProperty("architectureBits", static_cast<intptr_t>(kBitsPerWord)); |
3818 jsobj.AddProperty("targetCPU", CPU::Id()); | 3838 jsobj.AddProperty("targetCPU", CPU::Id()); |
3819 jsobj.AddProperty("hostCPU", HostCPUFeatures::hardware()); | 3839 jsobj.AddProperty("hostCPU", HostCPUFeatures::hardware()); |
3820 jsobj.AddProperty("version", Version::String()); | 3840 jsobj.AddProperty("version", Version::String()); |
3821 jsobj.AddProperty("_profilerMode", FLAG_profile_vm ? "VM" : "Dart"); | 3841 jsobj.AddProperty("_profilerMode", FLAG_profile_vm ? "VM" : "Dart"); |
3822 jsobj.AddProperty64("_nativeZoneMemoryUsage", | 3842 jsobj.AddProperty64("_nativeZoneMemoryUsage", |
3823 ApiNativeScope::current_memory_usage()); | 3843 ApiNativeScope::current_memory_usage()); |
3824 jsobj.AddProperty64("pid", OS::ProcessId()); | 3844 jsobj.AddProperty64("pid", OS::ProcessId()); |
3825 jsobj.AddProperty64("_maxRSS", OS::MaxRSS()); | 3845 if (get_embedder_information_callback_ != NULL) { |
| 3846 const Dart_EmbedderInformation* info = get_embedder_information_callback_(); |
| 3847 ASSERT(info != NULL); |
| 3848 if (info->name != NULL) { |
| 3849 jsobj.AddProperty("_embedder", info->name); |
| 3850 } |
| 3851 if (info->max_rss > 0) { |
| 3852 jsobj.AddProperty64("_maxRSS", info->max_rss); |
| 3853 } |
| 3854 if (info->max_rss > 0) { |
| 3855 jsobj.AddProperty64("_currentRSS", info->current_rss); |
| 3856 } |
| 3857 } |
3826 jsobj.AddPropertyTimeMillis( | 3858 jsobj.AddPropertyTimeMillis( |
3827 "startTime", OS::GetCurrentTimeMillis() - Dart::UptimeMillis()); | 3859 "startTime", OS::GetCurrentTimeMillis() - Dart::UptimeMillis()); |
3828 MallocHooks::PrintToJSONObject(&jsobj); | 3860 MallocHooks::PrintToJSONObject(&jsobj); |
3829 // Construct the isolate list. | 3861 // Construct the isolate list. |
3830 { | 3862 { |
3831 JSONArray jsarr(&jsobj, "isolates"); | 3863 JSONArray jsarr(&jsobj, "isolates"); |
3832 ServiceIsolateVisitor visitor(&jsarr); | 3864 ServiceIsolateVisitor visitor(&jsarr); |
3833 Isolate::VisitIsolates(&visitor); | 3865 Isolate::VisitIsolates(&visitor); |
3834 } | 3866 } |
3835 } | 3867 } |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4126 if (strcmp(method_name, method.name) == 0) { | 4158 if (strcmp(method_name, method.name) == 0) { |
4127 return &method; | 4159 return &method; |
4128 } | 4160 } |
4129 } | 4161 } |
4130 return NULL; | 4162 return NULL; |
4131 } | 4163 } |
4132 | 4164 |
4133 #endif // !PRODUCT | 4165 #endif // !PRODUCT |
4134 | 4166 |
4135 } // namespace dart | 4167 } // namespace dart |
OLD | NEW |