Chromium Code Reviews| Index: src/hydrogen-instructions.cc |
| =================================================================== |
| --- src/hydrogen-instructions.cc (revision 11473) |
| +++ src/hydrogen-instructions.cc (working copy) |
| @@ -1603,6 +1603,7 @@ |
| SetOperandAt(1, object); |
| set_representation(Representation::Tagged()); |
| SetGVNFlag(kDependsOnMaps); |
| + int map_transitions = 0; |
| for (int i = 0; |
| i < types->length() && types_.length() < kMaxLoadPolymorphism; |
| ++i) { |
| @@ -1624,13 +1625,19 @@ |
| case CONSTANT_FUNCTION: |
| types_.Add(types->at(i)); |
| break; |
| + case MAP_TRANSITION: |
|
Michael Starzinger
2012/05/02 13:39:29
I think that check is not general enough. We have
Sven Panne
2012/05/02 13:55:00
Michael's comment is correct, but things are even
Erik Corry
2012/05/03 10:39:14
All I want to do is to ignore this particular map
|
| + // We should just ignore these since they are not relevant to a load |
| + // operation. |
|
Michael Starzinger
2012/05/03 14:12:22
In this case, this comment should contain somethin
|
| + map_transitions++; |
| + break; |
| default: |
|
Sven Panne
2012/05/02 13:55:00
We should never use a default case when doing a sw
Erik Corry
2012/05/03 10:39:14
I didn't add this default clause. All it is sayin
|
| break; |
| } |
| } |
| } |
| - if (types_.length() == types->length() && FLAG_deoptimize_uncommon_cases) { |
| + if (types_.length() + map_transitions == types->length() && |
| + FLAG_deoptimize_uncommon_cases) { |
| SetFlag(kUseGVN); |
| } else { |
| SetAllSideEffects(); |