| Index: src/objects.h
 | 
| diff --git a/src/objects.h b/src/objects.h
 | 
| index 20c08034777fdd901b870b4c33c32ce1c714c12b..2ed277d21c86ca0267a6c189290da169dad5a3c5 100644
 | 
| --- a/src/objects.h
 | 
| +++ b/src/objects.h
 | 
| @@ -1438,7 +1438,6 @@ class JSObject: public JSReceiver {
 | 
|  
 | 
|      // The "slow" kind.
 | 
|      DICTIONARY_ELEMENTS,
 | 
| -    NON_STRICT_ARGUMENTS_ELEMENTS,
 | 
|      // The "fast" kind for external arrays
 | 
|      EXTERNAL_BYTE_ELEMENTS,
 | 
|      EXTERNAL_UNSIGNED_BYTE_ELEMENTS,
 | 
| @@ -1476,16 +1475,13 @@ class JSObject: public JSReceiver {
 | 
|    //
 | 
|    // In the fast mode elements is a FixedArray and so each element can
 | 
|    // be quickly accessed. This fact is used in the generated code. The
 | 
| -  // elements array can have one of three maps in this mode:
 | 
| -  // fixed_array_map, non_strict_arguments_elements_map or
 | 
| -  // fixed_cow_array_map (for copy-on-write arrays). In the latter case
 | 
| -  // the elements array may be shared by a few objects and so before
 | 
| -  // writing to any element the array must be copied. Use
 | 
| -  // EnsureWritableFastElements in this case.
 | 
| +  // elements array can have one of the two maps in this mode:
 | 
| +  // fixed_array_map or fixed_cow_array_map (for copy-on-write
 | 
| +  // arrays). In the latter case the elements array may be shared by a
 | 
| +  // few objects and so before writing to any element the array must
 | 
| +  // be copied. Use EnsureWritableFastElements in this case.
 | 
|    //
 | 
| -  // In the slow mode the elements is either a NumberDictionary, an
 | 
| -  // ExternalArray, or a FixedArray parameter map for a (non-strict)
 | 
| -  // arguments object.
 | 
| +  // In the slow mode elements is either a NumberDictionary or an ExternalArray.
 | 
|    DECL_ACCESSORS(elements, HeapObject)
 | 
|    inline void initialize_elements();
 | 
|    MUST_USE_RESULT inline MaybeObject* ResetElements();
 | 
| @@ -1503,12 +1499,9 @@ class JSObject: public JSReceiver {
 | 
|    inline bool HasExternalUnsignedIntElements();
 | 
|    inline bool HasExternalFloatElements();
 | 
|    inline bool HasExternalDoubleElements();
 | 
| -  bool HasFastArgumentsElements();
 | 
| -  bool HasDictionaryArgumentsElements();
 | 
|    inline bool AllowsSetElementsLength();
 | 
|    inline NumberDictionary* element_dictionary();  // Gets slow elements.
 | 
| -
 | 
| -  // Requires: HasFastElements().
 | 
| +  // Requires: this->HasFastElements().
 | 
|    MUST_USE_RESULT inline MaybeObject* EnsureWritableFastElements();
 | 
|  
 | 
|    // Collects elements starting at index 0.
 | 
| @@ -1694,11 +1687,7 @@ class JSObject: public JSReceiver {
 | 
|    MUST_USE_RESULT MaybeObject* SetFastElement(uint32_t index,
 | 
|                                                Object* value,
 | 
|                                                StrictModeFlag strict_mode,
 | 
| -                                              bool check_prototype);
 | 
| -  MUST_USE_RESULT MaybeObject* SetDictionaryElement(uint32_t index,
 | 
| -                                                    Object* value,
 | 
| -                                                    StrictModeFlag strict_mode,
 | 
| -                                                    bool check_prototype);
 | 
| +                                              bool check_prototype = true);
 | 
|  
 | 
|    MUST_USE_RESULT MaybeObject* SetFastDoubleElement(
 | 
|        uint32_t index,
 | 
| @@ -1711,7 +1700,7 @@ class JSObject: public JSReceiver {
 | 
|    MUST_USE_RESULT MaybeObject* SetElement(uint32_t index,
 | 
|                                            Object* value,
 | 
|                                            StrictModeFlag strict_mode,
 | 
| -                                          bool check_prototype);
 | 
| +                                          bool check_prototype = true);
 | 
|  
 | 
|    // Returns the index'th element.
 | 
|    // The undefined object if index is out of bounds.
 | 
| @@ -1723,9 +1712,6 @@ class JSObject: public JSReceiver {
 | 
|    // failed.
 | 
|    MaybeObject* GetExternalElement(uint32_t index);
 | 
|  
 | 
| -  // Replace the elements' backing store with fast elements of the given
 | 
| -  // capacity.  Update the length for JSArrays.  Returns the new backing
 | 
| -  // store.
 | 
|    MUST_USE_RESULT MaybeObject* SetFastElementsCapacityAndLength(int capacity,
 | 
|                                                                  int length);
 | 
|    MUST_USE_RESULT MaybeObject* SetFastDoubleElementsCapacityAndLength(
 | 
| @@ -1855,9 +1841,6 @@ class JSObject: public JSReceiver {
 | 
|    MUST_USE_RESULT MaybeObject* NormalizeProperties(
 | 
|        PropertyNormalizationMode mode,
 | 
|        int expected_additional_properties);
 | 
| -
 | 
| -  // Convert and update the elements backing store to be a NumberDictionary
 | 
| -  // dictionary.  Returns the backing after conversion.
 | 
|    MUST_USE_RESULT MaybeObject* NormalizeElements();
 | 
|  
 | 
|    MUST_USE_RESULT MaybeObject* UpdateMapCodeCache(String* name, Code* code);
 | 
| @@ -2003,17 +1986,6 @@ class JSObject: public JSReceiver {
 | 
|                                                              DeleteMode mode);
 | 
|    MUST_USE_RESULT MaybeObject* DeleteElementWithInterceptor(uint32_t index);
 | 
|  
 | 
| -  MUST_USE_RESULT MaybeObject* DeleteFastElement(uint32_t index);
 | 
| -  MUST_USE_RESULT MaybeObject* DeleteDictionaryElement(uint32_t index,
 | 
| -                                                       DeleteMode mode);
 | 
| -
 | 
| -  bool ReferencesObjectFromElements(FixedArray* elements,
 | 
| -                                    ElementsKind kind,
 | 
| -                                    Object* object);
 | 
| -  bool HasElementInElements(FixedArray* elements,
 | 
| -                            ElementsKind kind,
 | 
| -                            uint32_t index);
 | 
| -
 | 
|    // Returns true if most of the elements backing storage is used.
 | 
|    bool HasDenseElements();
 | 
|  
 | 
| @@ -3922,8 +3894,6 @@ class Map: public HeapObject {
 | 
|          (bit_field2() & kElementsKindMask) >> kElementsKindShift);
 | 
|    }
 | 
|  
 | 
| -  // Tells whether the instance has fast elements.
 | 
| -  // Equivalent to instance->GetElementsKind() == FAST_ELEMENTS.
 | 
|    inline bool has_fast_elements() {
 | 
|      return elements_kind() == JSObject::FAST_ELEMENTS;
 | 
|    }
 | 
| @@ -4505,7 +4475,9 @@ class SharedFunctionInfo: public HeapObject {
 | 
|    // False if there are definitely no live objects created from this function.
 | 
|    // True if live objects _may_ exist (existence not guaranteed).
 | 
|    // May go back from true to false after GC.
 | 
| -  DECL_BOOLEAN_ACCESSORS(live_objects_may_exist)
 | 
| +  inline bool live_objects_may_exist();
 | 
| +
 | 
| +  inline void set_live_objects_may_exist(bool value);
 | 
|  
 | 
|    // [instance class name]: class name for instances.
 | 
|    DECL_ACCESSORS(instance_class_name, Object)
 | 
| @@ -4596,7 +4568,8 @@ class SharedFunctionInfo: public HeapObject {
 | 
|    // Indicates if this function can be lazy compiled.
 | 
|    // This is used to determine if we can safely flush code from a function
 | 
|    // when doing GC if we expect that the function will no longer be used.
 | 
| -  DECL_BOOLEAN_ACCESSORS(allows_lazy_compilation)
 | 
| +  inline bool allows_lazy_compilation();
 | 
| +  inline void set_allows_lazy_compilation(bool flag);
 | 
|  
 | 
|    // Indicates how many full GCs this function has survived with assigned
 | 
|    // code object. Used to determine when it is relatively safe to flush
 | 
| @@ -4610,16 +4583,12 @@ class SharedFunctionInfo: public HeapObject {
 | 
|    // shared function info. If a function is repeatedly optimized or if
 | 
|    // we cannot optimize the function we disable optimization to avoid
 | 
|    // spending time attempting to optimize it again.
 | 
| -  DECL_BOOLEAN_ACCESSORS(optimization_disabled)
 | 
| +  inline bool optimization_disabled();
 | 
| +  inline void set_optimization_disabled(bool value);
 | 
|  
 | 
|    // Indicates whether the function is a strict mode function.
 | 
| -  DECL_BOOLEAN_ACCESSORS(strict_mode)
 | 
| -
 | 
| -  // False if the function definitely does not allocate an arguments object.
 | 
| -  DECL_BOOLEAN_ACCESSORS(uses_arguments)
 | 
| -
 | 
| -  // True if the function has any duplicated parameter names.
 | 
| -  DECL_BOOLEAN_ACCESSORS(has_duplicate_parameters)
 | 
| +  inline bool strict_mode();
 | 
| +  inline void set_strict_mode(bool value);
 | 
|  
 | 
|    // Indicates whether the function is a native function.
 | 
|    // These needs special threatment in .call and .apply since
 | 
| @@ -4811,21 +4780,15 @@ class SharedFunctionInfo: public HeapObject {
 | 
|    static const int kStartPositionMask = ~((1 << kStartPositionShift) - 1);
 | 
|  
 | 
|    // Bit positions in compiler_hints.
 | 
| -  static const int kCodeAgeSize = 3;
 | 
| -  static const int kCodeAgeMask = (1 << kCodeAgeSize) - 1;
 | 
| -
 | 
| -  enum CompilerHints {
 | 
| -    kHasOnlySimpleThisPropertyAssignments,
 | 
| -    kAllowLazyCompilation,
 | 
| -    kLiveObjectsMayExist,
 | 
| -    kCodeAgeShift,
 | 
| -    kOptimizationDisabled = kCodeAgeShift + kCodeAgeSize,
 | 
| -    kStrictModeFunction,
 | 
| -    kUsesArguments,
 | 
| -    kHasDuplicateParameters,
 | 
| -    kNative,
 | 
| -    kBoundFunction
 | 
| -  };
 | 
| +  static const int kHasOnlySimpleThisPropertyAssignments = 0;
 | 
| +  static const int kAllowLazyCompilation = 1;
 | 
| +  static const int kLiveObjectsMayExist = 2;
 | 
| +  static const int kCodeAgeShift = 3;
 | 
| +  static const int kCodeAgeMask = 0x7;
 | 
| +  static const int kOptimizationDisabled = 6;
 | 
| +  static const int kStrictModeFunction = 7;
 | 
| +  static const int kNative = 8;
 | 
| +  static const int kBoundFunction = 9;
 | 
|  
 | 
|   private:
 | 
|  #if V8_HOST_ARCH_32_BIT
 | 
| 
 |