Chromium Code Reviews| Index: runtime/vm/flow_graph_optimizer.cc |
| diff --git a/runtime/vm/flow_graph_optimizer.cc b/runtime/vm/flow_graph_optimizer.cc |
| index 2c3c14966b34a9957038c2908c94a337c64adce6..b0e23334ba551de7e7b4be47b018771f674705c9 100644 |
| --- a/runtime/vm/flow_graph_optimizer.cc |
| +++ b/runtime/vm/flow_graph_optimizer.cc |
| @@ -427,6 +427,7 @@ bool FlowGraphOptimizer::TryReplaceWithStoreIndexed(InstanceCallInstr* call) { |
| case kGrowableObjectArrayCid: |
| // Acceptable store index classes. |
| break; |
| + case kFloat32ArrayCid: |
| case kFloat64ArrayCid: { |
| // Check that value is always double. |
| value_check = call->ic_data()->AsUnaryClassChecksForArgNr(2); |
| @@ -445,7 +446,16 @@ bool FlowGraphOptimizer::TryReplaceWithStoreIndexed(InstanceCallInstr* call) { |
| Value* value = call->ArgumentAt(2)->value(); |
| // Check if store barrier is needed. |
| bool needs_store_barrier = true; |
| - if (class_id == kFloat64ArrayCid) { |
| + if (class_id == kFloat32ArrayCid) { |
| + ASSERT(!value_check.IsNull()); |
| + InsertBefore(call, |
| + new CheckClassInstr(value->Copy(), |
| + call->deopt_id(), |
| + value_check), |
| + call->env(), |
| + Definition::kEffect); |
| + needs_store_barrier = false; |
| + } else if (class_id == kFloat64ArrayCid) { |
|
srdjan
2012/10/19 00:41:53
Aren't the kFloat64ArrayCid and kFloat32ArrayCid t
|
| ASSERT(!value_check.IsNull()); |
| InsertBefore(call, |
| new CheckClassInstr(value->Copy(), |
| @@ -478,6 +488,7 @@ bool FlowGraphOptimizer::TryReplaceWithLoadIndexed(InstanceCallInstr* call) { |
| case kArrayCid: |
| case kImmutableArrayCid: |
| case kGrowableObjectArrayCid: |
| + case kFloat32ArrayCid: |
| case kFloat64ArrayCid: |
| // Acceptable load index classes. |
| break; |