| 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/compiler.h" | 5 #include "vm/compiler.h" |
| 6 | 6 |
| 7 #include "vm/assembler.h" | 7 #include "vm/assembler.h" |
| 8 | 8 |
| 9 #include "vm/ast_printer.h" | 9 #include "vm/ast_printer.h" |
| 10 #include "vm/block_scheduler.h" | 10 #include "vm/block_scheduler.h" |
| (...skipping 777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 result->ClearFieldInnvalidationGen(); | 788 result->ClearFieldInnvalidationGen(); |
| 789 } | 789 } |
| 790 if (!parsed_function->HasDeferredPrefixes()) { | 790 if (!parsed_function->HasDeferredPrefixes()) { |
| 791 result->ClearPrefixInnvalidationGen(); | 791 result->ClearPrefixInnvalidationGen(); |
| 792 } | 792 } |
| 793 } else { | 793 } else { |
| 794 const bool is_osr = osr_id != Compiler::kNoOSRDeoptId; | 794 const bool is_osr = osr_id != Compiler::kNoOSRDeoptId; |
| 795 function.InstallOptimizedCode(code, is_osr); | 795 function.InstallOptimizedCode(code, is_osr); |
| 796 } | 796 } |
| 797 | 797 |
| 798 // TODO(srdjan): In background compilation, verify that CHA has not | 798 // TODO(srdjan): In background compilation, verify that CHA and field |
| 799 // been invalidated in the meantime. | 799 // guards have not been invalidated in the meantime. |
| 800 // Register code with the classes it depends on because of CHA. | 800 // Register code with the classes it depends on because of CHA and |
| 801 for (intptr_t i = 0; | 801 // fields it depends on because of store guards, unless we cannot |
| 802 i < thread->cha()->leaf_classes().length(); | 802 // deopt. |
| 803 ++i) { | 803 if (Compiler::allow_recompilation()) { |
| 804 thread->cha()->leaf_classes()[i]->RegisterCHACode(code); | 804 for (intptr_t i = 0; |
| 805 } | 805 i < thread->cha()->leaf_classes().length(); |
| 806 | 806 ++i) { |
| 807 for (intptr_t i = 0; | 807 thread->cha()->leaf_classes()[i]->RegisterCHACode(code); |
| 808 i < flow_graph->guarded_fields()->length(); | 808 } |
| 809 i++) { | 809 for (intptr_t i = 0; |
| 810 const Field* field = (*flow_graph->guarded_fields())[i]; | 810 i < flow_graph->guarded_fields()->length(); |
| 811 field->RegisterDependentCode(code); | 811 i++) { |
| 812 const Field* field = (*flow_graph->guarded_fields())[i]; |
| 813 field->RegisterDependentCode(code); |
| 814 } |
| 812 } | 815 } |
| 813 } else { // not optimized. | 816 } else { // not optimized. |
| 814 if (!Compiler::always_optimize() && | 817 if (!Compiler::always_optimize() && |
| 815 (function.ic_data_array() == Array::null())) { | 818 (function.ic_data_array() == Array::null())) { |
| 816 function.SaveICDataMap( | 819 function.SaveICDataMap( |
| 817 graph_compiler.deopt_id_to_ic_data(), | 820 graph_compiler.deopt_id_to_ic_data(), |
| 818 Array::Handle(zone, graph_compiler.edge_counters_array())); | 821 Array::Handle(zone, graph_compiler.edge_counters_array())); |
| 819 } | 822 } |
| 820 function.set_unoptimized_code(code); | 823 function.set_unoptimized_code(code); |
| 821 function.AttachCode(code); | 824 function.AttachCode(code); |
| (...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1824 isolate->set_background_compiler(task); | 1827 isolate->set_background_compiler(task); |
| 1825 start_task = true; | 1828 start_task = true; |
| 1826 } | 1829 } |
| 1827 } | 1830 } |
| 1828 if (start_task) { | 1831 if (start_task) { |
| 1829 Dart::thread_pool()->Run(isolate->background_compiler()); | 1832 Dart::thread_pool()->Run(isolate->background_compiler()); |
| 1830 } | 1833 } |
| 1831 } | 1834 } |
| 1832 | 1835 |
| 1833 } // namespace dart | 1836 } // namespace dart |
| OLD | NEW |