| 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 |
| 11 var $Set = global.Set; | 11 var $Set = global.Set; |
| 12 var $Map = global.Map; | 12 var $Map = global.Map; |
| 13 | 13 |
| 14 | 14 |
| 15 // TODO(arv): Move these general functions to v8natives.js when Map and Set are | |
| 16 // no longer experimental. | |
| 17 | |
| 18 | |
| 19 // 7.4.1 CheckIterable ( obj ) | |
| 20 function ToIterable(obj) { | |
| 21 if (!IS_SPEC_OBJECT(obj)) { | |
| 22 return UNDEFINED; | |
| 23 } | |
| 24 return obj[symbolIterator]; | |
| 25 } | |
| 26 | |
| 27 | |
| 28 // 7.4.2 GetIterator ( obj, method ) | |
| 29 function GetIterator(obj, method) { | |
| 30 if (IS_UNDEFINED(method)) { | |
| 31 method = ToIterable(obj); | |
| 32 } | |
| 33 if (!IS_SPEC_FUNCTION(method)) { | |
| 34 throw MakeTypeError('not_iterable', [obj]); | |
| 35 } | |
| 36 var iterator = %_CallFunction(obj, method); | |
| 37 if (!IS_SPEC_OBJECT(iterator)) { | |
| 38 throw MakeTypeError('not_an_iterator', [iterator]); | |
| 39 } | |
| 40 return iterator; | |
| 41 } | |
| 42 | |
| 43 | |
| 44 // ------------------------------------------------------------------- | 15 // ------------------------------------------------------------------- |
| 45 // Harmony Set | 16 // Harmony Set |
| 46 | 17 |
| 47 function SetConstructor(iterable) { | 18 function SetConstructor(iterable) { |
| 48 if (!%_IsConstructCall()) { | 19 if (!%_IsConstructCall()) { |
| 49 throw MakeTypeError('constructor_not_function', ['Set']); | 20 throw MakeTypeError('constructor_not_function', ['Set']); |
| 50 } | 21 } |
| 51 | 22 |
| 52 var iter, adder; | 23 var iter, adder; |
| 53 | 24 |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 "get", MapGetJS, | 263 "get", MapGetJS, |
| 293 "set", MapSetJS, | 264 "set", MapSetJS, |
| 294 "has", MapHasJS, | 265 "has", MapHasJS, |
| 295 "delete", MapDeleteJS, | 266 "delete", MapDeleteJS, |
| 296 "clear", MapClearJS, | 267 "clear", MapClearJS, |
| 297 "forEach", MapForEach | 268 "forEach", MapForEach |
| 298 )); | 269 )); |
| 299 } | 270 } |
| 300 | 271 |
| 301 SetUpMap(); | 272 SetUpMap(); |
| OLD | NEW |