OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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_inliner.h" | 5 #include "vm/flow_graph_inliner.h" |
6 | 6 |
7 #include "vm/aot_optimizer.h" | 7 #include "vm/aot_optimizer.h" |
8 #include "vm/block_scheduler.h" | 8 #include "vm/block_scheduler.h" |
9 #include "vm/branch_optimizer.h" | 9 #include "vm/branch_optimizer.h" |
10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
(...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
821 callee_graph->ComputeSSA(caller_graph_->max_virtual_register_number(), | 821 callee_graph->ComputeSSA(caller_graph_->max_virtual_register_number(), |
822 param_stubs); | 822 param_stubs); |
823 DEBUG_ASSERT(callee_graph->VerifyUseLists()); | 823 DEBUG_ASSERT(callee_graph->VerifyUseLists()); |
824 } | 824 } |
825 | 825 |
826 { | 826 { |
827 CSTAT_TIMER_SCOPE(thread(), graphinliner_opt_timer); | 827 CSTAT_TIMER_SCOPE(thread(), graphinliner_opt_timer); |
828 // TODO(fschneider): Improve suppression of speculative inlining. | 828 // TODO(fschneider): Improve suppression of speculative inlining. |
829 // Deopt-ids overlap between caller and callee. | 829 // Deopt-ids overlap between caller and callee. |
830 if (FLAG_precompiled_mode) { | 830 if (FLAG_precompiled_mode) { |
| 831 #ifdef DART_PRECOMPILER |
831 AotOptimizer optimizer(callee_graph, | 832 AotOptimizer optimizer(callee_graph, |
832 inliner_->use_speculative_inlining_, | 833 inliner_->use_speculative_inlining_, |
833 inliner_->inlining_black_list_); | 834 inliner_->inlining_black_list_); |
834 optimizer.PopulateWithICData(); | 835 optimizer.PopulateWithICData(); |
835 | 836 |
836 optimizer.ApplyClassIds(); | 837 optimizer.ApplyClassIds(); |
837 DEBUG_ASSERT(callee_graph->VerifyUseLists()); | 838 DEBUG_ASSERT(callee_graph->VerifyUseLists()); |
838 | 839 |
839 FlowGraphTypePropagator::Propagate(callee_graph); | 840 FlowGraphTypePropagator::Propagate(callee_graph); |
840 DEBUG_ASSERT(callee_graph->VerifyUseLists()); | 841 DEBUG_ASSERT(callee_graph->VerifyUseLists()); |
841 | 842 |
842 optimizer.ApplyICData(); | 843 optimizer.ApplyICData(); |
843 DEBUG_ASSERT(callee_graph->VerifyUseLists()); | 844 DEBUG_ASSERT(callee_graph->VerifyUseLists()); |
844 | 845 |
845 // Optimize (a << b) & c patterns, merge instructions. Must occur | 846 // Optimize (a << b) & c patterns, merge instructions. Must occur |
846 // before 'SelectRepresentations' which inserts conversion nodes. | 847 // before 'SelectRepresentations' which inserts conversion nodes. |
847 callee_graph->TryOptimizePatterns(); | 848 callee_graph->TryOptimizePatterns(); |
848 DEBUG_ASSERT(callee_graph->VerifyUseLists()); | 849 DEBUG_ASSERT(callee_graph->VerifyUseLists()); |
| 850 #else |
| 851 UNREACHABLE(); |
| 852 #endif // DART_PRECOMPILER |
849 } else { | 853 } else { |
850 JitOptimizer optimizer(callee_graph); | 854 JitOptimizer optimizer(callee_graph); |
851 | 855 |
852 optimizer.ApplyClassIds(); | 856 optimizer.ApplyClassIds(); |
853 DEBUG_ASSERT(callee_graph->VerifyUseLists()); | 857 DEBUG_ASSERT(callee_graph->VerifyUseLists()); |
854 | 858 |
855 FlowGraphTypePropagator::Propagate(callee_graph); | 859 FlowGraphTypePropagator::Propagate(callee_graph); |
856 DEBUG_ASSERT(callee_graph->VerifyUseLists()); | 860 DEBUG_ASSERT(callee_graph->VerifyUseLists()); |
857 | 861 |
858 optimizer.ApplyICData(); | 862 optimizer.ApplyICData(); |
(...skipping 2919 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3778 return true; | 3782 return true; |
3779 } | 3783 } |
3780 | 3784 |
3781 default: | 3785 default: |
3782 return false; | 3786 return false; |
3783 } | 3787 } |
3784 } | 3788 } |
3785 | 3789 |
3786 | 3790 |
3787 } // namespace dart | 3791 } // namespace dart |
OLD | NEW |