OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/flow_graph_optimizer.h" | 5 #include "vm/flow_graph_optimizer.h" |
6 | 6 |
7 #include "vm/cha.h" | 7 #include "vm/cha.h" |
8 #include "vm/flow_graph_builder.h" | 8 #include "vm/flow_graph_builder.h" |
9 #include "vm/hash_map.h" | 9 #include "vm/hash_map.h" |
10 #include "vm/il_printer.h" | 10 #include "vm/il_printer.h" |
(...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
745 comp->set_receiver_class_id(kNumberCid); | 745 comp->set_receiver_class_id(kNumberCid); |
746 } | 746 } |
747 } | 747 } |
748 | 748 |
749 | 749 |
750 void FlowGraphOptimizer::VisitBind(BindInstr* instr) { | 750 void FlowGraphOptimizer::VisitBind(BindInstr* instr) { |
751 instr->computation()->Accept(this, instr); | 751 instr->computation()->Accept(this, instr); |
752 } | 752 } |
753 | 753 |
754 | 754 |
| 755 void FlowGraphOptimizer::VisitBranch(BranchInstr* instr) { |
| 756 instr->computation()->Accept(this, NULL); |
| 757 } |
| 758 |
| 759 |
755 void FlowGraphTypePropagator::VisitAssertAssignable(AssertAssignableComp* comp, | 760 void FlowGraphTypePropagator::VisitAssertAssignable(AssertAssignableComp* comp, |
756 BindInstr* instr) { | 761 BindInstr* instr) { |
757 if (FLAG_eliminate_type_checks && | 762 if (FLAG_eliminate_type_checks && |
758 !comp->is_eliminated() && | 763 !comp->is_eliminated() && |
759 comp->value()->CompileTypeIsMoreSpecificThan(comp->dst_type())) { | 764 comp->value()->CompileTypeIsMoreSpecificThan(comp->dst_type())) { |
760 // TODO(regis): Remove is_eliminated_ field and support. | 765 // TODO(regis): Remove is_eliminated_ field and support. |
761 comp->eliminate(); | 766 comp->eliminate(); |
762 | 767 |
763 UseVal* use = comp->value()->AsUse(); | 768 UseVal* use = comp->value()->AsUse(); |
764 ASSERT(use != NULL); | 769 ASSERT(use != NULL); |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1064 DirectChainedHashMap<BindInstr*> child_map(*map); // Copy map. | 1069 DirectChainedHashMap<BindInstr*> child_map(*map); // Copy map. |
1065 OptimizeRecursive(child, &child_map); | 1070 OptimizeRecursive(child, &child_map); |
1066 } else { | 1071 } else { |
1067 OptimizeRecursive(child, map); // Reuse map for the last child. | 1072 OptimizeRecursive(child, map); // Reuse map for the last child. |
1068 } | 1073 } |
1069 } | 1074 } |
1070 } | 1075 } |
1071 | 1076 |
1072 | 1077 |
1073 } // namespace dart | 1078 } // namespace dart |
OLD | NEW |