Chromium Code Reviews| Index: src/ic/ic.cc |
| diff --git a/src/ic/ic.cc b/src/ic/ic.cc |
| index e47ad9a618e24fd4e186c4285b8407bf797be5da..9e45a8228f8b20a3a00a53cd713fb03423f5ce60 100644 |
| --- a/src/ic/ic.cc |
| +++ b/src/ic/ic.cc |
| @@ -2047,14 +2047,12 @@ MaybeHandle<Object> KeyedStoreIC::Store(Handle<Object> object, |
| Handle<JSObject> receiver = Handle<JSObject>::cast(object); |
| bool key_is_smi_like = !Object::ToSmi(isolate(), key).is_null(); |
| if (receiver->elements()->map() == |
| - isolate()->heap()->sloppy_arguments_elements_map()) { |
| - if (is_sloppy(language_mode())) { |
| - stub = sloppy_arguments_stub(); |
| - } else { |
| - TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", "arguments receiver"); |
| - } |
| - } else if (key_is_smi_like && |
| - !(target().is_identical_to(sloppy_arguments_stub()))) { |
| + isolate()->heap()->sloppy_arguments_elements_map() && |
| + !is_sloppy(language_mode())) { |
| + TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", "arguments receiver"); |
|
Jakob Kummerow
2015/05/28 11:55:00
I find this code confusing. TRACE_GENERIC should b
mvstanton
2015/05/28 13:23:52
You certainly found a bug! I need an else before t
|
| + } |
| + |
| + if (key_is_smi_like) { |
| // We should go generic if receiver isn't a dictionary, but our |
| // prototype chain does have dictionary elements. This ensures that |
| // other non-dictionary receivers in the polymorphic case benefit |