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 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 | 630 |
631 // Don't inline any intrinsified functions in precompiled mode | 631 // Don't inline any intrinsified functions in precompiled mode |
632 // to reduce code size and make sure we use the intrinsic code. | 632 // to reduce code size and make sure we use the intrinsic code. |
633 if (FLAG_precompiled_mode && function.is_intrinsic()) { | 633 if (FLAG_precompiled_mode && function.is_intrinsic()) { |
634 TRACE_INLINING(THR_Print(" Bailout: intrinisic\n")); | 634 TRACE_INLINING(THR_Print(" Bailout: intrinisic\n")); |
635 PRINT_INLINING_TREE("intrinsic", | 635 PRINT_INLINING_TREE("intrinsic", |
636 &call_data->caller, &function, call_data->call); | 636 &call_data->caller, &function, call_data->call); |
637 return false; | 637 return false; |
638 } | 638 } |
639 | 639 |
640 // Function has no type feedback. With precompilation we don't rely on | 640 // Do not rely on function type feedback or presence of code to determine |
641 // type feedback. | 641 // if a function was compiled. |
642 if (!FLAG_precompiled_mode && | 642 if (!FLAG_precompiled_mode && !function.was_compiled()) { |
643 function.ic_data_array() == Object::null()) { | |
644 TRACE_INLINING(THR_Print(" Bailout: not compiled yet\n")); | 643 TRACE_INLINING(THR_Print(" Bailout: not compiled yet\n")); |
645 PRINT_INLINING_TREE("Not compiled", | 644 PRINT_INLINING_TREE("Not compiled", |
646 &call_data->caller, &function, call_data->call); | 645 &call_data->caller, &function, call_data->call); |
647 return false; | 646 return false; |
648 } | 647 } |
649 | 648 |
650 // Abort if this function has deoptimized too much. | 649 // Abort if this function has deoptimized too much. |
651 if (function.deoptimization_counter() >= | 650 if (function.deoptimization_counter() >= |
652 FLAG_max_deoptimization_counter_threshold) { | 651 FLAG_max_deoptimization_counter_threshold) { |
653 function.set_is_inlinable(false); | 652 function.set_is_inlinable(false); |
(...skipping 2426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3080 return InlineDoubleOp(flow_graph, Token::kMUL, call, entry, last); | 3079 return InlineDoubleOp(flow_graph, Token::kMUL, call, entry, last); |
3081 case MethodRecognizer::kDoubleDiv: | 3080 case MethodRecognizer::kDoubleDiv: |
3082 return InlineDoubleOp(flow_graph, Token::kDIV, call, entry, last); | 3081 return InlineDoubleOp(flow_graph, Token::kDIV, call, entry, last); |
3083 default: | 3082 default: |
3084 return false; | 3083 return false; |
3085 } | 3084 } |
3086 } | 3085 } |
3087 | 3086 |
3088 | 3087 |
3089 } // namespace dart | 3088 } // namespace dart |
OLD | NEW |