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 3247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3258 }; | 3258 }; |
3259 | 3259 |
3260 | 3260 |
3261 static bool GetNativeAllocationSamples(Thread* thread, JSONStream* js) { | 3261 static bool GetNativeAllocationSamples(Thread* thread, JSONStream* js) { |
3262 Profile::TagOrder tag_order = | 3262 Profile::TagOrder tag_order = |
3263 EnumMapper(js->LookupParam("tags"), tags_enum_names, tags_enum_values); | 3263 EnumMapper(js->LookupParam("tags"), tags_enum_names, tags_enum_values); |
3264 int64_t time_origin_micros = | 3264 int64_t time_origin_micros = |
3265 Int64Parameter::Parse(js->LookupParam("timeOriginMicros")); | 3265 Int64Parameter::Parse(js->LookupParam("timeOriginMicros")); |
3266 int64_t time_extent_micros = | 3266 int64_t time_extent_micros = |
3267 Int64Parameter::Parse(js->LookupParam("timeExtentMicros")); | 3267 Int64Parameter::Parse(js->LookupParam("timeExtentMicros")); |
| 3268 #if defined(DEBUG) |
| 3269 Isolate::Current()->heap()->CollectAllGarbage(); |
| 3270 #endif |
3268 ProfilerService::PrintNativeAllocationJSON(js, tag_order, time_origin_micros, | 3271 ProfilerService::PrintNativeAllocationJSON(js, tag_order, time_origin_micros, |
3269 time_extent_micros); | 3272 time_extent_micros); |
3270 return true; | 3273 return true; |
3271 } | 3274 } |
3272 | 3275 |
3273 | 3276 |
3274 static const MethodParameter* clear_cpu_profile_params[] = { | 3277 static const MethodParameter* clear_cpu_profile_params[] = { |
3275 RUNNABLE_ISOLATE_PARAMETER, NULL, | 3278 RUNNABLE_ISOLATE_PARAMETER, NULL, |
3276 }; | 3279 }; |
3277 | 3280 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3314 } | 3317 } |
3315 if (should_collect) { | 3318 if (should_collect) { |
3316 isolate->UpdateLastAllocationProfileGCTimestamp(); | 3319 isolate->UpdateLastAllocationProfileGCTimestamp(); |
3317 isolate->heap()->CollectAllGarbage(); | 3320 isolate->heap()->CollectAllGarbage(); |
3318 } | 3321 } |
3319 isolate->class_table()->AllocationProfilePrintJSON(js); | 3322 isolate->class_table()->AllocationProfilePrintJSON(js); |
3320 return true; | 3323 return true; |
3321 } | 3324 } |
3322 | 3325 |
3323 | 3326 |
| 3327 static const MethodParameter* collect_all_garbage_params[] = { |
| 3328 RUNNABLE_ISOLATE_PARAMETER, NULL, |
| 3329 }; |
| 3330 |
| 3331 #if defined(DEBUG) |
| 3332 static bool CollectAllGarbage(Thread* thread, JSONStream* js) { |
| 3333 Isolate* isolate = thread->isolate(); |
| 3334 isolate->heap()->CollectAllGarbage(); |
| 3335 PrintSuccess(js); |
| 3336 return true; |
| 3337 } |
| 3338 #else |
| 3339 static bool CollectAllGarbage(Thread* thread, JSONStream* js) { |
| 3340 PrintSuccess(js); |
| 3341 return true; |
| 3342 } |
| 3343 #endif // defined(DEBUG) |
| 3344 |
| 3345 |
3324 static const MethodParameter* get_heap_map_params[] = { | 3346 static const MethodParameter* get_heap_map_params[] = { |
3325 RUNNABLE_ISOLATE_PARAMETER, NULL, | 3347 RUNNABLE_ISOLATE_PARAMETER, NULL, |
3326 }; | 3348 }; |
3327 | 3349 |
3328 | 3350 |
3329 static bool GetHeapMap(Thread* thread, JSONStream* js) { | 3351 static bool GetHeapMap(Thread* thread, JSONStream* js) { |
3330 Isolate* isolate = thread->isolate(); | 3352 Isolate* isolate = thread->isolate(); |
3331 isolate->heap()->PrintHeapMapToJSONStream(isolate, js); | 3353 isolate->heap()->PrintHeapMapToJSONStream(isolate, js); |
3332 return true; | 3354 return true; |
3333 } | 3355 } |
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4163 { "setLibraryDebuggable", SetLibraryDebuggable, | 4185 { "setLibraryDebuggable", SetLibraryDebuggable, |
4164 set_library_debuggable_params }, | 4186 set_library_debuggable_params }, |
4165 { "setName", SetName, | 4187 { "setName", SetName, |
4166 set_name_params }, | 4188 set_name_params }, |
4167 { "_setTraceClassAllocation", SetTraceClassAllocation, | 4189 { "_setTraceClassAllocation", SetTraceClassAllocation, |
4168 set_trace_class_allocation_params }, | 4190 set_trace_class_allocation_params }, |
4169 { "setVMName", SetVMName, | 4191 { "setVMName", SetVMName, |
4170 set_vm_name_params }, | 4192 set_vm_name_params }, |
4171 { "_setVMTimelineFlags", SetVMTimelineFlags, | 4193 { "_setVMTimelineFlags", SetVMTimelineFlags, |
4172 set_vm_timeline_flags_params }, | 4194 set_vm_timeline_flags_params }, |
| 4195 { "_collectAllGarbage", CollectAllGarbage, |
| 4196 collect_all_garbage_params }, |
4173 }; | 4197 }; |
4174 // clang-format on | 4198 // clang-format on |
4175 | 4199 |
4176 const ServiceMethodDescriptor* FindMethod(const char* method_name) { | 4200 const ServiceMethodDescriptor* FindMethod(const char* method_name) { |
4177 intptr_t num_methods = sizeof(service_methods_) / sizeof(service_methods_[0]); | 4201 intptr_t num_methods = sizeof(service_methods_) / sizeof(service_methods_[0]); |
4178 for (intptr_t i = 0; i < num_methods; i++) { | 4202 for (intptr_t i = 0; i < num_methods; i++) { |
4179 const ServiceMethodDescriptor& method = service_methods_[i]; | 4203 const ServiceMethodDescriptor& method = service_methods_[i]; |
4180 if (strcmp(method_name, method.name) == 0) { | 4204 if (strcmp(method_name, method.name) == 0) { |
4181 return &method; | 4205 return &method; |
4182 } | 4206 } |
4183 } | 4207 } |
4184 return NULL; | 4208 return NULL; |
4185 } | 4209 } |
4186 | 4210 |
4187 #endif // !PRODUCT | 4211 #endif // !PRODUCT |
4188 | 4212 |
4189 } // namespace dart | 4213 } // namespace dart |
OLD | NEW |