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

Unified Diff: runtime/bin/main.cc

Issue 10979006: - Add support for --help and --verbose to print usage message of the standalone binary. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 3 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/bin/main.cc
===================================================================
--- runtime/bin/main.cc (revision 12792)
+++ runtime/bin/main.cc (working copy)
@@ -80,25 +80,51 @@
}
-static void ProcessBreakpointOption(const char* funcname) {
+static bool has_help_option = false;
+static bool ProcessHelpOption(const char* arg) {
+ if (*arg != '\0') {
+ return false;
+ }
+ has_help_option = true;
+ return true;
+}
+
+
+static bool has_verbose_option = false;
+static bool ProcessVerboseOption(const char* arg) {
+ if (*arg != '\0') {
+ return false;
+ }
+ has_verbose_option = true;
+ return true;
+}
+
+
+static bool ProcessBreakpointOption(const char* funcname) {
ASSERT(funcname != NULL);
breakpoint_at = funcname;
+ return true;
}
-static void ProcessPackageRootOption(const char* arg) {
+static bool ProcessPackageRootOption(const char* arg) {
ASSERT(arg != NULL);
package_root = arg;
+ return true;
}
-static void ProcessCompileAllOption(const char* compile_all) {
- ASSERT(compile_all != NULL);
+static bool ProcessCompileAllOption(const char* arg) {
+ ASSERT(arg != NULL);
+ if (*arg != '\0') {
+ return false;
+ }
has_compile_all = true;
+ return true;
}
-static void ProcessDebugOption(const char* port) {
+static bool ProcessDebugOption(const char* port) {
// TODO(hausner): Add support for specifying an IP address on which
// the debugger should listen.
ASSERT(port != NULL);
@@ -113,14 +139,15 @@
if (debug_port == 0) {
fprintf(stderr, "unrecognized --debug option syntax. "
"Use --debug[:<port number>]\n");
- return;
+ return false;
}
breakpoint_at = "main";
start_debugger = true;
+ return true;
}
-static void ProcessPerfEventsOption(const char* option) {
+static bool ProcessPerfEventsOption(const char* option) {
ASSERT(option != NULL);
if (perf_events_symbols_file == NULL) {
// TODO(cshapiro): eliminate the #ifdef by moving this code to a
@@ -136,41 +163,52 @@
delete[] filename;
#endif
}
+ return true;
}
-static void ProcessPprofOption(const char* filename) {
+static bool ProcessPprofOption(const char* filename) {
ASSERT(filename != NULL);
generate_pprof_symbols_filename = filename;
+ return true;
}
-static void ProcessScriptSnapshotOption(const char* filename) {
+static bool ProcessScriptSnapshotOption(const char* filename) {
if (filename != NULL && strlen(filename) != 0) {
use_script_snapshot = true;
snapshot_file = File::Open(filename, File::kRead);
}
+ return true;
}
-static void ProcessFlowGraphOption(const char* flowgraph_option) {
+static bool ProcessFlowGraphOption(const char* flowgraph_option) {
ASSERT(flowgraph_option != NULL);
flow_graph_file = File::Open("flowgraph.cfg", File::kWriteTruncate);
ASSERT(flow_graph_file != NULL);
+ return true;
}
static struct {
const char* option_name;
- void (*process)(const char* option);
+ bool (*process)(const char* option);
} main_options[] = {
+ // Standard options shared with dart2js.
+ { "--help", ProcessHelpOption },
+ { "-h", ProcessHelpOption },
+ { "--verbose", ProcessVerboseOption },
+ { "-v", ProcessVerboseOption },
+ { "--package-root=", ProcessPackageRootOption },
+ { "-p", ProcessPackageRootOption },
+ // VM specific options to the standalone dart program.
{ "--break_at=", ProcessBreakpointOption },
{ "--compile_all", ProcessCompileAllOption },
{ "--debug", ProcessDebugOption },
{ "--generate_flow_graph", ProcessFlowGraphOption },
{ "--generate_perf_events_symbols", ProcessPerfEventsOption },
{ "--generate_pprof_symbols=", ProcessPprofOption },
- { "--package-root=", ProcessPackageRootOption },
{ "--use_script_snapshot=", ProcessScriptSnapshotOption },
{ NULL, NULL }
};
@@ -182,8 +220,7 @@
while (name != NULL) {
int length = strlen(name);
if (strncmp(option, name, length) == 0) {
- main_options[i].process(option + length);
- return true;
+ return main_options[i].process(option + length);
}
i += 1;
name = main_options[i].option_name;
@@ -223,10 +260,14 @@
int i = 1;
// Parse out the vm options.
- while ((i < argc) && IsValidFlag(argv[i], kPrefix, kPrefixLen)) {
+ while (i < argc) {
if (ProcessMainOptions(argv[i])) {
i++;
} else {
+ // Check if this flag is a potentially valid VM flag.
+ if (!IsValidFlag(argv[i], kPrefix, kPrefixLen)) {
+ break;
+ }
const char* kPrintFlags1 = "--print-flags";
const char* kPrintFlags2 = "--print_flags";
if ((strncmp(argv[i], kPrintFlags1, strlen(kPrintFlags1)) == 0) ||
@@ -469,7 +510,33 @@
static void PrintUsage() {
fprintf(stderr,
- "dart [<vm-flags>] <dart-script-file> [<dart-options>]\n");
+ "Usage: dart [<vm-flags>] <dart-script-file> [<dart-options>]\n"
+ "\n"
+ "Executes the Dart script passed as <dart-script-file>.\n"
+ "\n");
+ if (!has_verbose_option) {
+ fprintf(stderr,
+"Common options:\n"
+"--checked Insert runtime type checks and enable assertions (checked mode).\n"
+"--help Display this message (add --verbose for information about all\n"
+" VM options).\n");
+ } else {
+ fprintf(stderr,
+"Supported options:\n"
+"--checked \n"
+" Insert runtime type checks and enable assertions (checked mode).\n"
+"\n"
+"--help\n"
+" Display this message (add --verbose for information about all VM options).\n"
+"\n"
+"--package-root=<path>\n"
+" Where to find packages, that is, \"package:...\" imports.\n"
+"\n"
+"The following options are only used for VM development and may\n"
+"be changed in any future version:\n");
+ const char* print_flags = "--print_flags";
+ Dart_SetVMFlags(1, &print_flags);
+ }
}
@@ -580,6 +647,10 @@
}
}
+ if (has_help_option) {
+ PrintUsage();
siva 2012/09/24 22:25:29 return 0;
Ivan Posva 2012/09/24 22:26:23 Done.
+ }
+
Dart_SetVMFlags(vm_options.count(), vm_options.arguments());
// Initialize the Dart VM.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698