| OLD | NEW | 
|     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 #include "platform/globals.h" |     8 #include "platform/globals.h" | 
|     9  |     9  | 
|    10 #include "vm/compiler.h" |    10 #include "vm/compiler.h" | 
| (...skipping 1915 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1926  |  1926  | 
|  1927  private: |  1927  private: | 
|  1928   JSONArray* jsarr_; |  1928   JSONArray* jsarr_; | 
|  1929 }; |  1929 }; | 
|  1930  |  1930  | 
|  1931  |  1931  | 
|  1932 static bool HandleVM(JSONStream* js) { |  1932 static bool HandleVM(JSONStream* js) { | 
|  1933   JSONObject jsobj(js); |  1933   JSONObject jsobj(js); | 
|  1934   jsobj.AddProperty("type", "VM"); |  1934   jsobj.AddProperty("type", "VM"); | 
|  1935   jsobj.AddProperty("id", "vm"); |  1935   jsobj.AddProperty("id", "vm"); | 
|  1936   jsobj.AddProperty("architecture", CPU::Id()); |  1936   jsobj.AddProperty("targetCPU", CPU::Id()); | 
 |  1937   jsobj.AddProperty("hostCPU", HostCPUFeatures::hardware()); | 
|  1937   jsobj.AddProperty("version", Version::String()); |  1938   jsobj.AddProperty("version", Version::String()); | 
|  1938   jsobj.AddProperty("assertsEnabled", FLAG_enable_asserts); |  1939   jsobj.AddProperty("assertsEnabled", FLAG_enable_asserts); | 
|  1939   jsobj.AddProperty("typeChecksEnabled", FLAG_enable_type_checks); |  1940   jsobj.AddProperty("typeChecksEnabled", FLAG_enable_type_checks); | 
|  1940   int64_t start_time_micros = Dart::vm_isolate()->start_time(); |  1941   int64_t start_time_micros = Dart::vm_isolate()->start_time(); | 
|  1941   int64_t uptime_micros = (OS::GetCurrentTimeMicros() - start_time_micros); |  1942   int64_t uptime_micros = (OS::GetCurrentTimeMicros() - start_time_micros); | 
|  1942   double seconds = (static_cast<double>(uptime_micros) / |  1943   double seconds = (static_cast<double>(uptime_micros) / | 
|  1943                     static_cast<double>(kMicrosecondsPerSecond)); |  1944                     static_cast<double>(kMicrosecondsPerSecond)); | 
|  1944   jsobj.AddProperty("uptime", seconds); |  1945   jsobj.AddProperty("uptime", seconds); | 
|  1945  |  1946  | 
|  1946   // Construct the isolate list. |  1947   // Construct the isolate list. | 
|  1947   { |  1948   { | 
|  1948     JSONArray jsarr(&jsobj, "isolates"); |  1949     JSONArray jsarr(&jsobj, "isolates"); | 
|  1949     ServiceIsolateVisitor visitor(&jsarr); |  1950     ServiceIsolateVisitor visitor(&jsarr); | 
|  1950     Isolate::VisitIsolates(&visitor); |  1951     Isolate::VisitIsolates(&visitor); | 
|  1951   } |  1952   } | 
|  1952   return true; |  1953   return true; | 
|  1953 } |  1954 } | 
|  1954  |  1955  | 
|  1955  |  1956  | 
 |  1957 static bool HandleFlags(JSONStream* js) { | 
 |  1958   if (js->num_arguments() == 1) { | 
 |  1959     Flags::PrintJSON(js); | 
 |  1960     return true; | 
 |  1961   } else if (js->num_arguments() == 2) { | 
 |  1962     const char* arg = js->GetArgument(1); | 
 |  1963     if (strcmp(arg, "set") == 0) { | 
 |  1964       if (js->num_arguments() > 2) { | 
 |  1965         PrintError(js, "expected at most 2 arguments but found %" Pd "\n", | 
 |  1966                    js->num_arguments()); | 
 |  1967       } else { | 
 |  1968         if (js->HasOption("name") && js->HasOption("value")) { | 
 |  1969           JSONObject jsobj(js); | 
 |  1970           const char* flag_name = js->LookupOption("name"); | 
 |  1971           const char* flag_value = js->LookupOption("value"); | 
 |  1972           const char* error = NULL; | 
 |  1973           if (Flags::SetFlag(flag_name, flag_value, &error)) { | 
 |  1974             jsobj.AddProperty("type", "Success"); | 
 |  1975             jsobj.AddProperty("id", ""); | 
 |  1976           } else { | 
 |  1977             jsobj.AddProperty("type", "Failure"); | 
 |  1978             jsobj.AddProperty("id", ""); | 
 |  1979             jsobj.AddProperty("message", error); | 
 |  1980           } | 
 |  1981         } else { | 
 |  1982           PrintError(js, "expected to find 'name' and 'value' options"); | 
 |  1983         } | 
 |  1984       } | 
 |  1985     } | 
 |  1986     return true; | 
 |  1987   } else { | 
 |  1988     PrintError(js, "Command too long"); | 
 |  1989     return true; | 
 |  1990   } | 
 |  1991 } | 
 |  1992  | 
 |  1993  | 
|  1956 static RootMessageHandlerEntry root_handlers[] = { |  1994 static RootMessageHandlerEntry root_handlers[] = { | 
|  1957   { "_echo", HandleRootEcho }, |  1995   { "_echo", HandleRootEcho }, | 
|  1958   { "vm", HandleVM }, |  1996   { "vm", HandleVM }, | 
 |  1997   { "flags", HandleFlags }, | 
|  1959 }; |  1998 }; | 
|  1960  |  1999  | 
|  1961  |  2000  | 
|  1962 static RootMessageHandler FindRootMessageHandler(const char* command) { |  2001 static RootMessageHandler FindRootMessageHandler(const char* command) { | 
|  1963   intptr_t num_message_handlers = sizeof(root_handlers) / |  2002   intptr_t num_message_handlers = sizeof(root_handlers) / | 
|  1964                                   sizeof(root_handlers[0]); |  2003                                   sizeof(root_handlers[0]); | 
|  1965   for (intptr_t i = 0; i < num_message_handlers; i++) { |  2004   for (intptr_t i = 0; i < num_message_handlers; i++) { | 
|  1966     const RootMessageHandlerEntry& entry = root_handlers[i]; |  2005     const RootMessageHandlerEntry& entry = root_handlers[i]; | 
|  1967     if (strcmp(command, entry.command) == 0) { |  2006     if (strcmp(command, entry.command) == 0) { | 
|  1968       return entry.handler; |  2007       return entry.handler; | 
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2064   while (current != NULL) { |  2103   while (current != NULL) { | 
|  2065     if (strcmp(name, current->name()) == 0) { |  2104     if (strcmp(name, current->name()) == 0) { | 
|  2066       return current; |  2105       return current; | 
|  2067     } |  2106     } | 
|  2068     current = current->next(); |  2107     current = current->next(); | 
|  2069   } |  2108   } | 
|  2070   return NULL; |  2109   return NULL; | 
|  2071 } |  2110 } | 
|  2072  |  2111  | 
|  2073 }  // namespace dart |  2112 }  // namespace dart | 
| OLD | NEW |