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

Side by Side Diff: src/debug-delay.js

Issue 18092: Added handles to the mirror objects. When a mirror for an object is created... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/debug.cc ('k') | src/mirror-delay.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 json += ',"command":' + StringToJSON_(this.command); 987 json += ',"command":' + StringToJSON_(this.command);
988 } 988 }
989 if (this.success) { 989 if (this.success) {
990 json += ',"success":' + this.success; 990 json += ',"success":' + this.success;
991 } else { 991 } else {
992 json += ',"success":false'; 992 json += ',"success":false';
993 } 993 }
994 if (this.body) { 994 if (this.body) {
995 json += ',"body":'; 995 json += ',"body":';
996 // Encode the body part. 996 // Encode the body part.
997 if (this.body.toJSONProtocol) { 997 var serializer = MakeMirrorSerializer(true);
998 json += this.body.toJSONProtocol(true); 998 if (this.body instanceof Mirror) {
999 json += serializer.serializeValue(this.body);
999 } else if (this.body instanceof Array) { 1000 } else if (this.body instanceof Array) {
1000 json += '['; 1001 json += '[';
1001 for (var i = 0; i < this.body.length; i++) { 1002 for (var i = 0; i < this.body.length; i++) {
1002 if (i != 0) json += ','; 1003 if (i != 0) json += ',';
1003 if (this.body[i].toJSONProtocol) { 1004 if (this.body[i] instanceof Mirror) {
1004 json += this.body[i].toJSONProtocol(true) 1005 json += serializer.serializeValue(this.body[i]);
1005 } else { 1006 } else {
1006 json += SimpleObjectToJSON_(this.body[i]); 1007 json += SimpleObjectToJSON_(this.body[i], serializer);
1007 } 1008 }
1008 } 1009 }
1009 json += ']'; 1010 json += ']';
1010 } else { 1011 } else {
1011 json += SimpleObjectToJSON_(this.body); 1012 json += SimpleObjectToJSON_(this.body, serializer);
1012 } 1013 }
1014 json += ',"refs":';
1015 json += serializer.serializeReferencedObjects();
1013 } 1016 }
1014 if (this.message) { 1017 if (this.message) {
1015 json += ',"message":' + StringToJSON_(this.message) ; 1018 json += ',"message":' + StringToJSON_(this.message) ;
1016 } 1019 }
1017 if (this.running) { 1020 if (this.running) {
1018 json += ',"running":true'; 1021 json += ',"running":true';
1019 } else { 1022 } else {
1020 json += ',"running":false'; 1023 json += ',"running":false';
1021 } 1024 }
1022 json += '}'; 1025 json += '}';
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
1561 1564
1562 /** 1565 /**
1563 * Convert an Object to its JSON representation (see http://www.json.org/). 1566 * Convert an Object to its JSON representation (see http://www.json.org/).
1564 * This implementation simply runs through all string property names and adds 1567 * This implementation simply runs through all string property names and adds
1565 * each property to the JSON representation for some predefined types. For type 1568 * each property to the JSON representation for some predefined types. For type
1566 * "object" the function calls itself recursively unless the object has the 1569 * "object" the function calls itself recursively unless the object has the
1567 * function property "toJSONProtocol" in which case that is used. This is not 1570 * function property "toJSONProtocol" in which case that is used. This is not
1568 * a general implementation but sufficient for the debugger. Note that circular 1571 * a general implementation but sufficient for the debugger. Note that circular
1569 * structures will cause infinite recursion. 1572 * structures will cause infinite recursion.
1570 * @param {Object} object The object to format as JSON 1573 * @param {Object} object The object to format as JSON
1574 * @param {MirrorSerializer} mirror_serializer The serializer to use if any
1575 * mirror objects are encountered.
1571 * @return {string} JSON formatted object value 1576 * @return {string} JSON formatted object value
1572 */ 1577 */
1573 function SimpleObjectToJSON_(object) { 1578 function SimpleObjectToJSON_(object, mirror_serializer) {
1574 var content = []; 1579 var content = [];
1575 for (var key in object) { 1580 for (var key in object) {
1576 // Only consider string keys. 1581 // Only consider string keys.
1577 if (typeof key == 'string') { 1582 if (typeof key == 'string') {
1578 var property_value = object[key]; 1583 var property_value = object[key];
1579 1584
1580 // Format the value based on its type. 1585 // Format the value based on its type.
1581 var property_value_json; 1586 var property_value_json;
1582 switch (typeof property_value) { 1587 switch (typeof property_value) {
1583 case 'object': 1588 case 'object':
1584 if (typeof property_value.toJSONProtocol == 'function') { 1589 if (typeof property_value.toJSONProtocol == 'function') {
1585 property_value_json = property_value.toJSONProtocol(true) 1590 property_value_json = property_value.toJSONProtocol(true)
1586 } else if (IS_ARRAY(property_value)){ 1591 } else if (IS_ARRAY(property_value)){
1587 property_value_json = SimpleArrayToJSON_(property_value); 1592 property_value_json = SimpleArrayToJSON_(property_value, mirror_seri alizer);
1588 } else { 1593 } else {
1589 property_value_json = SimpleObjectToJSON_(property_value); 1594 property_value_json = SimpleObjectToJSON_(property_value, mirror_ser ializer);
1590 } 1595 }
1591 break; 1596 break;
1592 1597
1593 case 'boolean': 1598 case 'boolean':
1594 property_value_json = BooleanToJSON_(property_value); 1599 property_value_json = BooleanToJSON_(property_value);
1595 break; 1600 break;
1596 1601
1597 case 'number': 1602 case 'number':
1598 property_value_json = NumberToJSON_(property_value); 1603 property_value_json = NumberToJSON_(property_value);
1599 break; 1604 break;
(...skipping 13 matching lines...) Expand all
1613 } 1618 }
1614 } 1619 }
1615 1620
1616 // Make JSON object representation. 1621 // Make JSON object representation.
1617 return '{' + content.join(',') + '}'; 1622 return '{' + content.join(',') + '}';
1618 } 1623 }
1619 1624
1620 /** 1625 /**
1621 * Convert an array to its JSON representation. This is a VERY simple 1626 * Convert an array to its JSON representation. This is a VERY simple
1622 * implementation just to support what is needed for the debugger. 1627 * implementation just to support what is needed for the debugger.
1623 * @param {Array} arrya The array to format as JSON 1628 * @param {Array} array The array to format as JSON
1629 * @param {MirrorSerializer} mirror_serializer The serializer to use if any
1630 * mirror objects are encountered.
1624 * @return {string} JSON formatted array value 1631 * @return {string} JSON formatted array value
1625 */ 1632 */
1626 function SimpleArrayToJSON_(array) { 1633 function SimpleArrayToJSON_(array, mirror_serializer) {
1627 // Make JSON array representation. 1634 // Make JSON array representation.
1628 var json = '['; 1635 var json = '[';
1629 for (var i = 0; i < array.length; i++) { 1636 for (var i = 0; i < array.length; i++) {
1630 if (i != 0) { 1637 if (i != 0) {
1631 json += ','; 1638 json += ',';
1632 } 1639 }
1633 var elem = array[i]; 1640 var elem = array[i];
1634 if (elem.toJSONProtocol) { 1641 if (elem instanceof Mirror) {
1635 json += elem.toJSONProtocol(true) 1642 json += mirror_serializer.serializeValue(elem);
1636 } else if (IS_OBJECT(elem)) { 1643 } else if (IS_OBJECT(elem)) {
1637 json += SimpleObjectToJSON_(elem); 1644 json += SimpleObjectToJSON_(elem);
1638 } else if (IS_BOOLEAN(elem)) { 1645 } else if (IS_BOOLEAN(elem)) {
1639 json += BooleanToJSON_(elem); 1646 json += BooleanToJSON_(elem);
1640 } else if (IS_NUMBER(elem)) { 1647 } else if (IS_NUMBER(elem)) {
1641 json += NumberToJSON_(elem); 1648 json += NumberToJSON_(elem);
1642 } else if (IS_STRING(elem)) { 1649 } else if (IS_STRING(elem)) {
1643 json += StringToJSON_(elem); 1650 json += StringToJSON_(elem);
1644 } else { 1651 } else {
1645 json += elem; 1652 json += elem;
1646 } 1653 }
1647 } 1654 }
1648 json += ']'; 1655 json += ']';
1649 return json; 1656 return json;
1650 } 1657 }
OLDNEW
« no previous file with comments | « src/debug.cc ('k') | src/mirror-delay.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698