| Index: src/objects.h | 
| diff --git a/src/objects.h b/src/objects.h | 
| index 87ae24ab640f02d1e73e9291a81743a241ac5eec..8a29ccd8e439815fe8ab3884bde8239544e6c66d 100644 | 
| --- a/src/objects.h | 
| +++ b/src/objects.h | 
| @@ -1470,10 +1470,18 @@ class JSReceiver: public HeapObject { | 
| String* name); | 
| PropertyAttributes GetLocalPropertyAttribute(String* name); | 
|  | 
| +  inline PropertyAttributes GetElementAttribute(uint32_t index); | 
| +  inline PropertyAttributes GetElementAttributeWithReceiver( | 
| +      JSReceiver* receiver, | 
| +      uint32_t index, | 
| +      bool continue_search); | 
| +  inline PropertyAttributes GetLocalElementAttribute(uint32_t index); | 
| + | 
| // Can cause a GC. | 
| inline bool HasProperty(String* name); | 
| inline bool HasLocalProperty(String* name); | 
| inline bool HasElement(uint32_t index); | 
| +  inline bool HasLocalElement(uint32_t index); | 
|  | 
| // Return the object's prototype (might be Heap::null_value()). | 
| inline Object* GetPrototype(); | 
| @@ -1498,10 +1506,10 @@ class JSReceiver: public HeapObject { | 
| Smi* GenerateIdentityHash(); | 
|  | 
| private: | 
| -  PropertyAttributes GetPropertyAttribute(JSReceiver* receiver, | 
| -                                          LookupResult* result, | 
| -                                          String* name, | 
| -                                          bool continue_search); | 
| +  PropertyAttributes GetPropertyAttributeForResult(JSReceiver* receiver, | 
| +                                                   LookupResult* result, | 
| +                                                   String* name, | 
| +                                                   bool continue_search); | 
|  | 
| DISALLOW_IMPLICIT_CONSTRUCTORS(JSReceiver); | 
| }; | 
| @@ -1688,6 +1696,9 @@ class JSObject: public JSReceiver { | 
| LookupResult* result, | 
| String* name, | 
| bool continue_search); | 
| +  PropertyAttributes GetElementAttributeWithReceiver(JSReceiver* receiver, | 
| +                                                     uint32_t index, | 
| +                                                     bool continue_search); | 
|  | 
| static void DefineAccessor(Handle<JSObject> object, | 
| Handle<String> name, | 
| @@ -1809,9 +1820,6 @@ class JSObject: public JSReceiver { | 
| // be represented as a double and not a Smi. | 
| bool ShouldConvertToFastDoubleElements(bool* has_smi_only_elements); | 
|  | 
| -  // Tells whether the index'th element is present. | 
| -  bool HasElementWithReceiver(JSReceiver* receiver, uint32_t index); | 
| - | 
| // Computes the new capacity when expanding the elements of a JSObject. | 
| static int NewElementsCapacity(int old_capacity) { | 
| // (old_capacity + 50%) + 16 | 
| @@ -1836,9 +1844,7 @@ class JSObject: public JSReceiver { | 
| DICTIONARY_ELEMENT | 
| }; | 
|  | 
| -  LocalElementType HasLocalElement(uint32_t index); | 
| - | 
| -  bool HasElementWithInterceptor(JSReceiver* receiver, uint32_t index); | 
| +  LocalElementType GetLocalElementType(uint32_t index); | 
|  | 
| MUST_USE_RESULT MaybeObject* SetFastElement(uint32_t index, | 
| Object* value, | 
| @@ -2196,6 +2202,14 @@ class JSObject: public JSReceiver { | 
| Object* structure, | 
| uint32_t index, | 
| Object* holder); | 
| +  MUST_USE_RESULT PropertyAttributes GetElementAttributeWithInterceptor( | 
| +      JSReceiver* receiver, | 
| +      uint32_t index, | 
| +      bool continue_search); | 
| +  MUST_USE_RESULT PropertyAttributes GetElementAttributeWithoutInterceptor( | 
| +      JSReceiver* receiver, | 
| +      uint32_t index, | 
| +      bool continue_search); | 
| MUST_USE_RESULT MaybeObject* SetElementWithCallback( | 
| Object* structure, | 
| uint32_t index, | 
|  |