| OLD | NEW |
| 1 // Copyright 2006-2012 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 "use strict"; |
| 4 | 5 |
| 5 // Handle id counters. | 6 // Handle id counters. |
| 6 var next_handle_ = 0; | 7 var next_handle_ = 0; |
| 7 var next_transient_handle_ = -1; | 8 var next_transient_handle_ = -1; |
| 8 | 9 |
| 9 // Mirror cache. | 10 // Mirror cache. |
| 10 var mirror_cache_ = []; | 11 var mirror_cache_ = []; |
| 11 var mirror_cache_enabled_ = true; | 12 var mirror_cache_enabled_ = true; |
| 12 | 13 |
| 13 | 14 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 37 * @param {value or Object} value the value or object to retreive the mirror for | 38 * @param {value or Object} value the value or object to retreive the mirror for |
| 38 * @param {boolean} transient indicate whether this object is transient and | 39 * @param {boolean} transient indicate whether this object is transient and |
| 39 * should not be added to the mirror cache. The default is not transient. | 40 * should not be added to the mirror cache. The default is not transient. |
| 40 * @returns {Mirror} the mirror reflects the passed value or object | 41 * @returns {Mirror} the mirror reflects the passed value or object |
| 41 */ | 42 */ |
| 42 function MakeMirror(value, opt_transient) { | 43 function MakeMirror(value, opt_transient) { |
| 43 var mirror; | 44 var mirror; |
| 44 | 45 |
| 45 // Look for non transient mirrors in the mirror cache. | 46 // Look for non transient mirrors in the mirror cache. |
| 46 if (!opt_transient && mirror_cache_enabled_) { | 47 if (!opt_transient && mirror_cache_enabled_) { |
| 47 for (id in mirror_cache_) { | 48 for (var id in mirror_cache_) { |
| 48 mirror = mirror_cache_[id]; | 49 mirror = mirror_cache_[id]; |
| 49 if (mirror.value() === value) { | 50 if (mirror.value() === value) { |
| 50 return mirror; | 51 return mirror; |
| 51 } | 52 } |
| 52 // Special check for NaN as NaN == NaN is false. | 53 // Special check for NaN as NaN == NaN is false. |
| 53 if (mirror.isNumber() && isNaN(mirror.value()) && | 54 if (mirror.isNumber() && isNaN(mirror.value()) && |
| 54 typeof value == 'number' && isNaN(value)) { | 55 typeof value == 'number' && isNaN(value)) { |
| 55 return mirror; | 56 return mirror; |
| 56 } | 57 } |
| 57 } | 58 } |
| (...skipping 1223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1281 */ | 1282 */ |
| 1282 ErrorMirror.prototype.message = function() { | 1283 ErrorMirror.prototype.message = function() { |
| 1283 return this.value_.message; | 1284 return this.value_.message; |
| 1284 }; | 1285 }; |
| 1285 | 1286 |
| 1286 | 1287 |
| 1287 ErrorMirror.prototype.toText = function() { | 1288 ErrorMirror.prototype.toText = function() { |
| 1288 // Use the same text representation as in messages.js. | 1289 // Use the same text representation as in messages.js. |
| 1289 var text; | 1290 var text; |
| 1290 try { | 1291 try { |
| 1291 str = %_CallFunction(this.value_, builtins.ErrorToString); | 1292 text = %_CallFunction(this.value_, builtins.ErrorToString); |
| 1292 } catch (e) { | 1293 } catch (e) { |
| 1293 str = '#<Error>'; | 1294 text = '#<Error>'; |
| 1294 } | 1295 } |
| 1295 return str; | 1296 return text; |
| 1296 }; | 1297 }; |
| 1297 | 1298 |
| 1298 | 1299 |
| 1299 /** | 1300 /** |
| 1300 * Mirror object for a Promise object. | 1301 * Mirror object for a Promise object. |
| 1301 * @param {Object} value The Promise object | 1302 * @param {Object} value The Promise object |
| 1302 * @constructor | 1303 * @constructor |
| 1303 * @extends ObjectMirror | 1304 * @extends ObjectMirror |
| 1304 */ | 1305 */ |
| 1305 function PromiseMirror(value) { | 1306 function PromiseMirror(value) { |
| (...skipping 1728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3034 } | 3035 } |
| 3035 if (!NUMBER_IS_FINITE(value)) { | 3036 if (!NUMBER_IS_FINITE(value)) { |
| 3036 if (value > 0) { | 3037 if (value > 0) { |
| 3037 return 'Infinity'; | 3038 return 'Infinity'; |
| 3038 } else { | 3039 } else { |
| 3039 return '-Infinity'; | 3040 return '-Infinity'; |
| 3040 } | 3041 } |
| 3041 } | 3042 } |
| 3042 return value; | 3043 return value; |
| 3043 } | 3044 } |
| OLD | NEW |