| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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/precompiler.h" | 5 #include "vm/precompiler.h" |
| 6 | 6 |
| 7 #include "vm/aot_optimizer.h" | 7 #include "vm/aot_optimizer.h" |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/ast_printer.h" | 9 #include "vm/ast_printer.h" |
| 10 #include "vm/branch_optimizer.h" | 10 #include "vm/branch_optimizer.h" |
| (...skipping 1995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2006 // Collect all instance fields that are loaded in the graph and | 2006 // Collect all instance fields that are loaded in the graph and |
| 2007 // have non-generic type feedback attached to them that can | 2007 // have non-generic type feedback attached to them that can |
| 2008 // potentially affect optimizations. | 2008 // potentially affect optimizations. |
| 2009 if (optimized()) { | 2009 if (optimized()) { |
| 2010 #ifndef PRODUCT | 2010 #ifndef PRODUCT |
| 2011 TimelineDurationScope tds(thread(), | 2011 TimelineDurationScope tds(thread(), |
| 2012 compiler_timeline, | 2012 compiler_timeline, |
| 2013 "OptimizationPasses"); | 2013 "OptimizationPasses"); |
| 2014 #endif // !PRODUCT | 2014 #endif // !PRODUCT |
| 2015 inline_id_to_function.Add(&function); | 2015 inline_id_to_function.Add(&function); |
| 2016 inline_id_to_token_pos.Add(function.token_pos()); | 2016 // We do not add the token position now because we don't know the |
| 2017 // position of the inlined call until later. A side effect of this |
| 2018 // is that the length of |inline_id_to_function| is always larger |
| 2019 // than the length of |inline_id_to_token_pos| by one. |
| 2020 // Top scope function has no caller (-1). We do this because we expect |
| 2021 // all token positions to be at an inlined call. |
| 2017 // Top scope function has no caller (-1). | 2022 // Top scope function has no caller (-1). |
| 2018 caller_inline_id.Add(-1); | 2023 caller_inline_id.Add(-1); |
| 2019 CSTAT_TIMER_SCOPE(thread(), graphoptimizer_timer); | 2024 CSTAT_TIMER_SCOPE(thread(), graphoptimizer_timer); |
| 2020 | 2025 |
| 2021 AotOptimizer optimizer(flow_graph, | 2026 AotOptimizer optimizer(flow_graph, |
| 2022 use_speculative_inlining, | 2027 use_speculative_inlining, |
| 2023 &inlining_black_list); | 2028 &inlining_black_list); |
| 2024 optimizer.PopulateWithICData(); | 2029 optimizer.PopulateWithICData(); |
| 2025 | 2030 |
| 2026 optimizer.ApplyClassIds(); | 2031 optimizer.ApplyClassIds(); |
| (...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2535 CompilationPipeline::New(thread->zone(), function); | 2540 CompilationPipeline::New(thread->zone(), function); |
| 2536 | 2541 |
| 2537 ASSERT(FLAG_precompiled_mode); | 2542 ASSERT(FLAG_precompiled_mode); |
| 2538 const bool optimized = function.IsOptimizable(); // False for natives. | 2543 const bool optimized = function.IsOptimizable(); // False for natives. |
| 2539 return PrecompileFunctionHelper(pipeline, function, optimized); | 2544 return PrecompileFunctionHelper(pipeline, function, optimized); |
| 2540 } | 2545 } |
| 2541 | 2546 |
| 2542 #endif // DART_PRECOMPILER | 2547 #endif // DART_PRECOMPILER |
| 2543 | 2548 |
| 2544 } // namespace dart | 2549 } // namespace dart |
| OLD | NEW |