Chromium Code Reviews| Index: runtime/vm/flow_graph_optimizer.cc |
| =================================================================== |
| --- runtime/vm/flow_graph_optimizer.cc (revision 9039) |
| +++ runtime/vm/flow_graph_optimizer.cc (working copy) |
| @@ -132,18 +132,19 @@ |
| bool FlowGraphOptimizer::TryReplaceWithBinaryOp(InstanceCallComp* comp, |
| Token::Kind op_kind) { |
| BinaryOpComp::OperandsType operands_type; |
| - if ((op_kind == Token::kBIT_AND) && HasTwoMintOrSmi(*comp->ic_data())) { |
| - operands_type = BinaryOpComp::kMintOperands; |
| - } else if (comp->ic_data()->NumberOfChecks() != 1) { |
| - // TODO(srdjan): Not yet supported. |
| - return false; |
| - } else if (HasTwoSmi(*comp->ic_data())) { |
| + if ((comp->ic_data()->NumberOfChecks() == 1) && HasTwoSmi(*comp->ic_data())) { |
| if (op_kind == Token::kDIV || |
| op_kind == Token::kMOD) { |
| // TODO(srdjan): Not yet supported. |
| return false; |
|
regis
2012/06/22 20:09:03
With this change, you will not inline kBIT_AND wit
srdjan
2012/06/22 20:36:47
As discussed, the code is correct but complicated.
|
| } |
| operands_type = BinaryOpComp::kSmiOperands; |
| + } else if ((op_kind == Token::kBIT_AND) && |
| + HasTwoMintOrSmi(*comp->ic_data())) { |
| + operands_type = BinaryOpComp::kMintOperands; |
| + } else if (comp->ic_data()->NumberOfChecks() != 1) { |
| + // TODO(srdjan): Not yet supported. |
| + return false; |
| } else if (HasTwoDouble(*comp->ic_data())) { |
| if (op_kind != Token::kADD && |
| op_kind != Token::kSUB && |