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 "use strict"; |
5 | 5 |
6 // Handle id counters. | 6 // Handle id counters. |
7 var next_handle_ = 0; | 7 var next_handle_ = 0; |
8 var next_transient_handle_ = -1; | 8 var next_transient_handle_ = -1; |
9 | 9 |
10 // Mirror cache. | 10 // Mirror cache. |
11 var mirror_cache_ = []; | 11 var mirror_cache_ = []; |
12 var mirror_cache_enabled_ = true; | 12 var mirror_cache_enabled_ = true; |
13 | 13 |
14 | 14 |
15 function ToggleMirrorCache(value) { | 15 function ToggleMirrorCache(value) { |
16 mirror_cache_enabled_ = value; | 16 mirror_cache_enabled_ = value; |
17 next_handle_ = 0; | 17 next_handle_ = 0; |
18 mirror_cache_ = []; | 18 mirror_cache_ = []; |
19 } | 19 } |
20 | 20 |
21 | 21 |
22 // Wrapper to check whether an object is a Promise. The call may not work | 22 // Wrapper to check whether an object is a Promise. The call may not work |
23 // if promises are not enabled. | 23 // if promises are not enabled. |
24 // TODO(yangguo): remove try-catch once promises are enabled by default. | 24 // TODO(yangguo): remove try-catch once promises are enabled by default. |
25 function ObjectIsPromise(value) { | 25 function ObjectIsPromise(value) { |
26 try { | 26 try { |
27 return IS_SPEC_OBJECT(value) && | 27 return IS_SPEC_OBJECT(value) && |
28 !IS_UNDEFINED(%DebugGetProperty(value, builtins.promiseStatus)); | 28 !IS_UNDEFINED(%DebugGetProperty(value, builtins.$promiseStatus)); |
29 } catch (e) { | 29 } catch (e) { |
30 return false; | 30 return false; |
31 } | 31 } |
32 } | 32 } |
33 | 33 |
34 | 34 |
35 /** | 35 /** |
36 * Returns the mirror for a specified value or object. | 36 * Returns the mirror for a specified value or object. |
37 * | 37 * |
38 * @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 |
(...skipping 1289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1328 * @constructor | 1328 * @constructor |
1329 * @extends ObjectMirror | 1329 * @extends ObjectMirror |
1330 */ | 1330 */ |
1331 function PromiseMirror(value) { | 1331 function PromiseMirror(value) { |
1332 %_CallFunction(this, value, PROMISE_TYPE, ObjectMirror); | 1332 %_CallFunction(this, value, PROMISE_TYPE, ObjectMirror); |
1333 } | 1333 } |
1334 inherits(PromiseMirror, ObjectMirror); | 1334 inherits(PromiseMirror, ObjectMirror); |
1335 | 1335 |
1336 | 1336 |
1337 function PromiseGetStatus_(value) { | 1337 function PromiseGetStatus_(value) { |
1338 var status = %DebugGetProperty(value, builtins.promiseStatus); | 1338 var status = %DebugGetProperty(value, builtins.$promiseStatus); |
1339 if (status == 0) return "pending"; | 1339 if (status == 0) return "pending"; |
1340 if (status == 1) return "resolved"; | 1340 if (status == 1) return "resolved"; |
1341 return "rejected"; | 1341 return "rejected"; |
1342 } | 1342 } |
1343 | 1343 |
1344 | 1344 |
1345 function PromiseGetValue_(value) { | 1345 function PromiseGetValue_(value) { |
1346 return %DebugGetProperty(value, builtins.promiseValue); | 1346 return %DebugGetProperty(value, builtins.$promiseValue); |
1347 } | 1347 } |
1348 | 1348 |
1349 | 1349 |
1350 PromiseMirror.prototype.status = function() { | 1350 PromiseMirror.prototype.status = function() { |
1351 return PromiseGetStatus_(this.value_); | 1351 return PromiseGetStatus_(this.value_); |
1352 }; | 1352 }; |
1353 | 1353 |
1354 | 1354 |
1355 PromiseMirror.prototype.promiseValue = function() { | 1355 PromiseMirror.prototype.promiseValue = function() { |
1356 return MakeMirror(PromiseGetValue_(this.value_)); | 1356 return MakeMirror(PromiseGetValue_(this.value_)); |
(...skipping 1705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3062 } | 3062 } |
3063 if (!NUMBER_IS_FINITE(value)) { | 3063 if (!NUMBER_IS_FINITE(value)) { |
3064 if (value > 0) { | 3064 if (value > 0) { |
3065 return 'Infinity'; | 3065 return 'Infinity'; |
3066 } else { | 3066 } else { |
3067 return '-Infinity'; | 3067 return '-Infinity'; |
3068 } | 3068 } |
3069 } | 3069 } |
3070 return value; | 3070 return value; |
3071 } | 3071 } |
OLD | NEW |