| Index: src/ic.h
|
| diff --git a/src/ic.h b/src/ic.h
|
| index eb844cf747123faa74eff7d6291e0c69642dd359..8d41f803b4b0669bdf8dd988714bda11a5e774eb 100644
|
| --- a/src/ic.h
|
| +++ b/src/ic.h
|
| @@ -183,29 +183,14 @@ class IC {
|
| static void PostPatching(Address address, Code* target, Code* old_target);
|
|
|
| // Compute the handler either by compiling or by retrieving a cached version.
|
| - Handle<Code> ComputeHandler(LookupIterator* lookup, Handle<Object> object,
|
| - Handle<Name> name,
|
| + Handle<Code> ComputeHandler(LookupIterator* lookup,
|
| Handle<Object> value = Handle<Code>::null());
|
| virtual Handle<Code> CompileHandler(LookupIterator* lookup,
|
| - Handle<Object> object,
|
| - Handle<Name> name, Handle<Object> value,
|
| + Handle<Object> value,
|
| CacheHolderFlag cache_holder) {
|
| UNREACHABLE();
|
| return Handle<Code>::null();
|
| }
|
| - // Temporary copy of the above, but using a LookupResult.
|
| - // TODO(jkummerow): Migrate callers to LookupIterator and delete these.
|
| - Handle<Code> ComputeStoreHandler(LookupResult* lookup, Handle<Object> object,
|
| - Handle<Name> name,
|
| - Handle<Object> value = Handle<Code>::null());
|
| - virtual Handle<Code> CompileStoreHandler(LookupResult* lookup,
|
| - Handle<Object> object,
|
| - Handle<Name> name,
|
| - Handle<Object> value,
|
| - CacheHolderFlag cache_holder) {
|
| - UNREACHABLE();
|
| - return Handle<Code>::null();
|
| - }
|
|
|
| void UpdateMonomorphicIC(Handle<Code> handler, Handle<Name> name);
|
| bool UpdatePolymorphicIC(Handle<Name> name, Handle<Code> code);
|
| @@ -235,6 +220,9 @@ class IC {
|
| }
|
|
|
| Handle<HeapType> receiver_type() { return receiver_type_; }
|
| + void update_receiver_type(Handle<Object> receiver) {
|
| + receiver_type_ = CurrentTypeOf(receiver, isolate_);
|
| + }
|
|
|
| void TargetMaps(MapHandleList* list) {
|
| FindTargetMaps();
|
| @@ -493,12 +481,9 @@ class LoadIC: public IC {
|
|
|
| // Update the inline cache and the global stub cache based on the
|
| // lookup result.
|
| - void UpdateCaches(LookupIterator* lookup, Handle<Object> object,
|
| - Handle<Name> name);
|
| + void UpdateCaches(LookupIterator* lookup);
|
|
|
| virtual Handle<Code> CompileHandler(LookupIterator* lookup,
|
| - Handle<Object> object,
|
| - Handle<Name> name,
|
| Handle<Object> unused,
|
| CacheHolderFlag cache_holder);
|
|
|
| @@ -633,6 +618,9 @@ class StoreIC: public IC {
|
| JSReceiver::StoreFromKeyed store_mode =
|
| JSReceiver::CERTAINLY_NOT_STORE_FROM_KEYED);
|
|
|
| + bool LookupForWrite(LookupIterator* it, Handle<Object> value,
|
| + JSReceiver::StoreFromKeyed store_mode);
|
| +
|
| protected:
|
| virtual Handle<Code> megamorphic_stub();
|
|
|
| @@ -652,15 +640,11 @@ class StoreIC: public IC {
|
|
|
| // Update the inline cache and the global stub cache based on the
|
| // lookup result.
|
| - void UpdateCaches(LookupResult* lookup,
|
| - Handle<JSObject> receiver,
|
| - Handle<Name> name,
|
| - Handle<Object> value);
|
| - virtual Handle<Code> CompileStoreHandler(LookupResult* lookup,
|
| - Handle<Object> object,
|
| - Handle<Name> name,
|
| - Handle<Object> value,
|
| - CacheHolderFlag cache_holder);
|
| + void UpdateCaches(LookupIterator* lookup, Handle<Object> value,
|
| + JSReceiver::StoreFromKeyed store_mode);
|
| + virtual Handle<Code> CompileHandler(LookupIterator* lookup,
|
| + Handle<Object> value,
|
| + CacheHolderFlag cache_holder);
|
|
|
| private:
|
| void set_target(Code* code) {
|
|
|