| Index: src/collection.js
 | 
| diff --git a/src/collection.js b/src/collection.js
 | 
| index f2b481b8e73e4b85bb08a73636865e1806de3ccc..9054187a12d0372ef1e028569a197059579f26ba 100644
 | 
| --- a/src/collection.js
 | 
| +++ b/src/collection.js
 | 
| @@ -113,29 +113,8 @@ function SetClear() {
 | 
|      throw MakeTypeError('incompatible_method_receiver',
 | 
|                          ['Set.prototype.clear', this]);
 | 
|    }
 | 
| -  %SetClear(this);
 | 
| -}
 | 
| -
 | 
| -
 | 
| -function SetForEach(f, receiver) {
 | 
| -  if (!IS_SET(this)) {
 | 
| -    throw MakeTypeError('incompatible_method_receiver',
 | 
| -                        ['Set.prototype.forEach', this]);
 | 
| -  }
 | 
| -
 | 
| -  if (!IS_SPEC_FUNCTION(f)) {
 | 
| -    throw MakeTypeError('called_non_callable', [f]);
 | 
| -  }
 | 
| -
 | 
| -  var iterator = %SetCreateIterator(this, ITERATOR_KIND_VALUES);
 | 
| -  var entry;
 | 
| -  try {
 | 
| -    while (!(entry = %SetIteratorNext(iterator)).done) {
 | 
| -      %_CallFunction(receiver, entry.value, entry.value, this, f);
 | 
| -    }
 | 
| -  } finally {
 | 
| -    %SetIteratorClose(iterator);
 | 
| -  }
 | 
| +  // Replace the internal table with a new empty table.
 | 
| +  %SetInitialize(this);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -148,16 +127,13 @@ function SetUpSet() {
 | 
|    %FunctionSetPrototype($Set, new $Object());
 | 
|    %SetProperty($Set.prototype, "constructor", $Set, DONT_ENUM);
 | 
|  
 | 
| -  %FunctionSetLength(SetForEach, 1);
 | 
| -
 | 
|    // Set up the non-enumerable functions on the Set prototype object.
 | 
|    InstallGetter($Set.prototype, "size", SetGetSize);
 | 
|    InstallFunctions($Set.prototype, DONT_ENUM, $Array(
 | 
|      "add", SetAdd,
 | 
|      "has", SetHas,
 | 
|      "delete", SetDelete,
 | 
| -    "clear", SetClear,
 | 
| -    "forEach", SetForEach
 | 
| +    "clear", SetClear
 | 
|    ));
 | 
|  }
 | 
|  
 | 
| @@ -226,29 +202,8 @@ function MapClear() {
 | 
|      throw MakeTypeError('incompatible_method_receiver',
 | 
|                          ['Map.prototype.clear', this]);
 | 
|    }
 | 
| -  %MapClear(this);
 | 
| -}
 | 
| -
 | 
| -
 | 
| -function MapForEach(f, receiver) {
 | 
| -  if (!IS_MAP(this)) {
 | 
| -    throw MakeTypeError('incompatible_method_receiver',
 | 
| -                        ['Map.prototype.forEach', this]);
 | 
| -  }
 | 
| -
 | 
| -  if (!IS_SPEC_FUNCTION(f)) {
 | 
| -    throw MakeTypeError('called_non_callable', [f]);
 | 
| -  }
 | 
| -
 | 
| -  var iterator = %MapCreateIterator(this, ITERATOR_KIND_ENTRIES);
 | 
| -  var entry;
 | 
| -  try {
 | 
| -    while (!(entry = %MapIteratorNext(iterator)).done) {
 | 
| -      %_CallFunction(receiver, entry.value[1], entry.value[0], this, f);
 | 
| -    }
 | 
| -  } finally {
 | 
| -    %MapIteratorClose(iterator);
 | 
| -  }
 | 
| +  // Replace the internal table with a new empty table.
 | 
| +  %MapInitialize(this);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -261,8 +216,6 @@ function SetUpMap() {
 | 
|    %FunctionSetPrototype($Map, new $Object());
 | 
|    %SetProperty($Map.prototype, "constructor", $Map, DONT_ENUM);
 | 
|  
 | 
| -  %FunctionSetLength(MapForEach, 1);
 | 
| -
 | 
|    // Set up the non-enumerable functions on the Map prototype object.
 | 
|    InstallGetter($Map.prototype, "size", MapGetSize);
 | 
|    InstallFunctions($Map.prototype, DONT_ENUM, $Array(
 | 
| @@ -270,8 +223,7 @@ function SetUpMap() {
 | 
|      "set", MapSet,
 | 
|      "has", MapHas,
 | 
|      "delete", MapDelete,
 | 
| -    "clear", MapClear,
 | 
| -    "forEach", MapForEach
 | 
| +    "clear", MapClear
 | 
|    ));
 | 
|  }
 | 
|  
 | 
| 
 |