| Index: src/collection-iterator.js
|
| diff --git a/src/collection-iterator.js b/src/collection-iterator.js
|
| index 6f944f3c4ab55aa5a538b03af05f931a0e63b2c5..e66b4434041a26318f4743bb450424ea109397fe 100644
|
| --- a/src/collection-iterator.js
|
| +++ b/src/collection-iterator.js
|
| @@ -2,14 +2,22 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +var $mapEntries;
|
| +var $mapIteratorNext;
|
| +var $setIteratorNext;
|
| +var $setValues;
|
| +
|
| +(function() {
|
| +
|
| "use strict";
|
|
|
| +%CheckIsBootstrapping();
|
|
|
| -// This file relies on the fact that the following declaration has been made
|
| -// in runtime.js:
|
| -// var $Set = global.Set;
|
| -// var $Map = global.Map;
|
| +var GlobalMap = global.Map;
|
| +var GlobalObject = global.Object;
|
| +var GlobalSet = global.Set;
|
|
|
| +// -------------------------------------------------------------------
|
|
|
| function SetIteratorConstructor(set, kind) {
|
| %SetIteratorInitialize(this, set, kind);
|
| @@ -63,42 +71,33 @@ function SetValues() {
|
| return new SetIterator(this, ITERATOR_KIND_VALUES);
|
| }
|
|
|
| +// -------------------------------------------------------------------
|
|
|
| -function SetUpSetIterator() {
|
| - %CheckIsBootstrapping();
|
| +%SetCode(SetIterator, SetIteratorConstructor);
|
| +%FunctionSetPrototype(SetIterator, new GlobalObject());
|
| +%FunctionSetInstanceClassName(SetIterator, 'Set Iterator');
|
| +InstallFunctions(SetIterator.prototype, DONT_ENUM, [
|
| + 'next', SetIteratorNextJS
|
| +]);
|
|
|
| - %SetCode(SetIterator, SetIteratorConstructor);
|
| - %FunctionSetPrototype(SetIterator, new $Object());
|
| - %FunctionSetInstanceClassName(SetIterator, 'Set Iterator');
|
| - InstallFunctions(SetIterator.prototype, DONT_ENUM, [
|
| - 'next', SetIteratorNextJS
|
| - ]);
|
| -
|
| - %FunctionSetName(SetIteratorSymbolIterator, '[Symbol.iterator]');
|
| - %AddNamedProperty(SetIterator.prototype, symbolIterator,
|
| - SetIteratorSymbolIterator, DONT_ENUM);
|
| - %AddNamedProperty(SetIterator.prototype, symbolToStringTag,
|
| - "Set Iterator", READ_ONLY | DONT_ENUM);
|
| -}
|
| +%FunctionSetName(SetIteratorSymbolIterator, '[Symbol.iterator]');
|
| +%AddNamedProperty(SetIterator.prototype, symbolIterator,
|
| + SetIteratorSymbolIterator, DONT_ENUM);
|
| +%AddNamedProperty(SetIterator.prototype, symbolToStringTag,
|
| + "Set Iterator", READ_ONLY | DONT_ENUM);
|
|
|
| -SetUpSetIterator();
|
| +InstallFunctions(GlobalSet.prototype, DONT_ENUM, [
|
| + 'entries', SetEntries,
|
| + 'keys', SetValues,
|
| + 'values', SetValues
|
| +]);
|
|
|
| +%AddNamedProperty(GlobalSet.prototype, symbolIterator, SetValues, DONT_ENUM);
|
|
|
| -function ExtendSetPrototype() {
|
| - %CheckIsBootstrapping();
|
| -
|
| - InstallFunctions($Set.prototype, DONT_ENUM, [
|
| - 'entries', SetEntries,
|
| - 'keys', SetValues,
|
| - 'values', SetValues
|
| - ]);
|
| -
|
| - %AddNamedProperty($Set.prototype, symbolIterator, SetValues, DONT_ENUM);
|
| -}
|
| -
|
| -ExtendSetPrototype();
|
| -
|
| +$setIteratorNext = SetIteratorNextJS;
|
| +$setValues = SetValues;
|
|
|
| +// -------------------------------------------------------------------
|
|
|
| function MapIteratorConstructor(map, kind) {
|
| %MapIteratorInitialize(this, map, kind);
|
| @@ -162,37 +161,31 @@ function MapValues() {
|
| return new MapIterator(this, ITERATOR_KIND_VALUES);
|
| }
|
|
|
| +// -------------------------------------------------------------------
|
|
|
| -function SetUpMapIterator() {
|
| - %CheckIsBootstrapping();
|
| -
|
| - %SetCode(MapIterator, MapIteratorConstructor);
|
| - %FunctionSetPrototype(MapIterator, new $Object());
|
| - %FunctionSetInstanceClassName(MapIterator, 'Map Iterator');
|
| - InstallFunctions(MapIterator.prototype, DONT_ENUM, [
|
| - 'next', MapIteratorNextJS
|
| - ]);
|
| +%SetCode(MapIterator, MapIteratorConstructor);
|
| +%FunctionSetPrototype(MapIterator, new GlobalObject());
|
| +%FunctionSetInstanceClassName(MapIterator, 'Map Iterator');
|
| +InstallFunctions(MapIterator.prototype, DONT_ENUM, [
|
| + 'next', MapIteratorNextJS
|
| +]);
|
|
|
| - %FunctionSetName(MapIteratorSymbolIterator, '[Symbol.iterator]');
|
| - %AddNamedProperty(MapIterator.prototype, symbolIterator,
|
| - MapIteratorSymbolIterator, DONT_ENUM);
|
| - %AddNamedProperty(MapIterator.prototype, symbolToStringTag,
|
| - "Map Iterator", READ_ONLY | DONT_ENUM);
|
| -}
|
| -
|
| -SetUpMapIterator();
|
| +%FunctionSetName(MapIteratorSymbolIterator, '[Symbol.iterator]');
|
| +%AddNamedProperty(MapIterator.prototype, symbolIterator,
|
| + MapIteratorSymbolIterator, DONT_ENUM);
|
| +%AddNamedProperty(MapIterator.prototype, symbolToStringTag,
|
| + "Map Iterator", READ_ONLY | DONT_ENUM);
|
|
|
|
|
| -function ExtendMapPrototype() {
|
| - %CheckIsBootstrapping();
|
| +InstallFunctions(GlobalMap.prototype, DONT_ENUM, [
|
| + 'entries', MapEntries,
|
| + 'keys', MapKeys,
|
| + 'values', MapValues
|
| +]);
|
|
|
| - InstallFunctions($Map.prototype, DONT_ENUM, [
|
| - 'entries', MapEntries,
|
| - 'keys', MapKeys,
|
| - 'values', MapValues
|
| - ]);
|
| +%AddNamedProperty(GlobalMap.prototype, symbolIterator, MapEntries, DONT_ENUM);
|
|
|
| - %AddNamedProperty($Map.prototype, symbolIterator, MapEntries, DONT_ENUM);
|
| -}
|
| +$mapEntries = MapEntries;
|
| +$mapIteratorNext = MapIteratorNextJS;
|
|
|
| -ExtendMapPrototype();
|
| +})();
|
|
|