Index: src/debug-delay.js |
=================================================================== |
--- src/debug-delay.js (revision 1079) |
+++ src/debug-delay.js (working copy) |
@@ -994,22 +994,25 @@ |
if (this.body) { |
json += ',"body":'; |
// Encode the body part. |
- if (this.body.toJSONProtocol) { |
- json += this.body.toJSONProtocol(true); |
+ var serializer = MakeMirrorSerializer(true); |
+ if (this.body instanceof Mirror) { |
+ json += serializer.serializeValue(this.body); |
} else if (this.body instanceof Array) { |
json += '['; |
for (var i = 0; i < this.body.length; i++) { |
if (i != 0) json += ','; |
- if (this.body[i].toJSONProtocol) { |
- json += this.body[i].toJSONProtocol(true) |
+ if (this.body[i] instanceof Mirror) { |
+ json += serializer.serializeValue(this.body[i]); |
} else { |
- json += SimpleObjectToJSON_(this.body[i]); |
+ json += SimpleObjectToJSON_(this.body[i], serializer); |
} |
} |
json += ']'; |
} else { |
- json += SimpleObjectToJSON_(this.body); |
+ json += SimpleObjectToJSON_(this.body, serializer); |
} |
+ json += ',"refs":'; |
+ json += serializer.serializeReferencedObjects(); |
} |
if (this.message) { |
json += ',"message":' + StringToJSON_(this.message) ; |
@@ -1568,9 +1571,11 @@ |
* a general implementation but sufficient for the debugger. Note that circular |
* structures will cause infinite recursion. |
* @param {Object} object The object to format as JSON |
+ * @param {MirrorSerializer} mirror_serializer The serializer to use if any |
+ * mirror objects are encountered. |
* @return {string} JSON formatted object value |
*/ |
-function SimpleObjectToJSON_(object) { |
+function SimpleObjectToJSON_(object, mirror_serializer) { |
var content = []; |
for (var key in object) { |
// Only consider string keys. |
@@ -1584,9 +1589,9 @@ |
if (typeof property_value.toJSONProtocol == 'function') { |
property_value_json = property_value.toJSONProtocol(true) |
} else if (IS_ARRAY(property_value)){ |
- property_value_json = SimpleArrayToJSON_(property_value); |
+ property_value_json = SimpleArrayToJSON_(property_value, mirror_serializer); |
} else { |
- property_value_json = SimpleObjectToJSON_(property_value); |
+ property_value_json = SimpleObjectToJSON_(property_value, mirror_serializer); |
} |
break; |
@@ -1620,10 +1625,12 @@ |
/** |
* Convert an array to its JSON representation. This is a VERY simple |
* implementation just to support what is needed for the debugger. |
- * @param {Array} arrya The array to format as JSON |
+ * @param {Array} array The array to format as JSON |
+ * @param {MirrorSerializer} mirror_serializer The serializer to use if any |
+ * mirror objects are encountered. |
* @return {string} JSON formatted array value |
*/ |
-function SimpleArrayToJSON_(array) { |
+function SimpleArrayToJSON_(array, mirror_serializer) { |
// Make JSON array representation. |
var json = '['; |
for (var i = 0; i < array.length; i++) { |
@@ -1631,8 +1638,8 @@ |
json += ','; |
} |
var elem = array[i]; |
- if (elem.toJSONProtocol) { |
- json += elem.toJSONProtocol(true) |
+ if (elem instanceof Mirror) { |
+ json += mirror_serializer.serializeValue(elem); |
} else if (IS_OBJECT(elem)) { |
json += SimpleObjectToJSON_(elem); |
} else if (IS_BOOLEAN(elem)) { |