| Index: src/ic.cc
|
| diff --git a/src/ic.cc b/src/ic.cc
|
| index ef3fc2c86b6d8e76dbfcd2d3f027fad5ee70ca9a..f774b928ce7c7656b19bdc7d69abb103ae218967 100644
|
| --- a/src/ic.cc
|
| +++ b/src/ic.cc
|
| @@ -1504,6 +1504,14 @@ Handle<Code> KeyedIC::ComputeStub(Handle<JSObject> receiver,
|
| ? ALLOW_JSARRAY_GROWTH
|
| : DO_NOT_ALLOW_JSARRAY_GROWTH;
|
|
|
| + // Don't handle megamorphic property accesses for INTERCEPTORS or CALLBACKS
|
| + // via megamorphic stubs, since they don't have a map in their relocation info
|
| + // and so the stubs can't be harvested for the object needed for a map check.
|
| + if (target()->type() != NORMAL) {
|
| + TRACE_GENERIC_IC("KeyedIC", "non-NORMAL target type");
|
| + return generic_stub;
|
| + }
|
| +
|
| bool monomorphic = false;
|
| MapHandleList target_receiver_maps;
|
| if (ic_state != UNINITIALIZED && ic_state != PREMONOMORPHIC) {
|
| @@ -1534,14 +1542,6 @@ Handle<Code> KeyedIC::ComputeStub(Handle<JSObject> receiver,
|
| }
|
| ASSERT(target() != *generic_stub);
|
|
|
| - // Don't handle megamorphic property accesses for INTERCEPTORS or CALLBACKS
|
| - // via megamorphic stubs, since they don't have a map in their relocation info
|
| - // and so the stubs can't be harvested for the object needed for a map check.
|
| - if (target()->type() != NORMAL) {
|
| - TRACE_GENERIC_IC("KeyedIC", "non-NORMAL target type");
|
| - return generic_stub;
|
| - }
|
| -
|
| // Determine the list of receiver maps that this call site has seen,
|
| // adding the map that was just encountered.
|
| Handle<Map> receiver_map(receiver->map());
|
|
|