OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 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 "use strict"; | 5 "use strict"; |
6 | 6 |
7 // This file relies on the fact that the following declaration has been made | 7 // This file relies on the fact that the following declaration has been made |
8 // in runtime.js: | 8 // in runtime.js: |
9 // var $Array = global.Array; | 9 // var $Array = global.Array; |
10 | 10 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 throw MakeTypeError('incompatible_method_receiver', | 99 throw MakeTypeError('incompatible_method_receiver', |
100 ['Set.prototype.forEach', this]); | 100 ['Set.prototype.forEach', this]); |
101 } | 101 } |
102 | 102 |
103 if (!IS_SPEC_FUNCTION(f)) { | 103 if (!IS_SPEC_FUNCTION(f)) { |
104 throw MakeTypeError('called_non_callable', [f]); | 104 throw MakeTypeError('called_non_callable', [f]); |
105 } | 105 } |
106 | 106 |
107 var iterator = %SetCreateIterator(this, ITERATOR_KIND_VALUES); | 107 var iterator = %SetCreateIterator(this, ITERATOR_KIND_VALUES); |
108 var entry; | 108 var entry; |
| 109 var stepping = %_DebugCallbackSupportsStepping(f); |
109 while (!(entry = %SetIteratorNext(iterator)).done) { | 110 while (!(entry = %SetIteratorNext(iterator)).done) { |
| 111 if (stepping) %DebugPrepareStepInIfStepping(f); |
110 %_CallFunction(receiver, entry.value, entry.value, this, f); | 112 %_CallFunction(receiver, entry.value, entry.value, this, f); |
111 } | 113 } |
112 } | 114 } |
113 | 115 |
114 | 116 |
115 // ------------------------------------------------------------------- | 117 // ------------------------------------------------------------------- |
116 | 118 |
117 function SetUpSet() { | 119 function SetUpSet() { |
118 %CheckIsBootstrapping(); | 120 %CheckIsBootstrapping(); |
119 | 121 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 throw MakeTypeError('incompatible_method_receiver', | 210 throw MakeTypeError('incompatible_method_receiver', |
209 ['Map.prototype.forEach', this]); | 211 ['Map.prototype.forEach', this]); |
210 } | 212 } |
211 | 213 |
212 if (!IS_SPEC_FUNCTION(f)) { | 214 if (!IS_SPEC_FUNCTION(f)) { |
213 throw MakeTypeError('called_non_callable', [f]); | 215 throw MakeTypeError('called_non_callable', [f]); |
214 } | 216 } |
215 | 217 |
216 var iterator = %MapCreateIterator(this, ITERATOR_KIND_ENTRIES); | 218 var iterator = %MapCreateIterator(this, ITERATOR_KIND_ENTRIES); |
217 var entry; | 219 var entry; |
| 220 var stepping = %_DebugCallbackSupportsStepping(f); |
218 while (!(entry = %MapIteratorNext(iterator)).done) { | 221 while (!(entry = %MapIteratorNext(iterator)).done) { |
| 222 if (stepping) %DebugPrepareStepInIfStepping(f); |
219 %_CallFunction(receiver, entry.value[1], entry.value[0], this, f); | 223 %_CallFunction(receiver, entry.value[1], entry.value[0], this, f); |
220 } | 224 } |
221 } | 225 } |
222 | 226 |
223 | 227 |
224 // ------------------------------------------------------------------- | 228 // ------------------------------------------------------------------- |
225 | 229 |
226 function SetUpMap() { | 230 function SetUpMap() { |
227 %CheckIsBootstrapping(); | 231 %CheckIsBootstrapping(); |
228 | 232 |
229 %SetCode($Map, MapConstructor); | 233 %SetCode($Map, MapConstructor); |
230 %FunctionSetPrototype($Map, new $Object()); | 234 %FunctionSetPrototype($Map, new $Object()); |
231 %SetProperty($Map.prototype, "constructor", $Map, DONT_ENUM); | 235 %SetProperty($Map.prototype, "constructor", $Map, DONT_ENUM); |
232 | 236 |
233 %FunctionSetLength(MapForEach, 1); | 237 %FunctionSetLength(MapForEach, 1); |
234 | 238 |
235 // Set up the non-enumerable functions on the Map prototype object. | 239 // Set up the non-enumerable functions on the Map prototype object. |
236 InstallGetter($Map.prototype, "size", MapGetSizeJS); | 240 InstallGetter($Map.prototype, "size", MapGetSizeJS); |
237 InstallFunctions($Map.prototype, DONT_ENUM, $Array( | 241 InstallFunctions($Map.prototype, DONT_ENUM, $Array( |
238 "get", MapGetJS, | 242 "get", MapGetJS, |
239 "set", MapSetJS, | 243 "set", MapSetJS, |
240 "has", MapHasJS, | 244 "has", MapHasJS, |
241 "delete", MapDeleteJS, | 245 "delete", MapDeleteJS, |
242 "clear", MapClearJS, | 246 "clear", MapClearJS, |
243 "forEach", MapForEach | 247 "forEach", MapForEach |
244 )); | 248 )); |
245 } | 249 } |
246 | 250 |
247 SetUpMap(); | 251 SetUpMap(); |
OLD | NEW |