Chromium Code Reviews| Index: runtime/vm/flow_graph_builder.cc |
| =================================================================== |
| --- runtime/vm/flow_graph_builder.cc (revision 14858) |
| +++ runtime/vm/flow_graph_builder.cc (working copy) |
| @@ -606,7 +606,22 @@ |
| // type: AbstractType |
| // dst_name: String } |
| void EffectGraphVisitor::VisitAssignableNode(AssignableNode* node) { |
| - UNREACHABLE(); |
| + ValueGraphVisitor for_value(owner(), temp_index(), loop_depth()); |
| + node->expr()->Visit(&for_value); |
| + Append(for_value); |
| + Definition* checked_value; |
| + if (CanSkipTypeCheck(node->expr()->token_pos(), |
| + for_value.value(), |
| + node->type(), |
| + node->dst_name())) { |
| + checked_value = for_value.value()->definition(); // No check needed. |
| + } else { |
| + checked_value = BuildAssertAssignable(node->expr()->token_pos(), |
| + for_value.value(), |
| + node->type(), |
| + node->dst_name()); |
| + } |
|
srdjan
2012/11/13 18:33:35
Why are you not using BuildAssignableValue as belo
regis
2012/11/13 18:38:53
I tried, but it does not get simpler. BuildAssertA
|
| + ReturnDefinition(checked_value); |
| } |