| 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 878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 889 result[i] = MakeMirror(result[i]); | 889 result[i] = MakeMirror(result[i]); |
| 890 } | 890 } |
| 891 | 891 |
| 892 return result; | 892 return result; |
| 893 } else { | 893 } else { |
| 894 return []; | 894 return []; |
| 895 } | 895 } |
| 896 }; | 896 }; |
| 897 | 897 |
| 898 | 898 |
| 899 FunctionMirror.prototype.scopeCount = function() { |
| 900 return %GetFunctionScopeCount(this.value()); |
| 901 }; |
| 902 |
| 903 |
| 904 FunctionMirror.prototype.scope = function(index) { |
| 905 return new ScopeMirror(undefined, this, index); |
| 906 }; |
| 907 |
| 908 |
| 899 FunctionMirror.prototype.toText = function() { | 909 FunctionMirror.prototype.toText = function() { |
| 900 return this.source(); | 910 return this.source(); |
| 901 }; | 911 }; |
| 902 | 912 |
| 903 | 913 |
| 904 /** | 914 /** |
| 905 * Mirror object for unresolved functions. | 915 * Mirror object for unresolved functions. |
| 906 * @param {string} value The name for the unresolved function reflected by this | 916 * @param {string} value The name for the unresolved function reflected by this |
| 907 * mirror. | 917 * mirror. |
| 908 * @constructor | 918 * @constructor |
| (...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1565 } | 1575 } |
| 1566 }; | 1576 }; |
| 1567 | 1577 |
| 1568 | 1578 |
| 1569 FrameMirror.prototype.scopeCount = function() { | 1579 FrameMirror.prototype.scopeCount = function() { |
| 1570 return this.details_.scopeCount(); | 1580 return this.details_.scopeCount(); |
| 1571 }; | 1581 }; |
| 1572 | 1582 |
| 1573 | 1583 |
| 1574 FrameMirror.prototype.scope = function(index) { | 1584 FrameMirror.prototype.scope = function(index) { |
| 1575 return new ScopeMirror(this, index); | 1585 return new ScopeMirror(this, undefined, index); |
| 1576 }; | 1586 }; |
| 1577 | 1587 |
| 1578 | 1588 |
| 1579 FrameMirror.prototype.evaluate = function(source, disable_break, | 1589 FrameMirror.prototype.evaluate = function(source, disable_break, |
| 1580 opt_context_object) { | 1590 opt_context_object) { |
| 1581 var result = %DebugEvaluate(this.break_id_, | 1591 var result = %DebugEvaluate(this.break_id_, |
| 1582 this.details_.frameId(), | 1592 this.details_.frameId(), |
| 1583 this.details_.inlinedFrameIndex(), | 1593 this.details_.inlinedFrameIndex(), |
| 1584 source, | 1594 source, |
| 1585 Boolean(disable_break), | 1595 Boolean(disable_break), |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1728 result += '\n'; | 1738 result += '\n'; |
| 1729 result += this.localsText(); | 1739 result += this.localsText(); |
| 1730 } | 1740 } |
| 1731 return result; | 1741 return result; |
| 1732 }; | 1742 }; |
| 1733 | 1743 |
| 1734 | 1744 |
| 1735 var kScopeDetailsTypeIndex = 0; | 1745 var kScopeDetailsTypeIndex = 0; |
| 1736 var kScopeDetailsObjectIndex = 1; | 1746 var kScopeDetailsObjectIndex = 1; |
| 1737 | 1747 |
| 1738 function ScopeDetails(frame, index) { | 1748 function ScopeDetails(frame, fun, index) { |
| 1739 this.break_id_ = frame.break_id_; | 1749 if (frame) { |
| 1740 this.details_ = %GetScopeDetails(frame.break_id_, | 1750 this.break_id_ = frame.break_id_; |
| 1741 frame.details_.frameId(), | 1751 this.details_ = %GetScopeDetails(frame.break_id_, |
| 1742 frame.details_.inlinedFrameIndex(), | 1752 frame.details_.frameId(), |
| 1743 index); | 1753 frame.details_.inlinedFrameIndex(), |
| 1754 index); |
| 1755 } else { |
| 1756 this.details_ = %GetFunctionScopeDetails(fun.value(), index); |
| 1757 this.break_id_ = undefined; |
| 1758 } |
| 1744 } | 1759 } |
| 1745 | 1760 |
| 1746 | 1761 |
| 1747 ScopeDetails.prototype.type = function() { | 1762 ScopeDetails.prototype.type = function() { |
| 1748 %CheckExecutionState(this.break_id_); | 1763 if (!IS_UNDEFINED(this.break_id_)) { |
| 1764 %CheckExecutionState(this.break_id_); |
| 1765 } |
| 1749 return this.details_[kScopeDetailsTypeIndex]; | 1766 return this.details_[kScopeDetailsTypeIndex]; |
| 1750 }; | 1767 }; |
| 1751 | 1768 |
| 1752 | 1769 |
| 1753 ScopeDetails.prototype.object = function() { | 1770 ScopeDetails.prototype.object = function() { |
| 1754 %CheckExecutionState(this.break_id_); | 1771 if (!IS_UNDEFINED(this.break_id_)) { |
| 1772 %CheckExecutionState(this.break_id_); |
| 1773 } |
| 1755 return this.details_[kScopeDetailsObjectIndex]; | 1774 return this.details_[kScopeDetailsObjectIndex]; |
| 1756 }; | 1775 }; |
| 1757 | 1776 |
| 1758 | 1777 |
| 1759 /** | 1778 /** |
| 1760 * Mirror object for scope. | 1779 * Mirror object for scope of frame or function. Either frame or function must |
| 1780 * be specified. |
| 1761 * @param {FrameMirror} frame The frame this scope is a part of | 1781 * @param {FrameMirror} frame The frame this scope is a part of |
| 1782 * @param {FunctionMirror} function The function this scope is a part of |
| 1762 * @param {number} index The scope index in the frame | 1783 * @param {number} index The scope index in the frame |
| 1763 * @constructor | 1784 * @constructor |
| 1764 * @extends Mirror | 1785 * @extends Mirror |
| 1765 */ | 1786 */ |
| 1766 function ScopeMirror(frame, index) { | 1787 function ScopeMirror(frame, function, index) { |
| 1767 %_CallFunction(this, SCOPE_TYPE, Mirror); | 1788 %_CallFunction(this, SCOPE_TYPE, Mirror); |
| 1768 this.frame_index_ = frame.index_; | 1789 if (frame) { |
| 1790 this.frame_index_ = frame.index_; |
| 1791 } else { |
| 1792 this.frame_index_ = undefined; |
| 1793 } |
| 1769 this.scope_index_ = index; | 1794 this.scope_index_ = index; |
| 1770 this.details_ = new ScopeDetails(frame, index); | 1795 this.details_ = new ScopeDetails(frame, function, index); |
| 1771 } | 1796 } |
| 1772 inherits(ScopeMirror, Mirror); | 1797 inherits(ScopeMirror, Mirror); |
| 1773 | 1798 |
| 1774 | 1799 |
| 1775 ScopeMirror.prototype.frameIndex = function() { | 1800 ScopeMirror.prototype.frameIndex = function() { |
| 1776 return this.frame_index_; | 1801 return this.frame_index_; |
| 1777 }; | 1802 }; |
| 1778 | 1803 |
| 1779 | 1804 |
| 1780 ScopeMirror.prototype.scopeIndex = function() { | 1805 ScopeMirror.prototype.scopeIndex = function() { |
| (...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2252 content.resolved = mirror.resolved(); | 2277 content.resolved = mirror.resolved(); |
| 2253 if (mirror.resolved()) { | 2278 if (mirror.resolved()) { |
| 2254 content.source = mirror.source(); | 2279 content.source = mirror.source(); |
| 2255 } | 2280 } |
| 2256 if (mirror.script()) { | 2281 if (mirror.script()) { |
| 2257 content.script = this.serializeReference(mirror.script()); | 2282 content.script = this.serializeReference(mirror.script()); |
| 2258 content.scriptId = mirror.script().id(); | 2283 content.scriptId = mirror.script().id(); |
| 2259 | 2284 |
| 2260 serializeLocationFields(mirror.sourceLocation(), content); | 2285 serializeLocationFields(mirror.sourceLocation(), content); |
| 2261 } | 2286 } |
| 2287 |
| 2288 content.scopes = []; |
| 2289 for (var i = 0; i < mirror.scopeCount(); i++) { |
| 2290 var scope = mirror.scope(i); |
| 2291 content.scopes.push({ |
| 2292 type: scope.scopeType(), |
| 2293 index: i |
| 2294 }); |
| 2295 } |
| 2262 } | 2296 } |
| 2263 | 2297 |
| 2264 // Add date specific properties. | 2298 // Add date specific properties. |
| 2265 if (mirror.isDate()) { | 2299 if (mirror.isDate()) { |
| 2266 // Add date specific properties. | 2300 // Add date specific properties. |
| 2267 content.value = mirror.value(); | 2301 content.value = mirror.value(); |
| 2268 } | 2302 } |
| 2269 | 2303 |
| 2270 // Add actual properties - named properties followed by indexed properties. | 2304 // Add actual properties - named properties followed by indexed properties. |
| 2271 var propertyNames = mirror.propertyNames(PropertyKind.Named); | 2305 var propertyNames = mirror.propertyNames(PropertyKind.Named); |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2428 } | 2462 } |
| 2429 if (!NUMBER_IS_FINITE(value)) { | 2463 if (!NUMBER_IS_FINITE(value)) { |
| 2430 if (value > 0) { | 2464 if (value > 0) { |
| 2431 return 'Infinity'; | 2465 return 'Infinity'; |
| 2432 } else { | 2466 } else { |
| 2433 return '-Infinity'; | 2467 return '-Infinity'; |
| 2434 } | 2468 } |
| 2435 } | 2469 } |
| 2436 return value; | 2470 return value; |
| 2437 } | 2471 } |
| OLD | NEW |