| Index: src/objects.h
 | 
| diff --git a/src/objects.h b/src/objects.h
 | 
| index 9aec541d7e04b901cb0822e0dc872ed5d0012170..bea478fd300ae846d4191b942c29f700a0a3a0eb 100644
 | 
| --- a/src/objects.h
 | 
| +++ b/src/objects.h
 | 
| @@ -1220,6 +1220,11 @@ class Object {
 | 
|    // undefined if not yet created.
 | 
|    Object* GetHash();
 | 
|  
 | 
| +  // Returns undefined for JSObjects, but returns the hash code for simple
 | 
| +  // objects.  This avoids a double lookup in the cases where we know we will
 | 
| +  // add the hash to the JSObject if it does not already exist.
 | 
| +  Object* GetSimpleHash();
 | 
| +
 | 
|    // Returns the permanent hash code associated with this object depending on
 | 
|    // the actual object type. May create and store a hash code if needed and none
 | 
|    // exists.
 | 
| @@ -3436,6 +3441,7 @@ class HashTable : public HashTableBase {
 | 
|  
 | 
|    // Find entry for key otherwise return kNotFound.
 | 
|    inline int FindEntry(Key key);
 | 
| +  inline int FindEntry(Isolate* isolate, Key key, int32_t hash);
 | 
|    int FindEntry(Isolate* isolate, Key key);
 | 
|  
 | 
|    // Rehashes the table in-place.
 | 
| @@ -3942,16 +3948,23 @@ class ObjectHashTable: public HashTable<ObjectHashTable,
 | 
|    // Looks up the value associated with the given key. The hole value is
 | 
|    // returned in case the key is not present.
 | 
|    Object* Lookup(Handle<Object> key);
 | 
| +  Object* Lookup(Handle<Object> key, int32_t hash);
 | 
|  
 | 
|    // Adds (or overwrites) the value associated with the given key.
 | 
|    static Handle<ObjectHashTable> Put(Handle<ObjectHashTable> table,
 | 
|                                       Handle<Object> key,
 | 
|                                       Handle<Object> value);
 | 
| +  static Handle<ObjectHashTable> Put(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,
 | 
|                                          Handle<Object> key,
 | 
|                                          bool* was_present);
 | 
| +  static Handle<ObjectHashTable> Remove(Handle<ObjectHashTable> table,
 | 
| +                                        Handle<Object> key, bool* was_present,
 | 
| +                                        int32_t hash);
 | 
|  
 | 
|   private:
 | 
|    friend class MarkCompactCollector;
 | 
| 
 |