Index: src/ic.h |
diff --git a/src/ic.h b/src/ic.h |
index 3472ca9aec02566b67ff00af7b019ee23b86f90a..afa3e1ec94d2457cc205440bb56064fe71db3f71 100644 |
--- a/src/ic.h |
+++ b/src/ic.h |
@@ -242,17 +242,14 @@ class CallICBase: public IC { |
class StringStubState: public BitField<StringStubFeedback, 1, 1> {}; |
// Returns a JSFunction or a Failure. |
- MUST_USE_RESULT MaybeObject* LoadFunction(Code::ExtraICState extra_ic_state, |
- Handle<Object> object, |
+ 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) {} |
- bool TryUpdateExtraICState(LookupResult* lookup, |
- Handle<Object> object, |
- Code::ExtraICState* extra_ic_state); |
+ virtual Code::ExtraICState extra_ic_state() { return Code::kNoExtraICState; } |
// Compute a monomorphic stub if possible, otherwise return a null handle. |
Handle<Code> ComputeMonomorphicStub(LookupResult* lookup, |
@@ -263,7 +260,6 @@ class CallICBase: public IC { |
// Update the inline cache and the global stub cache based on the lookup |
// result. |
void UpdateCaches(LookupResult* lookup, |
- Code::ExtraICState extra_ic_state, |
Handle<Object> object, |
Handle<String> name); |
@@ -298,7 +294,9 @@ class CallICBase: public IC { |
class CallIC: public CallICBase { |
public: |
- explicit CallIC(Isolate* isolate) : CallICBase(Code::CALL_IC, isolate) { |
+ explicit CallIC(Isolate* isolate) |
+ : CallICBase(Code::CALL_IC, isolate), |
+ extra_ic_state_(target()->extra_ic_state()) { |
ASSERT(target()->is_call_stub()); |
} |
@@ -323,6 +321,13 @@ class CallIC: public CallICBase { |
CallICBase::GenerateNormal(masm, argc); |
GenerateMiss(masm, argc, Code::kNoExtraICState); |
} |
+ bool TryUpdateExtraICState(LookupResult* lookup, Handle<Object> object); |
+ |
+ protected: |
+ virtual Code::ExtraICState extra_ic_state() { return extra_ic_state_; } |
+ |
+ private: |
+ Code::ExtraICState extra_ic_state_; |
}; |