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(); |