Commit 2c5d0d82 authored by verwaest@chromium.org's avatar verwaest@chromium.org

Use PatchCache for call ICs.

R=ulan@chromium.org

Review URL: https://chromiumcodereview.appspot.com/25464004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17088 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 8feab2ed
This diff is collapsed.
...@@ -102,7 +102,7 @@ class IC { ...@@ -102,7 +102,7 @@ class IC {
inline Address address() const; inline Address address() const;
// Compute the current IC state based on the target stub, receiver and name. // Compute the current IC state based on the target stub, receiver and name.
void UpdateState(Object* receiver, Object* name); void UpdateState(Handle<Object> receiver, Handle<Object> name);
void MarkMonomorphicPrototypeFailure() { void MarkMonomorphicPrototypeFailure() {
state_ = MONOMORPHIC_PROTOTYPE_FAILURE; state_ = MONOMORPHIC_PROTOTYPE_FAILURE;
} }
...@@ -160,9 +160,7 @@ class IC { ...@@ -160,9 +160,7 @@ class IC {
#ifdef DEBUG #ifdef DEBUG
char TransitionMarkFromState(IC::State state); char TransitionMarkFromState(IC::State state);
void TraceIC(const char* type, void TraceIC(const char* type, Handle<Object> name);
Handle<Object> name,
Code* new_target);
#endif #endif
Failure* TypeError(const char* type, Failure* TypeError(const char* type,
...@@ -198,7 +196,8 @@ class IC { ...@@ -198,7 +196,8 @@ class IC {
return Handle<Code>::null(); return Handle<Code>::null();
} }
virtual StrictModeFlag strict_mode() const { return kNonStrictMode; } virtual StrictModeFlag strict_mode() const { return kNonStrictMode; }
bool TryRemoveInvalidPrototypeDependentStub(Object* receiver, Object* name); bool TryRemoveInvalidPrototypeDependentStub(Handle<Object> receiver,
Handle<String> name);
private: private:
// Frame pointer for the frame that uses (calls) the IC. // Frame pointer for the frame that uses (calls) the IC.
...@@ -253,7 +252,6 @@ class CallICBase: public IC { ...@@ -253,7 +252,6 @@ class CallICBase: public IC {
// Compute a monomorphic stub if possible, otherwise return a null handle. // Compute a monomorphic stub if possible, otherwise return a null handle.
Handle<Code> ComputeMonomorphicStub(LookupResult* lookup, Handle<Code> ComputeMonomorphicStub(LookupResult* lookup,
Code::ExtraICState extra_state,
Handle<Object> object, Handle<Object> object,
Handle<String> name); Handle<String> name);
...@@ -286,6 +284,9 @@ class CallICBase: public IC { ...@@ -286,6 +284,9 @@ class CallICBase: public IC {
Code::Kind kind, Code::Kind kind,
Code::ExtraICState extra_state); Code::ExtraICState extra_state);
virtual Handle<Code> megamorphic_stub();
virtual Handle<Code> pre_monomorphic_stub();
Code::Kind kind_; Code::Kind kind_;
friend class IC; friend class IC;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment