Chromium Code Reviews| 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 1399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1410 if (!code.IsNull()) { | 1410 if (!code.IsNull()) { |
| 1411 code.PrintToJSONStream(js, false); | 1411 code.PrintToJSONStream(js, false); |
| 1412 return true; | 1412 return true; |
| 1413 } | 1413 } |
| 1414 PrintError(js, "Could not find code with id: %s", command); | 1414 PrintError(js, "Could not find code with id: %s", command); |
| 1415 return true; | 1415 return true; |
| 1416 } | 1416 } |
| 1417 | 1417 |
| 1418 | 1418 |
| 1419 static bool HandleProfile(Isolate* isolate, JSONStream* js) { | 1419 static bool HandleProfile(Isolate* isolate, JSONStream* js) { |
| 1420 if (js->num_arguments() == 2) { | |
| 1421 const char* sub_command = js->GetArgument(1); | |
| 1422 if (!strcmp(sub_command, "tag")) { | |
| 1423 { | |
| 1424 JSONObject miniProfile(js); | |
| 1425 miniProfile.AddProperty("type", "TagProfile"); | |
| 1426 miniProfile.AddProperty("id", "profile/tag"); | |
| 1427 isolate->vm_tag_counters()->PrintToJSONObject(&miniProfile); | |
| 1428 } | |
| 1429 return true; | |
| 1430 } else { | |
| 1431 PrintError(js, "Unrecognized subcommand '%s'", sub_command); | |
| 1432 return true; | |
| 1433 } | |
| 1434 } | |
| 1420 // A full profile includes disassembly of all Dart code objects. | 1435 // A full profile includes disassembly of all Dart code objects. |
| 1421 // TODO(johnmccutchan): Add sub command to trigger full code dump. | 1436 // TODO(johnmccutchan): Add sub command to trigger full code dump. |
| 1422 bool full_profile = false; | 1437 bool full_profile = false; |
| 1423 const char* tags_option = js->LookupOption("tags"); | 1438 const char* tags_option = js->LookupOption("tags"); |
| 1424 bool use_tags = true; | 1439 bool use_tags = true; |
| 1425 if (tags_option != NULL) { | 1440 if (tags_option != NULL) { |
| 1426 if (strcmp("hide", tags_option) != 0) { | 1441 if (strcmp("hide", tags_option) != 0) { |
| 1427 PrintError(js, "Invalid tags option value: %s\n", tags_option); | 1442 PrintError(js, "Invalid tags option value: %s\n", tags_option); |
| 1428 return true; | 1443 return true; |
| 1429 } | 1444 } |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1569 { | 1584 { |
| 1570 NoGCScope no_gc; | 1585 NoGCScope no_gc; |
| 1571 ContainsAddressVisitor visitor(isolate, addr); | 1586 ContainsAddressVisitor visitor(isolate, addr); |
| 1572 object = isolate->heap()->FindObject(&visitor); | 1587 object = isolate->heap()->FindObject(&visitor); |
| 1573 } | 1588 } |
| 1574 object.PrintToJSONStream(js, true); | 1589 object.PrintToJSONStream(js, true); |
| 1575 return true; | 1590 return true; |
| 1576 } | 1591 } |
| 1577 | 1592 |
| 1578 | 1593 |
| 1594 static bool HandleMalformedJson(Isolate* isolate, JSONStream* js) { | |
| 1595 JSONObject jsobj(js); | |
| 1596 jsobj.AddProperty("a", "a"); | |
| 1597 JSONObject jsobj1(js); | |
| 1598 jsobj1.AddProperty("a", "a"); | |
| 1599 JSONObject jsobj2(js); | |
| 1600 jsobj2.AddProperty("a", "a"); | |
| 1601 JSONObject jsobj3(js); | |
| 1602 jsobj3.AddProperty("a", "a"); | |
| 1603 return true; | |
| 1604 } | |
| 1605 | |
| 1606 | |
| 1607 static bool HandleMalformedObject(Isolate* isolate, JSONStream* js) { | |
| 1608 JSONObject jsobj(js); | |
| 1609 jsobj.AddProperty("bart", "simpson"); | |
| 1610 return true; | |
| 1611 } | |
|
turnidge
2014/03/24 20:22:13
How do you use these currently? Just curious.
Cutch
2014/03/25 14:39:06
I am manually using these to test error handling i
| |
| 1612 | |
| 1613 | |
| 1579 static IsolateMessageHandlerEntry isolate_handlers[] = { | 1614 static IsolateMessageHandlerEntry isolate_handlers[] = { |
| 1615 { "_malformedjson", HandleMalformedJson }, | |
| 1616 { "_malformedobject", HandleMalformedObject }, | |
| 1580 { "_echo", HandleIsolateEcho }, | 1617 { "_echo", HandleIsolateEcho }, |
| 1581 { "", HandleIsolate }, | 1618 { "", HandleIsolate }, |
| 1582 { "address", HandleAddress }, | 1619 { "address", HandleAddress }, |
| 1583 { "allocationprofile", HandleAllocationProfile }, | 1620 { "allocationprofile", HandleAllocationProfile }, |
| 1584 { "classes", HandleClasses }, | 1621 { "classes", HandleClasses }, |
| 1585 { "code", HandleCode }, | 1622 { "code", HandleCode }, |
| 1586 { "coverage", HandleCoverage }, | 1623 { "coverage", HandleCoverage }, |
| 1587 { "debug", HandleDebug }, | 1624 { "debug", HandleDebug }, |
| 1588 { "heapmap", HandleHeapMap }, | 1625 { "heapmap", HandleHeapMap }, |
| 1589 { "libraries", HandleLibraries }, | 1626 { "libraries", HandleLibraries }, |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1839 while (current != NULL) { | 1876 while (current != NULL) { |
| 1840 if (strcmp(name, current->name()) == 0) { | 1877 if (strcmp(name, current->name()) == 0) { |
| 1841 return current; | 1878 return current; |
| 1842 } | 1879 } |
| 1843 current = current->next(); | 1880 current = current->next(); |
| 1844 } | 1881 } |
| 1845 return NULL; | 1882 return NULL; |
| 1846 } | 1883 } |
| 1847 | 1884 |
| 1848 } // namespace dart | 1885 } // namespace dart |
| OLD | NEW |