Chromium Code Reviews| Index: runtime/vm/intermediate_language_ia32.cc |
| =================================================================== |
| --- runtime/vm/intermediate_language_ia32.cc (revision 20202) |
| +++ runtime/vm/intermediate_language_ia32.cc (working copy) |
| @@ -2209,7 +2209,11 @@ |
| case Token::kMUL: { |
| // Keep left value tagged and untag right value. |
| const intptr_t value = Smi::Cast(constant).Value(); |
| - __ imull(left, Immediate(value)); |
| + if (value == 2) { |
|
bakster
2013/03/19 13:22:44
What about 4, 8, 16 etc?
Florian Schneider
2013/03/19 13:24:33
shl does not set the overflow flag for other than
bakster
2013/03/19 13:31:25
I guess you than can unroll into repeated shl(1) :
ahe
2013/03/19 14:13:11
What about a compare?
|
| + __ shll(left, Immediate(1)); |
| + } else { |
| + __ imull(left, Immediate(value)); |
| + } |
| if (deopt != NULL) __ j(OVERFLOW, deopt); |
| break; |
| } |