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

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 Object::null_object().PrintToJSONStream(js, false);
1062 return true;
1063 }
1064
1065
1066 static bool HandleCollectedCode(uintptr_t pc, JSONStream* js) {
1067 Object::null_object().PrintToJSONStream(js, false);
1068 return true;
1069 }
1070
1071
1060 static bool HandleCode(Isolate* isolate, JSONStream* js) { 1072 static bool HandleCode(Isolate* isolate, JSONStream* js) {
1061 REQUIRE_COLLECTION_ID("code"); 1073 REQUIRE_COLLECTION_ID("code");
1062 uintptr_t pc; 1074 uintptr_t pc;
1075 if (js->num_arguments() > 3) {
1076 PrintError(js, "Command too long");
1077 return true;
1078 }
1079 if (js->num_arguments() == 3) {
1080 const char* command = js->GetArgument(1);
1081 if (!strcmp("collected", command)) {
Ivan Posva 2014/02/28 21:46:35 strcmp does not return a bool.
1082 if (!GetUnsignedIntegerId(js->GetArgument(1), &pc, 16)) {
1083 PrintError(js, "Must specify code address: code/collected/c0deadd0.");
1084 return true;
1085 }
1086 return HandleCollectedCode(pc, js);
1087 } else if (!strcmp("native", command)) {
1088 if (!GetUnsignedIntegerId(js->GetArgument(1), &pc, 16)) {
1089 PrintError(js, "Must specify code address: code/native/c0deadd0.");
1090 return true;
1091 }
turnidge 2014/02/28 19:45:43 Since this is simpler now, you could drop the help
Cutch 2014/02/28 19:48:08 Done.
1092 return HandleNativeCode(pc, js);
1093 } else {
1094 PrintError(js, "Unrecognized subcommand '%s'", js->GetArgument(1));
1095 return true;
1096 }
1097 }
1098 ASSERT(js->num_arguments() == 2);
1063 if (!GetUnsignedIntegerId(js->GetArgument(1), &pc, 16)) { 1099 if (!GetUnsignedIntegerId(js->GetArgument(1), &pc, 16)) {
1064 PrintError(js, "Must specify code address: code/c0deadd0."); 1100 PrintError(js, "Must specify code address: code/c0deadd0.");
1065 return true; 1101 return true;
1066 } 1102 }
1067 Code& code = Code::Handle(Code::LookupCode(pc)); 1103 Code& code = Code::Handle();
1068 if (code.IsNull()) { 1104 code ^= Code::LookupCode(pc);
1069 PrintError(js, "Could not find code at %" Px "", pc); 1105 if (!code.IsNull()) {
1106 code.PrintToJSONStream(js, false);
1070 return true; 1107 return true;
1071 } 1108 }
1072 code.PrintToJSONStream(js, false); 1109 code ^= Code::LookupCodeInVmIsolate(pc);
1110 if (!code.IsNull()) {
1111 code.PrintToJSONStream(js, false);
1112 return true;
1113 }
1114 PrintError(js, "Could not find code at %" Px "", pc);
1073 return true; 1115 return true;
1074 } 1116 }
1075 1117
1076 1118
1077 static bool HandleProfile(Isolate* isolate, JSONStream* js) { 1119 static bool HandleProfile(Isolate* isolate, JSONStream* js) {
1078 Profiler::PrintToJSONStream(isolate, js, true); 1120 Profiler::PrintToJSONStream(isolate, js, true);
1079 return true; 1121 return true;
1080 } 1122 }
1081 1123
1082 static bool HandleCoverage(Isolate* isolate, JSONStream* js) { 1124 static bool HandleCoverage(Isolate* isolate, JSONStream* js) {
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1326 while (current != NULL) { 1368 while (current != NULL) {
1327 if (!strcmp(name, current->name())) { 1369 if (!strcmp(name, current->name())) {
1328 return current; 1370 return current;
1329 } 1371 }
1330 current = current->next(); 1372 current = current->next();
1331 } 1373 }
1332 return NULL; 1374 return NULL;
1333 } 1375 }
1334 1376
1335 } // namespace dart 1377 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698