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 | 4 |
5 (function(global, utils) { | 5 (function(global, utils) { |
6 "use strict"; | 6 "use strict"; |
7 | 7 |
8 // ---------------------------------------------------------------------------- | 8 // ---------------------------------------------------------------------------- |
9 // Imports | 9 // Imports |
10 | 10 |
11 var FunctionSourceString; | 11 var FunctionSourceString; |
12 var GlobalArray = global.Array; | 12 var GlobalArray = global.Array; |
13 var IsNaN = global.isNaN; | 13 var IsNaN = global.isNaN; |
14 var JSONStringify = global.JSON.stringify; | 14 var JSONStringify = global.JSON.stringify; |
15 var MathMin = global.Math.min; | 15 var MathMin = global.Math.min; |
| 16 var promiseStatusSymbol = utils.GetPrivateSymbol("promise_status_symbol"); |
| 17 var promiseValueSymbol = utils.GetPrivateSymbol("promise_value_symbol"); |
16 var ToBoolean; | 18 var ToBoolean; |
17 var ToString; | 19 var ToString; |
18 | 20 |
19 utils.Import(function(from) { | 21 utils.Import(function(from) { |
20 FunctionSourceString = from.FunctionSourceString; | 22 FunctionSourceString = from.FunctionSourceString; |
21 ToBoolean = from.ToBoolean; | 23 ToBoolean = from.ToBoolean; |
22 ToString = from.ToString; | 24 ToString = from.ToString; |
23 }); | 25 }); |
24 | 26 |
25 // ---------------------------------------------------------------------------- | 27 // ---------------------------------------------------------------------------- |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 mirror_cache_ = []; | 104 mirror_cache_ = []; |
103 } | 105 } |
104 | 106 |
105 | 107 |
106 // Wrapper to check whether an object is a Promise. The call may not work | 108 // Wrapper to check whether an object is a Promise. The call may not work |
107 // if promises are not enabled. | 109 // if promises are not enabled. |
108 // TODO(yangguo): remove try-catch once promises are enabled by default. | 110 // TODO(yangguo): remove try-catch once promises are enabled by default. |
109 function ObjectIsPromise(value) { | 111 function ObjectIsPromise(value) { |
110 try { | 112 try { |
111 return IS_SPEC_OBJECT(value) && | 113 return IS_SPEC_OBJECT(value) && |
112 !IS_UNDEFINED(%DebugGetProperty(value, builtins.$promiseStatus)); | 114 !IS_UNDEFINED(%DebugGetProperty(value, promiseStatusSymbol)); |
113 } catch (e) { | 115 } catch (e) { |
114 return false; | 116 return false; |
115 } | 117 } |
116 } | 118 } |
117 | 119 |
118 | 120 |
119 /** | 121 /** |
120 * Returns the mirror for a specified value or object. | 122 * Returns the mirror for a specified value or object. |
121 * | 123 * |
122 * @param {value or Object} value the value or object to retreive the mirror for | 124 * @param {value or Object} value the value or object to retreive the mirror for |
(...skipping 1196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1319 * @constructor | 1321 * @constructor |
1320 * @extends ObjectMirror | 1322 * @extends ObjectMirror |
1321 */ | 1323 */ |
1322 function PromiseMirror(value) { | 1324 function PromiseMirror(value) { |
1323 %_CallFunction(this, value, MirrorType.PROMISE_TYPE, ObjectMirror); | 1325 %_CallFunction(this, value, MirrorType.PROMISE_TYPE, ObjectMirror); |
1324 } | 1326 } |
1325 inherits(PromiseMirror, ObjectMirror); | 1327 inherits(PromiseMirror, ObjectMirror); |
1326 | 1328 |
1327 | 1329 |
1328 function PromiseGetStatus_(value) { | 1330 function PromiseGetStatus_(value) { |
1329 var status = %DebugGetProperty(value, builtins.$promiseStatus); | 1331 var status = %DebugGetProperty(value, promiseStatusSymbol); |
1330 if (status == 0) return "pending"; | 1332 if (status == 0) return "pending"; |
1331 if (status == 1) return "resolved"; | 1333 if (status == 1) return "resolved"; |
1332 return "rejected"; | 1334 return "rejected"; |
1333 } | 1335 } |
1334 | 1336 |
1335 | 1337 |
1336 function PromiseGetValue_(value) { | 1338 function PromiseGetValue_(value) { |
1337 return %DebugGetProperty(value, builtins.$promiseValue); | 1339 return %DebugGetProperty(value, promiseValueSymbol); |
1338 } | 1340 } |
1339 | 1341 |
1340 | 1342 |
1341 PromiseMirror.prototype.status = function() { | 1343 PromiseMirror.prototype.status = function() { |
1342 return PromiseGetStatus_(this.value_); | 1344 return PromiseGetStatus_(this.value_); |
1343 }; | 1345 }; |
1344 | 1346 |
1345 | 1347 |
1346 PromiseMirror.prototype.promiseValue = function() { | 1348 PromiseMirror.prototype.promiseValue = function() { |
1347 return MakeMirror(PromiseGetValue_(this.value_)); | 1349 return MakeMirror(PromiseGetValue_(this.value_)); |
(...skipping 1759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3107 // Functions needed by the debugger runtime. | 3109 // Functions needed by the debugger runtime. |
3108 utils.InstallFunctions(utils, DONT_ENUM, [ | 3110 utils.InstallFunctions(utils, DONT_ENUM, [ |
3109 "ClearMirrorCache", ClearMirrorCache | 3111 "ClearMirrorCache", ClearMirrorCache |
3110 ]); | 3112 ]); |
3111 | 3113 |
3112 // Export to debug.js | 3114 // Export to debug.js |
3113 utils.Export(function(to) { | 3115 utils.Export(function(to) { |
3114 to.MirrorType = MirrorType; | 3116 to.MirrorType = MirrorType; |
3115 }); | 3117 }); |
3116 }) | 3118 }) |
OLD | NEW |