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

Unified Diff: runtime/vm/service.cc

Issue 217323006: Redo allocationprofile options (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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/json_test.cc ('k') | runtime/vm/service_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/service.cc
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index 9d76bd5feae64aa0acaba5f3b54ed7d452ca2caf..5d5c24609fb93c642fd5df1dd9e326c3099cfa6e 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -1461,24 +1461,34 @@ static bool HandleCoverage(Isolate* isolate, JSONStream* js) {
static bool HandleAllocationProfile(Isolate* isolate, JSONStream* js) {
- if (js->num_arguments() == 2) {
- const char* sub_command = js->GetArgument(1);
- if (!strcmp(sub_command, "reset")) {
- isolate->class_table()->ResetAllocationAccumulators();
- isolate->class_table()->AllocationProfilePrintToJSONStream(js);
- return true;
- } else if (!strcmp(sub_command, "fullgc")) {
- isolate->heap()->CollectAllGarbage();
- isolate->class_table()->AllocationProfilePrintToJSONStream(js);
+ bool should_reset_accumulator = false;
+ bool should_collect = false;
+ if (js->num_arguments() != 1) {
+ PrintError(js, "Command too long");
+ return true;
+ }
+ if (js->HasOption("reset")) {
+ if (js->OptionIs("reset", "true")) {
+ should_reset_accumulator = true;
+ } else {
+ PrintError(js, "Unrecognized reset option '%s'",
+ js->LookupOption("reset"));
return true;
+ }
+ }
+ if (js->HasOption("gc")) {
+ if (js->OptionIs("gc", "full")) {
+ should_collect = true;
} else {
- PrintError(js, "Unrecognized subcommand '%s'", sub_command);
+ PrintError(js, "Unrecognized gc option '%s'", js->LookupOption("gc"));
return true;
}
}
- if (js->num_arguments() != 1) {
- PrintError(js, "Command too long");
- return true;
+ if (should_reset_accumulator) {
+ isolate->class_table()->ResetAllocationAccumulators();
+ }
+ if (should_collect) {
+ isolate->heap()->CollectAllGarbage();
}
isolate->class_table()->AllocationProfilePrintToJSONStream(js);
return true;
« no previous file with comments | « runtime/vm/json_test.cc ('k') | runtime/vm/service_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698