| Index: src/ic.cc
|
| ===================================================================
|
| --- src/ic.cc (revision 11733)
|
| +++ src/ic.cc (working copy)
|
| @@ -1567,6 +1567,7 @@
|
| }
|
|
|
| bool monomorphic = false;
|
| + bool maybe_monomorphic = false;
|
| MapHandleList target_receiver_maps;
|
| if (ic_state != UNINITIALIZED && ic_state != PREMONOMORPHIC) {
|
| GetReceiverMapsForStub(Handle<Code>(target()), &target_receiver_maps);
|
| @@ -1588,6 +1589,10 @@
|
| receiver->GetElementsKind());
|
| }
|
| }
|
| + } else {
|
| + if (ic_state == UNINITIALIZED || ic_state == PREMONOMORPHIC) {
|
| + maybe_monomorphic = true;
|
| + }
|
| }
|
|
|
| if (monomorphic) {
|
| @@ -1600,6 +1605,7 @@
|
| // adding the map that was just encountered.
|
| Handle<Map> receiver_map(receiver->map());
|
| bool map_added =
|
| + maybe_monomorphic ? false :
|
| AddOneReceiverMapIfMissing(&target_receiver_maps, receiver_map);
|
| if (IsTransitionStubKind(stub_kind)) {
|
| Handle<Map> new_map = ComputeTransitionedMap(receiver, stub_kind);
|
|
|