| Index: src/code-stubs.h
 | 
| diff --git a/src/code-stubs.h b/src/code-stubs.h
 | 
| index 7ec43c6ac507c66c2cc98698eaf85aef2bfe3f2f..bf0e261557b3ac5cefd85becf0e5834919534bc3 100644
 | 
| --- a/src/code-stubs.h
 | 
| +++ b/src/code-stubs.h
 | 
| @@ -50,6 +50,7 @@ namespace internal {
 | 
|    V(ArrayLength)                         \
 | 
|    V(StringLength)                        \
 | 
|    V(FunctionPrototype)                   \
 | 
| +  V(StoreArrayLength)                    \
 | 
|    V(RecordWrite)                         \
 | 
|    V(StoreBufferOverflow)                 \
 | 
|    V(RegExpExec)                          \
 | 
| @@ -179,6 +180,9 @@ class CodeStub BASE_EMBEDDED {
 | 
|    virtual InlineCacheState GetICState() {
 | 
|      return UNINITIALIZED;
 | 
|    }
 | 
| +  virtual Code::ExtraICState GetExtraICState() {
 | 
| +    return Code::kNoExtraICState;
 | 
| +  }
 | 
|  
 | 
|    // Returns whether the code generated for this stub needs to be allocated as
 | 
|    // a fixed (non-moveable) code object.
 | 
| @@ -605,6 +609,37 @@ class StringLengthStub: public ICStub {
 | 
|  };
 | 
|  
 | 
|  
 | 
| +class StoreICStub: public ICStub {
 | 
| + public:
 | 
| +  StoreICStub(Code::Kind kind, StrictModeFlag strict_mode)
 | 
| +      : ICStub(kind), strict_mode_(strict_mode) { }
 | 
| +
 | 
| + protected:
 | 
| +  virtual Code::ExtraICState GetExtraICState() {
 | 
| +    return strict_mode_;
 | 
| +  }
 | 
| +
 | 
| + private:
 | 
| +  class StrictModeBits: public BitField<bool, 4, 1> {};
 | 
| +  virtual int MinorKey() {
 | 
| +    return KindBits::encode(kind()) | StrictModeBits::encode(strict_mode_);
 | 
| +  }
 | 
| +
 | 
| +  StrictModeFlag strict_mode_;
 | 
| +};
 | 
| +
 | 
| +
 | 
| +class StoreArrayLengthStub: public StoreICStub {
 | 
| + public:
 | 
| +  explicit StoreArrayLengthStub(Code::Kind kind, StrictModeFlag strict_mode)
 | 
| +      : StoreICStub(kind, strict_mode) { }
 | 
| +  virtual void Generate(MacroAssembler* masm);
 | 
| +
 | 
| + private:
 | 
| +  virtual CodeStub::Major MajorKey() { return StoreArrayLength; }
 | 
| +};
 | 
| +
 | 
| +
 | 
|  class BinaryOpStub: public PlatformCodeStub {
 | 
|   public:
 | 
|    BinaryOpStub(Token::Value op, OverwriteMode mode)
 | 
| 
 |