Index: runtime/vm/flow_graph_optimizer.cc |
=================================================================== |
--- runtime/vm/flow_graph_optimizer.cc (revision 38398) |
+++ runtime/vm/flow_graph_optimizer.cc (working copy) |
@@ -2020,6 +2020,7 @@ |
switch (op_kind) { |
case Token::kADD: |
case Token::kSUB: |
+ case Token::kMUL: |
if (HasOnlyTwoOf(ic_data, kSmiCid)) { |
// Don't generate smi code if the IC data is marked because |
// of an overflow. |
@@ -2037,6 +2038,7 @@ |
} else if (HasOnlyTwoOf(ic_data, kFloat32x4Cid)) { |
operands_type = kFloat32x4Cid; |
} else if (HasOnlyTwoOf(ic_data, kInt32x4Cid)) { |
+ ASSERT(op_kind != Token::kMUL); // Int32x4 doesn't have a multiply op. |
operands_type = kInt32x4Cid; |
} else if (HasOnlyTwoOf(ic_data, kFloat64x2Cid)) { |
operands_type = kFloat64x2Cid; |
@@ -2044,23 +2046,6 @@ |
return false; |
} |
break; |
- case Token::kMUL: |
- if (HasOnlyTwoOf(ic_data, kSmiCid)) { |
- // Don't generate smi code if the IC data is marked because of an |
- // overflow. |
- // TODO(fschneider): Add unboxed mint multiplication. |
- if (ic_data.HasDeoptReason(ICData::kDeoptBinarySmiOp)) return false; |
- operands_type = kSmiCid; |
- } else if (ShouldSpecializeForDouble(ic_data)) { |
- operands_type = kDoubleCid; |
- } else if (HasOnlyTwoOf(ic_data, kFloat32x4Cid)) { |
- operands_type = kFloat32x4Cid; |
- } else if (HasOnlyTwoOf(ic_data, kFloat64x2Cid)) { |
- operands_type = kFloat64x2Cid; |
- } else { |
- return false; |
- } |
- break; |
case Token::kDIV: |
if (ShouldSpecializeForDouble(ic_data) || |
HasOnlyTwoOf(ic_data, kSmiCid)) { |