| OLD | NEW | 
|---|
| 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 60       if (mirror.value() === value) { | 60       if (mirror.value() === value) { | 
| 61         return mirror; | 61         return mirror; | 
| 62       } | 62       } | 
| 63       // Special check for NaN as NaN == NaN is false. | 63       // Special check for NaN as NaN == NaN is false. | 
| 64       if (mirror.isNumber() && isNaN(mirror.value()) && | 64       if (mirror.isNumber() && isNaN(mirror.value()) && | 
| 65           typeof value == 'number' && isNaN(value)) { | 65           typeof value == 'number' && isNaN(value)) { | 
| 66         return mirror; | 66         return mirror; | 
| 67       } | 67       } | 
| 68     } | 68     } | 
| 69   } | 69   } | 
| 70 | 70 | 
| 71   if (IS_UNDEFINED(value)) { | 71   if (IS_UNDEFINED(value)) { | 
| 72     mirror = new UndefinedMirror(); | 72     mirror = new UndefinedMirror(); | 
| 73   } else if (IS_NULL(value)) { | 73   } else if (IS_NULL(value)) { | 
| 74     mirror = new NullMirror(); | 74     mirror = new NullMirror(); | 
| 75   } else if (IS_BOOLEAN(value)) { | 75   } else if (IS_BOOLEAN(value)) { | 
| 76     mirror = new BooleanMirror(value); | 76     mirror = new BooleanMirror(value); | 
| 77   } else if (IS_NUMBER(value)) { | 77   } else if (IS_NUMBER(value)) { | 
| 78     mirror = new NumberMirror(value); | 78     mirror = new NumberMirror(value); | 
| 79   } else if (IS_STRING(value)) { | 79   } else if (IS_STRING(value)) { | 
| 80     mirror = new StringMirror(value); | 80     mirror = new StringMirror(value); | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 103  * Returns the mirror for a specified mirror handle. | 103  * Returns the mirror for a specified mirror handle. | 
| 104  * | 104  * | 
| 105  * @param {number} handle the handle to find the mirror for | 105  * @param {number} handle the handle to find the mirror for | 
| 106  * @returns {Mirror or undefiend} the mirror with the requested handle or | 106  * @returns {Mirror or undefiend} the mirror with the requested handle or | 
| 107  *     undefined if no mirror with the requested handle was found | 107  *     undefined if no mirror with the requested handle was found | 
| 108  */ | 108  */ | 
| 109 function LookupMirror(handle) { | 109 function LookupMirror(handle) { | 
| 110   return mirror_cache_[handle]; | 110   return mirror_cache_[handle]; | 
| 111 } | 111 } | 
| 112 | 112 | 
| 113 | 113 | 
| 114 /** | 114 /** | 
| 115  * Returns the mirror for the undefined value. | 115  * Returns the mirror for the undefined value. | 
| 116  * | 116  * | 
| 117  * @returns {Mirror} the mirror reflects the undefined value | 117  * @returns {Mirror} the mirror reflects the undefined value | 
| 118  */ | 118  */ | 
| 119 function GetUndefinedMirror() { | 119 function GetUndefinedMirror() { | 
| 120   return MakeMirror(void 0); | 120   return MakeMirror(void 0); | 
| 121 } | 121 } | 
| 122 | 122 | 
| 123 | 123 | 
| (...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 615        value | 615        value | 
| 616  * @return {Array} Property names for this object | 616  * @return {Array} Property names for this object | 
| 617  */ | 617  */ | 
| 618 ObjectMirror.prototype.propertyNames = function(kind, limit) { | 618 ObjectMirror.prototype.propertyNames = function(kind, limit) { | 
| 619   // Find kind and limit and allocate array for the result | 619   // Find kind and limit and allocate array for the result | 
| 620   kind = kind || PropertyKind.Named | PropertyKind.Indexed; | 620   kind = kind || PropertyKind.Named | PropertyKind.Indexed; | 
| 621 | 621 | 
| 622   var propertyNames; | 622   var propertyNames; | 
| 623   var elementNames; | 623   var elementNames; | 
| 624   var total = 0; | 624   var total = 0; | 
| 625 | 625 | 
| 626   // Find all the named properties. | 626   // Find all the named properties. | 
| 627   if (kind & PropertyKind.Named) { | 627   if (kind & PropertyKind.Named) { | 
| 628     // Get the local property names. | 628     // Get the local property names. | 
| 629     propertyNames = %GetLocalPropertyNames(this.value_); | 629     propertyNames = %GetLocalPropertyNames(this.value_); | 
| 630     total += propertyNames.length; | 630     total += propertyNames.length; | 
| 631 | 631 | 
| 632     // Get names for named interceptor properties if any. | 632     // Get names for named interceptor properties if any. | 
| 633     if (this.hasNamedInterceptor() && (kind & PropertyKind.Named)) { | 633     if (this.hasNamedInterceptor() && (kind & PropertyKind.Named)) { | 
| 634       var namedInterceptorNames = | 634       var namedInterceptorNames = | 
| 635           %GetNamedInterceptorPropertyNames(this.value_); | 635           %GetNamedInterceptorPropertyNames(this.value_); | 
| (...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1216     return MakeMirror(this.setter_); | 1216     return MakeMirror(this.setter_); | 
| 1217   } else { | 1217   } else { | 
| 1218     return GetUndefinedMirror(); | 1218     return GetUndefinedMirror(); | 
| 1219   } | 1219   } | 
| 1220 } | 1220 } | 
| 1221 | 1221 | 
| 1222 | 1222 | 
| 1223 /** | 1223 /** | 
| 1224  * Returns whether this property is natively implemented by the host or a set | 1224  * Returns whether this property is natively implemented by the host or a set | 
| 1225  * through JavaScript code. | 1225  * through JavaScript code. | 
| 1226  * @return {boolean} True if the property is | 1226  * @return {boolean} True if the property is | 
| 1227  *     UndefinedMirror if there is no setter for this property | 1227  *     UndefinedMirror if there is no setter for this property | 
| 1228  */ | 1228  */ | 
| 1229 PropertyMirror.prototype.isNative = function() { | 1229 PropertyMirror.prototype.isNative = function() { | 
| 1230   return (this.propertyType() == PropertyType.Interceptor) || | 1230   return (this.propertyType() == PropertyType.Interceptor) || | 
| 1231          ((this.propertyType() == PropertyType.Callbacks) && | 1231          ((this.propertyType() == PropertyType.Callbacks) && | 
| 1232           !this.hasGetter() && !this.hasSetter()); | 1232           !this.hasGetter() && !this.hasSetter()); | 
| 1233 } | 1233 } | 
| 1234 | 1234 | 
| 1235 | 1235 | 
| 1236 const kFrameDetailsFrameIdIndex = 0; | 1236 const kFrameDetailsFrameIdIndex = 0; | 
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1383 | 1383 | 
| 1384 | 1384 | 
| 1385 FrameMirror.prototype.index = function() { | 1385 FrameMirror.prototype.index = function() { | 
| 1386   return this.index_; | 1386   return this.index_; | 
| 1387 }; | 1387 }; | 
| 1388 | 1388 | 
| 1389 | 1389 | 
| 1390 FrameMirror.prototype.func = function() { | 1390 FrameMirror.prototype.func = function() { | 
| 1391   // Get the function for this frame from the VM. | 1391   // Get the function for this frame from the VM. | 
| 1392   var f = this.details_.func(); | 1392   var f = this.details_.func(); | 
| 1393 | 1393 | 
| 1394   // Create a function mirror. NOTE: MakeMirror cannot be used here as the | 1394   // Create a function mirror. NOTE: MakeMirror cannot be used here as the | 
| 1395   // value returned from the VM might be a string if the function for the | 1395   // value returned from the VM might be a string if the function for the | 
| 1396   // frame is unresolved. | 1396   // frame is unresolved. | 
| 1397   if (IS_FUNCTION(f)) { | 1397   if (IS_FUNCTION(f)) { | 
| 1398     return MakeMirror(f); | 1398     return MakeMirror(f); | 
| 1399   } else { | 1399   } else { | 
| 1400     return new UnresolvedFunctionMirror(f); | 1400     return new UnresolvedFunctionMirror(f); | 
| 1401   } | 1401   } | 
| 1402 }; | 1402 }; | 
| 1403 | 1403 | 
| (...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1818     result += this.lineOffset() + this.lineCount() - 1; | 1818     result += this.lineOffset() + this.lineCount() - 1; | 
| 1819   } else { | 1819   } else { | 
| 1820     result += this.lineCount(); | 1820     result += this.lineCount(); | 
| 1821   } | 1821   } | 
| 1822   result += ')'; | 1822   result += ')'; | 
| 1823   return result; | 1823   return result; | 
| 1824 } | 1824 } | 
| 1825 | 1825 | 
| 1826 | 1826 | 
| 1827 /** | 1827 /** | 
| 1828  * Returns a suggested script URL from comments in script code (if found), | 1828  * Returns a suggested script URL from comments in script code (if found), | 
| 1829  * undefined otherwise. Used primarily by debuggers for identifying eval()'ed | 1829  * undefined otherwise. Used primarily by debuggers for identifying eval()'ed | 
| 1830  * scripts. See | 1830  * scripts. See | 
| 1831  * http://fbug.googlecode.com/svn/branches/firebug1.1/docs/ReleaseNotes_1.1.txt | 1831  * http://fbug.googlecode.com/svn/branches/firebug1.1/docs/ReleaseNotes_1.1.txt | 
| 1832  * for details. | 1832  * for details. | 
| 1833  * | 1833  * | 
| 1834  * @return {?string} value for //@ sourceURL comment | 1834  * @return {?string} value for //@ sourceURL comment | 
| 1835  */ | 1835  */ | 
| 1836 ScriptMirror.prototype.sourceUrlFromComment_ = function() { | 1836 ScriptMirror.prototype.sourceUrlFromComment_ = function() { | 
| 1837   if (!('sourceUrl_' in this) && this.source()) { | 1837   if (!('sourceUrl_' in this) && this.source()) { | 
| 1838     // TODO(608): the spaces in a regexp below had to be escaped as \040 | 1838     // TODO(608): the spaces in a regexp below had to be escaped as \040 | 
| 1839     // because this file is being processed by js2c whose handling of spaces | 1839     // because this file is being processed by js2c whose handling of spaces | 
| 1840     // in regexps is broken. | 1840     // in regexps is broken. | 
| 1841     // We're not using \s here to prevent \n from matching. | 1841     // We're not using \s here to prevent \n from matching. | 
| 1842     var sourceUrlPattern = /\/\/@[\040\t]sourceURL=[\040\t]*(\S+)[\040\t]*$/m; | 1842     var sourceUrlPattern = /\/\/@[\040\t]sourceURL=[\040\t]*(\S+)[\040\t]*$/m; | 
| 1843     var match = sourceUrlPattern.exec(this.source()); | 1843     var match = sourceUrlPattern.exec(this.source()); | 
| 1844     this.sourceUrl_ = match ? match[1] : undefined; | 1844     this.sourceUrl_ = match ? match[1] : undefined; | 
| 1845   } | 1845   } | 
| 1846   return this.sourceUrl_; | 1846   return this.sourceUrl_; | 
| 1847 }; | 1847 }; | 
| 1848 | 1848 | 
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1921 /** | 1921 /** | 
| 1922  * Returns a serialization of all the objects referenced. | 1922  * Returns a serialization of all the objects referenced. | 
| 1923  * | 1923  * | 
| 1924  * @param {Mirror} mirror The mirror to serialize. | 1924  * @param {Mirror} mirror The mirror to serialize. | 
| 1925  * @returns {Array.<Object>} Array of the referenced objects converted to | 1925  * @returns {Array.<Object>} Array of the referenced objects converted to | 
| 1926  *     protcol objects. | 1926  *     protcol objects. | 
| 1927  */ | 1927  */ | 
| 1928 JSONProtocolSerializer.prototype.serializeReferencedObjects = function() { | 1928 JSONProtocolSerializer.prototype.serializeReferencedObjects = function() { | 
| 1929   // Collect the protocol representation of the referenced objects in an array. | 1929   // Collect the protocol representation of the referenced objects in an array. | 
| 1930   var content = []; | 1930   var content = []; | 
| 1931 | 1931 | 
| 1932   // Get the number of referenced objects. | 1932   // Get the number of referenced objects. | 
| 1933   var count = this.mirrors_.length; | 1933   var count = this.mirrors_.length; | 
| 1934 | 1934 | 
| 1935   for (var i = 0; i < count; i++) { | 1935   for (var i = 0; i < count; i++) { | 
| 1936     content.push(this.serialize_(this.mirrors_[i], false, false)); | 1936     content.push(this.serialize_(this.mirrors_[i], false, false)); | 
| 1937   } | 1937   } | 
| 1938 | 1938 | 
| 1939   return content; | 1939   return content; | 
| 1940 } | 1940 } | 
| 1941 | 1941 | 
| 1942 | 1942 | 
| 1943 JSONProtocolSerializer.prototype.includeSource_ = function() { | 1943 JSONProtocolSerializer.prototype.includeSource_ = function() { | 
| 1944   return this.options_ && this.options_.includeSource; | 1944   return this.options_ && this.options_.includeSource; | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 1959 } | 1959 } | 
| 1960 | 1960 | 
| 1961 | 1961 | 
| 1962 JSONProtocolSerializer.prototype.add_ = function(mirror) { | 1962 JSONProtocolSerializer.prototype.add_ = function(mirror) { | 
| 1963   // If this mirror is already in the list just return. | 1963   // If this mirror is already in the list just return. | 
| 1964   for (var i = 0; i < this.mirrors_.length; i++) { | 1964   for (var i = 0; i < this.mirrors_.length; i++) { | 
| 1965     if (this.mirrors_[i] === mirror) { | 1965     if (this.mirrors_[i] === mirror) { | 
| 1966       return; | 1966       return; | 
| 1967     } | 1967     } | 
| 1968   } | 1968   } | 
| 1969 | 1969 | 
| 1970   // Add the mirror to the list of mirrors to be serialized. | 1970   // Add the mirror to the list of mirrors to be serialized. | 
| 1971   this.mirrors_.push(mirror); | 1971   this.mirrors_.push(mirror); | 
| 1972 } | 1972 } | 
| 1973 | 1973 | 
| 1974 | 1974 | 
| 1975 /** | 1975 /** | 
| 1976  * Formats mirror object to protocol reference object with some data that can | 1976  * Formats mirror object to protocol reference object with some data that can | 
| 1977  * be used to display the value in debugger. | 1977  * be used to display the value in debugger. | 
| 1978  * @param {Mirror} mirror Mirror to serialize. | 1978  * @param {Mirror} mirror Mirror to serialize. | 
| 1979  * @return {Object} Protocol reference object. | 1979  * @return {Object} Protocol reference object. | 
| 1980  */ | 1980  */ | 
| 1981 JSONProtocolSerializer.prototype.serializeReferenceWithDisplayData_ = | 1981 JSONProtocolSerializer.prototype.serializeReferenceWithDisplayData_ = | 
| 1982     function(mirror) { | 1982     function(mirror) { | 
| 1983   var o = {}; | 1983   var o = {}; | 
| 1984   o.ref = mirror.handle(); | 1984   o.ref = mirror.handle(); | 
| 1985   o.type = mirror.type(); | 1985   o.type = mirror.type(); | 
| 1986   switch (mirror.type()) { | 1986   switch (mirror.type()) { | 
| 1987     case UNDEFINED_TYPE: | 1987     case UNDEFINED_TYPE: | 
| 1988     case NULL_TYPE: | 1988     case NULL_TYPE: | 
| 1989     case BOOLEAN_TYPE: | 1989     case BOOLEAN_TYPE: | 
| 1990     case NUMBER_TYPE: | 1990     case NUMBER_TYPE: | 
| 1991       o.value = mirror.value(); | 1991       o.value = mirror.value(); | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 2018   // the mirror to the referenced mirrors. | 2018   // the mirror to the referenced mirrors. | 
| 2019   if (reference && | 2019   if (reference && | 
| 2020       (mirror.isValue() || mirror.isScript() || mirror.isContext())) { | 2020       (mirror.isValue() || mirror.isScript() || mirror.isContext())) { | 
| 2021     if (this.inlineRefs_() && mirror.isValue()) { | 2021     if (this.inlineRefs_() && mirror.isValue()) { | 
| 2022       return this.serializeReferenceWithDisplayData_(mirror); | 2022       return this.serializeReferenceWithDisplayData_(mirror); | 
| 2023     } else { | 2023     } else { | 
| 2024       this.add_(mirror); | 2024       this.add_(mirror); | 
| 2025       return {'ref' : mirror.handle()}; | 2025       return {'ref' : mirror.handle()}; | 
| 2026     } | 2026     } | 
| 2027   } | 2027   } | 
| 2028 | 2028 | 
| 2029   // Collect the JSON property/value pairs. | 2029   // Collect the JSON property/value pairs. | 
| 2030   var content = {}; | 2030   var content = {}; | 
| 2031 | 2031 | 
| 2032   // Add the mirror handle. | 2032   // Add the mirror handle. | 
| 2033   if (mirror.isValue() || mirror.isScript() || mirror.isContext()) { | 2033   if (mirror.isValue() || mirror.isScript() || mirror.isContext()) { | 
| 2034     content.handle = mirror.handle(); | 2034     content.handle = mirror.handle(); | 
| 2035   } | 2035   } | 
| 2036 | 2036 | 
| 2037   // Always add the type. | 2037   // Always add the type. | 
| 2038   content.type = mirror.type(); | 2038   content.type = mirror.type(); | 
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2130       } | 2130       } | 
| 2131       break; | 2131       break; | 
| 2132 | 2132 | 
| 2133     case CONTEXT_TYPE: | 2133     case CONTEXT_TYPE: | 
| 2134       content.data = mirror.data(); | 2134       content.data = mirror.data(); | 
| 2135       break; | 2135       break; | 
| 2136   } | 2136   } | 
| 2137 | 2137 | 
| 2138   // Always add the text representation. | 2138   // Always add the text representation. | 
| 2139   content.text = mirror.toText(); | 2139   content.text = mirror.toText(); | 
| 2140 | 2140 | 
| 2141   // Create and return the JSON string. | 2141   // Create and return the JSON string. | 
| 2142   return content; | 2142   return content; | 
| 2143 } | 2143 } | 
| 2144 | 2144 | 
| 2145 | 2145 | 
| 2146 /** | 2146 /** | 
| 2147  * Serialize object information to the following JSON format. | 2147  * Serialize object information to the following JSON format. | 
| 2148  * | 2148  * | 
| 2149  *   {"className":"<class name>", | 2149  *   {"className":"<class name>", | 
| 2150  *    "constructorFunction":{"ref":<number>}, | 2150  *    "constructorFunction":{"ref":<number>}, | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
| 2163   content.protoObject = this.serializeReference(mirror.protoObject()); | 2163   content.protoObject = this.serializeReference(mirror.protoObject()); | 
| 2164   content.prototypeObject = this.serializeReference(mirror.prototypeObject()); | 2164   content.prototypeObject = this.serializeReference(mirror.prototypeObject()); | 
| 2165 | 2165 | 
| 2166   // Add flags to indicate whether there are interceptors. | 2166   // Add flags to indicate whether there are interceptors. | 
| 2167   if (mirror.hasNamedInterceptor()) { | 2167   if (mirror.hasNamedInterceptor()) { | 
| 2168     content.namedInterceptor = true; | 2168     content.namedInterceptor = true; | 
| 2169   } | 2169   } | 
| 2170   if (mirror.hasIndexedInterceptor()) { | 2170   if (mirror.hasIndexedInterceptor()) { | 
| 2171     content.indexedInterceptor = true; | 2171     content.indexedInterceptor = true; | 
| 2172   } | 2172   } | 
| 2173 | 2173 | 
| 2174   // Add function specific properties. | 2174   // Add function specific properties. | 
| 2175   if (mirror.isFunction()) { | 2175   if (mirror.isFunction()) { | 
| 2176     // Add function specific properties. | 2176     // Add function specific properties. | 
| 2177     content.name = mirror.name(); | 2177     content.name = mirror.name(); | 
| 2178     if (!IS_UNDEFINED(mirror.inferredName())) { | 2178     if (!IS_UNDEFINED(mirror.inferredName())) { | 
| 2179       content.inferredName = mirror.inferredName(); | 2179       content.inferredName = mirror.inferredName(); | 
| 2180     } | 2180     } | 
| 2181     content.resolved = mirror.resolved(); | 2181     content.resolved = mirror.resolved(); | 
| 2182     if (mirror.resolved()) { | 2182     if (mirror.resolved()) { | 
| 2183       content.source = mirror.source(); | 2183       content.source = mirror.source(); | 
| 2184     } | 2184     } | 
| 2185     if (mirror.script()) { | 2185     if (mirror.script()) { | 
| 2186       content.script = this.serializeReference(mirror.script()); | 2186       content.script = this.serializeReference(mirror.script()); | 
| 2187       content.scriptId = mirror.script().id(); | 2187       content.scriptId = mirror.script().id(); | 
| 2188 | 2188 | 
| 2189       serializeLocationFields(mirror.sourceLocation(), content); | 2189       serializeLocationFields(mirror.sourceLocation(), content); | 
| 2190     } | 2190     } | 
| 2191   } | 2191   } | 
| 2192 | 2192 | 
| 2193   // Add date specific properties. | 2193   // Add date specific properties. | 
| 2194   if (mirror.isDate()) { | 2194   if (mirror.isDate()) { | 
| 2195     // Add date specific properties. | 2195     // Add date specific properties. | 
| 2196     content.value = mirror.value(); | 2196     content.value = mirror.value(); | 
| 2197   } | 2197   } | 
| 2198 | 2198 | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
| 2217   content.properties = p; | 2217   content.properties = p; | 
| 2218 } | 2218 } | 
| 2219 | 2219 | 
| 2220 | 2220 | 
| 2221 /** | 2221 /** | 
| 2222  * Serialize location information to the following JSON format: | 2222  * Serialize location information to the following JSON format: | 
| 2223  * | 2223  * | 
| 2224  *   "position":"<position>", | 2224  *   "position":"<position>", | 
| 2225  *   "line":"<line>", | 2225  *   "line":"<line>", | 
| 2226  *   "column":"<column>", | 2226  *   "column":"<column>", | 
| 2227  * | 2227  * | 
| 2228  * @param {SourceLocation} location The location to serialize, may be undefined. | 2228  * @param {SourceLocation} location The location to serialize, may be undefined. | 
| 2229  */ | 2229  */ | 
| 2230 function serializeLocationFields (location, content) { | 2230 function serializeLocationFields (location, content) { | 
| 2231   if (!location) { | 2231   if (!location) { | 
| 2232     return; | 2232     return; | 
| 2233   } | 2233   } | 
| 2234   content.position = location.position; | 2234   content.position = location.position; | 
| 2235   var line = location.line; | 2235   var line = location.line; | 
| 2236   if (!IS_UNDEFINED(line)) { | 2236   if (!IS_UNDEFINED(line)) { | 
| 2237     content.line = line; | 2237     content.line = line; | 
| 2238   } | 2238   } | 
| 2239   var column = location.column; | 2239   var column = location.column; | 
| 2240   if (!IS_UNDEFINED(column)) { | 2240   if (!IS_UNDEFINED(column)) { | 
| 2241     content.column = column; | 2241     content.column = column; | 
| 2242   } | 2242   } | 
| 2243 } | 2243 } | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 2257  * Here are a couple of examples. | 2257  * Here are a couple of examples. | 
| 2258  * | 2258  * | 
| 2259  *   {"name":"hello","ref":1} | 2259  *   {"name":"hello","ref":1} | 
| 2260  *   {"name":"length","attributes":7,"propertyType":3,"ref":2} | 2260  *   {"name":"length","attributes":7,"propertyType":3,"ref":2} | 
| 2261  * | 2261  * | 
| 2262  * @param {PropertyMirror} propertyMirror The property to serialize. | 2262  * @param {PropertyMirror} propertyMirror The property to serialize. | 
| 2263  * @returns {Object} Protocol object representing the property. | 2263  * @returns {Object} Protocol object representing the property. | 
| 2264  */ | 2264  */ | 
| 2265 JSONProtocolSerializer.prototype.serializeProperty_ = function(propertyMirror) { | 2265 JSONProtocolSerializer.prototype.serializeProperty_ = function(propertyMirror) { | 
| 2266   var result = {}; | 2266   var result = {}; | 
| 2267 | 2267 | 
| 2268   result.name = propertyMirror.name(); | 2268   result.name = propertyMirror.name(); | 
| 2269   var propertyValue = propertyMirror.value(); | 2269   var propertyValue = propertyMirror.value(); | 
| 2270   if (this.inlineRefs_() && propertyValue.isValue()) { | 2270   if (this.inlineRefs_() && propertyValue.isValue()) { | 
| 2271     result.value = this.serializeReferenceWithDisplayData_(propertyValue); | 2271     result.value = this.serializeReferenceWithDisplayData_(propertyValue); | 
| 2272   } else { | 2272   } else { | 
| 2273     if (propertyMirror.attributes() != PropertyAttribute.None) { | 2273     if (propertyMirror.attributes() != PropertyAttribute.None) { | 
| 2274       result.attributes = propertyMirror.attributes(); | 2274       result.attributes = propertyMirror.attributes(); | 
| 2275     } | 2275     } | 
| 2276     if (propertyMirror.propertyType() != PropertyType.Normal) { | 2276     if (propertyMirror.propertyType() != PropertyType.Normal) { | 
| 2277       result.propertyType = propertyMirror.propertyType(); | 2277       result.propertyType = propertyMirror.propertyType(); | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2309     local.name = mirror.localName(i); | 2309     local.name = mirror.localName(i); | 
| 2310     local.value = this.serializeReference(mirror.localValue(i)); | 2310     local.value = this.serializeReference(mirror.localValue(i)); | 
| 2311     x[i] = local; | 2311     x[i] = local; | 
| 2312   } | 2312   } | 
| 2313   content.locals = x; | 2313   content.locals = x; | 
| 2314   serializeLocationFields(mirror.sourceLocation(), content); | 2314   serializeLocationFields(mirror.sourceLocation(), content); | 
| 2315   var source_line_text = mirror.sourceLineText(); | 2315   var source_line_text = mirror.sourceLineText(); | 
| 2316   if (!IS_UNDEFINED(source_line_text)) { | 2316   if (!IS_UNDEFINED(source_line_text)) { | 
| 2317     content.sourceLineText = source_line_text; | 2317     content.sourceLineText = source_line_text; | 
| 2318   } | 2318   } | 
| 2319 | 2319 | 
| 2320   content.scopes = []; | 2320   content.scopes = []; | 
| 2321   for (var i = 0; i < mirror.scopeCount(); i++) { | 2321   for (var i = 0; i < mirror.scopeCount(); i++) { | 
| 2322     var scope = mirror.scope(i); | 2322     var scope = mirror.scope(i); | 
| 2323     content.scopes.push({ | 2323     content.scopes.push({ | 
| 2324       type: scope.scopeType(), | 2324       type: scope.scopeType(), | 
| 2325       index: i | 2325       index: i | 
| 2326     }); | 2326     }); | 
| 2327   } | 2327   } | 
| 2328 } | 2328 } | 
| 2329 | 2329 | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
| 2351   if (isNaN(value)) { | 2351   if (isNaN(value)) { | 
| 2352     return 'NaN'; | 2352     return 'NaN'; | 
| 2353   } | 2353   } | 
| 2354   if (!isFinite(value)) { | 2354   if (!isFinite(value)) { | 
| 2355     if (value > 0) { | 2355     if (value > 0) { | 
| 2356       return 'Infinity'; | 2356       return 'Infinity'; | 
| 2357     } else { | 2357     } else { | 
| 2358       return '-Infinity'; | 2358       return '-Infinity'; | 
| 2359     } | 2359     } | 
| 2360   } | 2360   } | 
| 2361   return value; | 2361   return value; | 
| 2362 } | 2362 } | 
| OLD | NEW | 
|---|