| Index: src/objects.h | 
| diff --git a/src/objects.h b/src/objects.h | 
| index f547c8388cf9df637a2436ba64c4bd3342cbef7a..824ed402cd233d8e8937bd19478d60db72f92ff1 100644 | 
| --- a/src/objects.h | 
| +++ b/src/objects.h | 
| @@ -2468,11 +2468,6 @@ class FixedArray: public FixedArrayBase { | 
|  | 
| enum KeyFilter { ALL_KEYS, NON_SYMBOL_KEYS }; | 
|  | 
| -  // Add the elements of a JSArray to this FixedArray. | 
| -  MUST_USE_RESULT static MaybeHandle<FixedArray> AddKeysFromArrayLike( | 
| -      Handle<FixedArray> content, Handle<JSObject> array, | 
| -      KeyFilter filter = ALL_KEYS); | 
| - | 
| // Computes the union of keys and return the result. | 
| // Used for implementing "for (n in object) { }" | 
| MUST_USE_RESULT static MaybeHandle<FixedArray> UnionOfKeys( | 
| @@ -3572,6 +3567,7 @@ class ObjectHashTable: public HashTable<ObjectHashTable, | 
| Object* Lookup(Handle<Object> key); | 
| Object* Lookup(Handle<Object> key, int32_t hash); | 
| Object* Lookup(Isolate* isolate, Handle<Object> key, int32_t hash); | 
| +  bool HasKey(Isolate* isolate, Handle<Object> key); | 
|  | 
| // Adds (or overwrites) the value associated with the given key. | 
| static Handle<ObjectHashTable> Put(Handle<ObjectHashTable> table, | 
| @@ -3580,6 +3576,13 @@ class ObjectHashTable: public HashTable<ObjectHashTable, | 
| static Handle<ObjectHashTable> Put(Handle<ObjectHashTable> table, | 
| Handle<Object> key, Handle<Object> value, | 
| int32_t hash); | 
| +  static Handle<ObjectHashTable> Put(Isolate* isolate, | 
| +                                     Handle<ObjectHashTable> table, | 
| +                                     Handle<Object> key, Handle<Object> value); | 
| +  static Handle<ObjectHashTable> Put(Isolate* isolate, | 
| +                                     Handle<ObjectHashTable> table, | 
| +                                     Handle<Object> key, Handle<Object> value, | 
| +                                     int32_t hash); | 
|  | 
| // Returns an ObjectHashTable (possibly |table|) where |key| has been removed. | 
| static Handle<ObjectHashTable> Remove(Handle<ObjectHashTable> table, | 
| @@ -10470,6 +10473,30 @@ class BooleanBit : public AllStatic { | 
| } | 
| }; | 
|  | 
| + | 
| +class KeyAccumulator final BASE_EMBEDDED { | 
| + public: | 
| +  explicit KeyAccumulator(Isolate* isolate) | 
| +      : isolate_(isolate), keys_(), set_(), length_(0) {} | 
| + | 
| +  void AddKeys(Handle<FixedArray> array, FixedArray::KeyFilter filter); | 
| +  void AddKeys(Handle<JSObject> array, FixedArray::KeyFilter filter); | 
| +  Handle<FixedArray> GetKeys(); | 
| +  int GetLength(); | 
| +  bool HasKey(Handle<Object> key, int limit); | 
| +  void AddKey(Handle<Object> key); | 
| +  void PrepareForComparisons(int count); | 
| + | 
| + private: | 
| +  void EnsureCapacity(int capacity); | 
| +  void Grow(); | 
| + | 
| +  Isolate* isolate_; | 
| +  Handle<FixedArray> keys_; | 
| +  Handle<ObjectHashTable> set_; | 
| +  int length_; | 
| +  DISALLOW_COPY_AND_ASSIGN(KeyAccumulator); | 
| +}; | 
| } }  // namespace v8::internal | 
|  | 
| #endif  // V8_OBJECTS_H_ | 
|  |