| Index: src/ic.h | 
| diff --git a/src/ic.h b/src/ic.h | 
| index 64098ea0353f51a6abcf1adfe716aafcb068ead4..54fd1eb19ad64767137ab7ff3372f700d25d4d1f 100644 | 
| --- a/src/ic.h | 
| +++ b/src/ic.h | 
| @@ -42,8 +42,6 @@ const int kMaxKeyedPolymorphism = 4; | 
| #define IC_UTIL_LIST(ICU)                             \ | 
| ICU(LoadIC_Miss)                                    \ | 
| ICU(KeyedLoadIC_Miss)                               \ | 
| -  ICU(CallIC_Miss)                                    \ | 
| -  ICU(KeyedCallIC_Miss)                               \ | 
| ICU(StoreIC_Miss)                                   \ | 
| ICU(StoreIC_ArrayLength)                            \ | 
| ICU(StoreIC_Slow)                                   \ | 
| @@ -63,8 +61,7 @@ const int kMaxKeyedPolymorphism = 4; | 
| ICU(Unreachable)                                    \ | 
| ICU(ToBooleanIC_Miss) | 
| // | 
| -// IC is the base class for LoadIC, StoreIC, CallIC, KeyedLoadIC, | 
| -// and KeyedStoreIC. | 
| +// IC is the base class for LoadIC, StoreIC, KeyedLoadIC, and KeyedStoreIC. | 
| // | 
| class IC { | 
| public: | 
| @@ -114,10 +111,6 @@ class IC { | 
| bool IsStoreStub() const { | 
| return target()->is_store_stub() || target()->is_keyed_store_stub(); | 
| } | 
| - | 
| -  bool IsCallStub() const { | 
| -    return target()->is_call_stub() || target()->is_keyed_call_stub(); | 
| -  } | 
| #endif | 
|  | 
| // Determines which map must be used for keeping the code stub. | 
| @@ -284,133 +277,22 @@ class IC_Utility { | 
| }; | 
|  | 
|  | 
| -class CallICBase: public IC { | 
| - public: | 
| -  // Returns a JSFunction or a Failure. | 
| -  MUST_USE_RESULT MaybeObject* LoadFunction(Handle<Object> object, | 
| -                                            Handle<String> name); | 
| - | 
| - protected: | 
| -  CallICBase(Code::Kind kind, Isolate* isolate) | 
| -      : IC(EXTRA_CALL_FRAME, isolate), kind_(kind) {} | 
| - | 
| -  // Compute a monomorphic stub if possible, otherwise return a null handle. | 
| -  Handle<Code> ComputeMonomorphicStub(LookupResult* lookup, | 
| -                                      Handle<Object> object, | 
| -                                      Handle<String> name); | 
| - | 
| -  // Update the inline cache and the global stub cache based on the lookup | 
| -  // result. | 
| -  void UpdateCaches(LookupResult* lookup, | 
| -                    Handle<Object> object, | 
| -                    Handle<String> name); | 
| - | 
| -  // Returns a JSFunction if the object can be called as a function, and | 
| -  // patches the stack to be ready for the call.  Otherwise, it returns the | 
| -  // undefined value. | 
| -  Handle<Object> TryCallAsFunction(Handle<Object> object); | 
| - | 
| -  void ReceiverToObjectIfRequired(Handle<Object> callee, Handle<Object> object); | 
| - | 
| -  static void Clear(Address address, Code* target); | 
| - | 
| -  // Platform-specific code generation functions used by both call and | 
| -  // keyed call. | 
| -  static void GenerateMiss(MacroAssembler* masm, | 
| -                           int argc, | 
| -                           IC::UtilityId id, | 
| -                           ExtraICState extra_state); | 
| - | 
| -  static void GenerateNormal(MacroAssembler* masm, int argc); | 
| - | 
| -  static void GenerateMonomorphicCacheProbe(MacroAssembler* masm, | 
| -                                            int argc, | 
| -                                            Code::Kind kind, | 
| -                                            ExtraICState extra_state); | 
| - | 
| -  virtual Handle<Code> megamorphic_stub(); | 
| -  virtual Handle<Code> pre_monomorphic_stub(); | 
| - | 
| -  Code::Kind kind_; | 
| - | 
| -  friend class IC; | 
| -}; | 
| - | 
| - | 
| -class CallIC: public CallICBase { | 
| - public: | 
| -  explicit CallIC(Isolate* isolate) | 
| -      : CallICBase(Code::CALL_IC, isolate) { | 
| -    ASSERT(target()->is_call_stub()); | 
| -  } | 
| - | 
| -  // Code generator routines. | 
| -  static void GenerateInitialize(MacroAssembler* masm, | 
| -                                 int argc, | 
| -                                 ExtraICState extra_state) { | 
| -    GenerateMiss(masm, argc, extra_state); | 
| -  } | 
| - | 
| -  static void GenerateMiss(MacroAssembler* masm, | 
| -                           int argc, | 
| -                           ExtraICState extra_state) { | 
| -    CallICBase::GenerateMiss(masm, argc, IC::kCallIC_Miss, extra_state); | 
| -  } | 
| - | 
| -  static void GenerateMegamorphic(MacroAssembler* masm, | 
| -                                  int argc, | 
| -                                  ExtraICState extra_ic_state); | 
| - | 
| -  static void GenerateNormal(MacroAssembler* masm, int argc) { | 
| -    CallICBase::GenerateNormal(masm, argc); | 
| -    GenerateMiss(masm, argc, kNoExtraICState); | 
| -  } | 
| -  bool TryUpdateExtraICState(LookupResult* lookup, Handle<Object> object); | 
| -}; | 
| - | 
| - | 
| -class KeyedCallIC: public CallICBase { | 
| - public: | 
| -  explicit KeyedCallIC(Isolate* isolate) | 
| -      : CallICBase(Code::KEYED_CALL_IC, isolate) { | 
| -    ASSERT(target()->is_keyed_call_stub()); | 
| -  } | 
| - | 
| -  MUST_USE_RESULT MaybeObject* LoadFunction(Handle<Object> object, | 
| -                                            Handle<Object> key); | 
| - | 
| -  // Code generator routines. | 
| -  static void GenerateInitialize(MacroAssembler* masm, int argc) { | 
| -    GenerateMiss(masm, argc); | 
| -  } | 
| - | 
| -  static void GenerateMiss(MacroAssembler* masm, int argc) { | 
| -    CallICBase::GenerateMiss(masm, argc, IC::kKeyedCallIC_Miss, | 
| -                             kNoExtraICState); | 
| -  } | 
| - | 
| -  static void GenerateMegamorphic(MacroAssembler* masm, int argc); | 
| -  static void GenerateNormal(MacroAssembler* masm, int argc); | 
| -  static void GenerateNonStrictArguments(MacroAssembler* masm, int argc); | 
| -}; | 
| - | 
| - | 
| class LoadIC: public IC { | 
| public: | 
| // ExtraICState bits | 
| -  class Contextual: public BitField<ContextualMode, 0, 1> {}; | 
| +  class ContextualModeBits: public BitField<ContextualMode, 0, 1> {}; | 
| STATIC_ASSERT(static_cast<int>(NOT_CONTEXTUAL) == 0); | 
|  | 
| -  static ExtraICState ComputeExtraICState(ContextualMode mode) { | 
| -    return Contextual::encode(mode); | 
| +  static ExtraICState ComputeExtraICState(ContextualMode contextual_mode) { | 
| +    return ContextualModeBits::encode(contextual_mode); | 
| } | 
|  | 
| static ContextualMode GetContextualMode(ExtraICState state) { | 
| -    return Contextual::decode(state); | 
| +    return ContextualModeBits::decode(state); | 
| } | 
|  | 
| ContextualMode contextual_mode() const { | 
| -    return Contextual::decode(extra_ic_state()); | 
| +    return ContextualModeBits::decode(extra_ic_state()); | 
| } | 
|  | 
| explicit LoadIC(FrameDepth depth, Isolate* isolate) | 
| @@ -435,11 +317,13 @@ class LoadIC: public IC { | 
| GenerateMiss(masm); | 
| } | 
| static void GenerateMiss(MacroAssembler* masm); | 
| -  static void GenerateMegamorphic(MacroAssembler* masm, ContextualMode mode); | 
| +  static void GenerateMegamorphic(MacroAssembler* masm, | 
| +                                  ExtraICState extra_state); | 
| static void GenerateNormal(MacroAssembler* masm); | 
| static void GenerateRuntimeGetProperty(MacroAssembler* masm); | 
|  | 
| -  static Handle<Code> initialize_stub(Isolate* isolate, ContextualMode mode); | 
| +  static Handle<Code> initialize_stub(Isolate* isolate, | 
| +                                      ExtraICState extra_state); | 
|  | 
| MUST_USE_RESULT MaybeObject* Load(Handle<Object> object, | 
| Handle<String> name); | 
| @@ -476,10 +360,10 @@ class LoadIC: public IC { | 
| private: | 
| // Stub accessors. | 
| static Handle<Code> pre_monomorphic_stub(Isolate* isolate, | 
| -                                           ContextualMode mode); | 
| +                                           ExtraICState exstra_state); | 
|  | 
| virtual Handle<Code> pre_monomorphic_stub() { | 
| -    return pre_monomorphic_stub(isolate(), contextual_mode()); | 
| +    return pre_monomorphic_stub(isolate(), extra_ic_state()); | 
| } | 
|  | 
| Handle<Code> SimpleFieldLoad(int offset, | 
| @@ -1002,7 +886,6 @@ DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedLoadIC_MissFromStubFailure); | 
| DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedStoreIC_MissFromStubFailure); | 
| DECLARE_RUNTIME_FUNCTION(MaybeObject*, UnaryOpIC_Miss); | 
| DECLARE_RUNTIME_FUNCTION(MaybeObject*, StoreIC_MissFromStubFailure); | 
| -DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedCallIC_MissFromStubFailure); | 
| DECLARE_RUNTIME_FUNCTION(MaybeObject*, ElementsTransitionAndStoreIC_Miss); | 
| DECLARE_RUNTIME_FUNCTION(MaybeObject*, BinaryOpIC_Miss); | 
| DECLARE_RUNTIME_FUNCTION(MaybeObject*, BinaryOpIC_MissWithAllocationSite); | 
|  |