Chromium Code Reviews| Index: runtime/bin/main.cc |
| diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc |
| index af293005be2a52d25f9f95c0a57dcd8c8c4605bb..1aacf8e0b052ce2abac08f9a366416469d086aa6 100644 |
| --- a/runtime/bin/main.cc |
| +++ b/runtime/bin/main.cc |
| @@ -20,6 +20,7 @@ |
| #include "bin/log.h" |
| #include "bin/platform.h" |
| #include "bin/process.h" |
| +#include "bin/vmservice_impl.h" |
| #include "platform/globals.h" |
| namespace dart { |
| @@ -66,6 +67,12 @@ static bool has_check_function_fingerprints = false; |
| static bool has_print_script = false; |
| +// VM Service options |
|
siva
2013/07/15 21:40:16
missing "."
Cutch
2013/07/15 21:58:38
Done.
|
| +static bool start_vm_service = false; |
| +static int vm_service_server_port = -1; |
| +static const int DEFAULT_VM_SERVICE_SERVER_PORT = 8181; |
| + |
| + |
| static bool IsValidFlag(const char* name, |
| const char* prefix, |
| intptr_t prefix_length) { |
| @@ -199,6 +206,25 @@ static bool ProcessGenScriptSnapshotOption(const char* filename) { |
| } |
| +static bool ProcessEnableVmServiceOption(const char* port) { |
| + ASSERT(port != NULL); |
| + vm_service_server_port = -1; |
| + if (*port == '\0') { |
| + vm_service_server_port = DEFAULT_VM_SERVICE_SERVER_PORT; |
| + } else { |
| + if ((*port == '=') || (*port == ':')) { |
| + vm_service_server_port = atoi(port + 1); |
| + } |
| + } |
| + if (vm_service_server_port < 0) { |
| + Log::PrintErr("unrecognized --enable-vm-service option syntax. " |
| + "Use --enable-vm-service[:<port number>]\n"); |
| + return false; |
| + } |
| + start_vm_service = true; |
| + return true; |
| +} |
| + |
| static struct { |
| const char* option_name; |
| bool (*process)(const char* option); |
| @@ -217,6 +243,7 @@ static struct { |
| { "--snapshot=", ProcessGenScriptSnapshotOption }, |
| { "--print-script", ProcessPrintScriptOption }, |
| { "--check-function-fingerprints", ProcessFingerprintedFunctions }, |
| + { "--enable-vm-service", ProcessEnableVmServiceOption }, |
| { NULL, NULL } |
| }; |
| @@ -549,6 +576,10 @@ static void PrintUsage() { |
| "--print-script\n" |
| " generates Dart source code back and prints it after parsing a Dart script\n" |
| "\n" |
| +"--enable-vm-service[:<port number>]\n" |
| +" enables the VM service and listens on specified port for connections\n" |
| +" (default port number is 8181)\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"; |
| @@ -720,6 +751,16 @@ int main(int argc, char** argv) { |
| } |
| } |
| + // Start the VM service isolate, if necessary. |
| + if (start_vm_service) { |
| + ASSERT(vm_service_server_port >= 0); |
| + bool r = VmService::Start(vm_service_server_port); |
| + if (!r) { |
| + Log::PrintErr("Could not start VM Service isolate %s", |
| + VmService::GetErrorMessage()); |
| + } |
| + } |
| + |
| // Call CreateIsolateAndSetup which creates an isolate and loads up |
| // the specified application script. |
| char* error = NULL; |