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 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 ClearMirrorCache(); | 99 ClearMirrorCache(); |
100 } | 100 } |
101 | 101 |
102 | 102 |
103 function ClearMirrorCache(value) { | 103 function ClearMirrorCache(value) { |
104 next_handle_ = 0; | 104 next_handle_ = 0; |
105 mirror_cache_ = []; | 105 mirror_cache_ = []; |
106 } | 106 } |
107 | 107 |
108 | 108 |
109 function ObjectIsPromise(value) { | |
110 return IS_RECEIVER(value) && | |
111 !IS_UNDEFINED(%DebugGetProperty(value, promiseStateSymbol)); | |
112 } | |
113 | |
114 | |
115 /** | 109 /** |
116 * Returns the mirror for a specified value or object. | 110 * Returns the mirror for a specified value or object. |
117 * | 111 * |
118 * @param {value or Object} value the value or object to retrieve the mirror for | 112 * @param {value or Object} value the value or object to retrieve the mirror for |
119 * @param {boolean} transient indicate whether this object is transient and | 113 * @param {boolean} transient indicate whether this object is transient and |
120 * should not be added to the mirror cache. The default is not transient. | 114 * should not be added to the mirror cache. The default is not transient. |
121 * @returns {Mirror} the mirror reflects the passed value or object | 115 * @returns {Mirror} the mirror reflects the passed value or object |
122 */ | 116 */ |
123 function MakeMirror(value, opt_transient) { | 117 function MakeMirror(value, opt_transient) { |
124 var mirror; | 118 var mirror; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 } else if (IS_ERROR(value)) { | 155 } else if (IS_ERROR(value)) { |
162 mirror = new ErrorMirror(value); | 156 mirror = new ErrorMirror(value); |
163 } else if (IS_SCRIPT(value)) { | 157 } else if (IS_SCRIPT(value)) { |
164 mirror = new ScriptMirror(value); | 158 mirror = new ScriptMirror(value); |
165 } else if (IS_MAP(value) || IS_WEAKMAP(value)) { | 159 } else if (IS_MAP(value) || IS_WEAKMAP(value)) { |
166 mirror = new MapMirror(value); | 160 mirror = new MapMirror(value); |
167 } else if (IS_SET(value) || IS_WEAKSET(value)) { | 161 } else if (IS_SET(value) || IS_WEAKSET(value)) { |
168 mirror = new SetMirror(value); | 162 mirror = new SetMirror(value); |
169 } else if (IS_MAP_ITERATOR(value) || IS_SET_ITERATOR(value)) { | 163 } else if (IS_MAP_ITERATOR(value) || IS_SET_ITERATOR(value)) { |
170 mirror = new IteratorMirror(value); | 164 mirror = new IteratorMirror(value); |
171 } else if (ObjectIsPromise(value)) { | 165 } else if (%is_promise(value)) { |
172 mirror = new PromiseMirror(value); | 166 mirror = new PromiseMirror(value); |
173 } else if (IS_GENERATOR(value)) { | 167 } else if (IS_GENERATOR(value)) { |
174 mirror = new GeneratorMirror(value); | 168 mirror = new GeneratorMirror(value); |
175 } else { | 169 } else { |
176 mirror = new ObjectMirror(value, MirrorType.OBJECT_TYPE, opt_transient); | 170 mirror = new ObjectMirror(value, MirrorType.OBJECT_TYPE, opt_transient); |
177 } | 171 } |
178 | 172 |
179 if (mirror_cache_enabled_) mirror_cache_[mirror.handle()] = mirror; | 173 if (mirror_cache_enabled_) mirror_cache_[mirror.handle()] = mirror; |
180 return mirror; | 174 return mirror; |
181 } | 175 } |
(...skipping 2904 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3086 // Functions needed by the debugger runtime. | 3080 // Functions needed by the debugger runtime. |
3087 utils.InstallFunctions(utils, DONT_ENUM, [ | 3081 utils.InstallFunctions(utils, DONT_ENUM, [ |
3088 "ClearMirrorCache", ClearMirrorCache | 3082 "ClearMirrorCache", ClearMirrorCache |
3089 ]); | 3083 ]); |
3090 | 3084 |
3091 // Export to debug.js | 3085 // Export to debug.js |
3092 utils.Export(function(to) { | 3086 utils.Export(function(to) { |
3093 to.MirrorType = MirrorType; | 3087 to.MirrorType = MirrorType; |
3094 }); | 3088 }); |
3095 }) | 3089 }) |
OLD | NEW |