Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: runtime/vm/service.cc

Issue 182703003: Cleanup native, collected, and stub code handling in profiler (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 8
9 #include "vm/compiler.h" 9 #include "vm/compiler.h"
10 #include "vm/coverage.h" 10 #include "vm/coverage.h"
(...skipping 1039 matching lines...) Expand 10 before | Expand all | Expand 10 after
1050 1050
1051 static bool HandleCpu(Isolate* isolate, JSONStream* js) { 1051 static bool HandleCpu(Isolate* isolate, JSONStream* js) {
1052 JSONObject jsobj(js); 1052 JSONObject jsobj(js);
1053 jsobj.AddProperty("type", "CPU"); 1053 jsobj.AddProperty("type", "CPU");
1054 jsobj.AddProperty("targetCPU", CPU::Id()); 1054 jsobj.AddProperty("targetCPU", CPU::Id());
1055 jsobj.AddProperty("hostCPU", HostCPUFeatures::hardware()); 1055 jsobj.AddProperty("hostCPU", HostCPUFeatures::hardware());
1056 return true; 1056 return true;
1057 } 1057 }
1058 1058
1059 1059
1060 static bool HandleNativeCode(uintptr_t pc, JSONStream* js) {
1061 JSONObject jsobj(js);
1062 jsobj.AddProperty("type", "NativeCode");
turnidge 2014/02/28 19:23:37 The references to native and collected code have t
Cutch 2014/02/28 19:37:08 Done.
1063 jsobj.AddPropertyF("start", "%" Px "", pc);
1064 return true;
1065 }
1066
1067
1068 static bool HandleCollectedCode(uintptr_t pc, JSONStream* js) {
1069 JSONObject jsobj(js);
1070 jsobj.AddProperty("type", "CollectedCode");
1071 jsobj.AddPropertyF("start", "%" Px "", pc);
1072 return true;
1073 }
1074
1075
1060 static bool HandleCode(Isolate* isolate, JSONStream* js) { 1076 static bool HandleCode(Isolate* isolate, JSONStream* js) {
1061 REQUIRE_COLLECTION_ID("code"); 1077 REQUIRE_COLLECTION_ID("code");
1062 uintptr_t pc; 1078 uintptr_t pc;
1079 if (js->num_arguments() > 3) {
1080 PrintError(js, "Command too long");
1081 return true;
1082 }
1083 if (js->num_arguments() == 3) {
1084 const char* command = js->GetArgument(1);
1085 if (!strcmp("collected", command)) {
1086 if (!GetUnsignedIntegerId(js->GetArgument(1), &pc, 16)) {
1087 PrintError(js, "Must specify code address: code/collected/c0deadd0.");
1088 return true;
1089 }
1090 return HandleCollectedCode(pc, js);
1091 } else if (!strcmp("native", command)) {
1092 if (!GetUnsignedIntegerId(js->GetArgument(1), &pc, 16)) {
1093 PrintError(js, "Must specify code address: code/native/c0deadd0.");
1094 return true;
1095 }
1096 return HandleNativeCode(pc, js);
1097 } else {
1098 PrintError(js, "Unrecognized subcommand '%s'", js->GetArgument(1));
1099 return true;
1100 }
1101 }
turnidge 2014/02/28 19:23:37 Can you extend the unit test to cover some of thes
Cutch 2014/02/28 19:37:08 Done.
1102 ASSERT(js->num_arguments() == 2);
1063 if (!GetUnsignedIntegerId(js->GetArgument(1), &pc, 16)) { 1103 if (!GetUnsignedIntegerId(js->GetArgument(1), &pc, 16)) {
1064 PrintError(js, "Must specify code address: code/c0deadd0."); 1104 PrintError(js, "Must specify code address: code/c0deadd0.");
1065 return true; 1105 return true;
1066 } 1106 }
1067 Code& code = Code::Handle(Code::LookupCode(pc)); 1107 Code& code = Code::Handle();
1068 if (code.IsNull()) { 1108 code ^= Code::LookupCode(pc);
1069 PrintError(js, "Could not find code at %" Px "", pc); 1109 if (!code.IsNull()) {
1110 code.PrintToJSONStream(js, false);
1070 return true; 1111 return true;
1071 } 1112 }
1072 code.PrintToJSONStream(js, false); 1113 code ^= Code::LookupCodeInVmIsolate(pc);
1114 if (!code.IsNull()) {
1115 code.PrintToJSONStream(js, false);
1116 return true;
1117 }
1118 PrintError(js, "Could not find code at %" Px "", pc);
1073 return true; 1119 return true;
1074 } 1120 }
1075 1121
1076 1122
1077 static bool HandleProfile(Isolate* isolate, JSONStream* js) { 1123 static bool HandleProfile(Isolate* isolate, JSONStream* js) {
1078 Profiler::PrintToJSONStream(isolate, js, true); 1124 Profiler::PrintToJSONStream(isolate, js, true);
1079 return true; 1125 return true;
1080 } 1126 }
1081 1127
1082 static bool HandleCoverage(Isolate* isolate, JSONStream* js) { 1128 static bool HandleCoverage(Isolate* isolate, JSONStream* js) {
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1326 while (current != NULL) { 1372 while (current != NULL) {
1327 if (!strcmp(name, current->name())) { 1373 if (!strcmp(name, current->name())) {
1328 return current; 1374 return current;
1329 } 1375 }
1330 current = current->next(); 1376 current = current->next();
1331 } 1377 }
1332 return NULL; 1378 return NULL;
1333 } 1379 }
1334 1380
1335 } // namespace dart 1381 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698