| 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 virtual void ParseFunction(ParsedFunction* parsed_function) { | 89 virtual void ParseFunction(ParsedFunction* parsed_function) { |
| 90 Parser::ParseFunction(parsed_function); | 90 Parser::ParseFunction(parsed_function); |
| 91 parsed_function->AllocateVariables(); | 91 parsed_function->AllocateVariables(); |
| 92 } | 92 } |
| 93 | 93 |
| 94 virtual FlowGraph* BuildFlowGraph( | 94 virtual FlowGraph* BuildFlowGraph( |
| 95 ParsedFunction* parsed_function, | 95 ParsedFunction* parsed_function, |
| 96 const ZoneGrowableArray<const ICData*>& ic_data_array, | 96 const ZoneGrowableArray<const ICData*>& ic_data_array, |
| 97 intptr_t osr_id) { | 97 intptr_t osr_id) { |
| 98 // Build the flow graph. | 98 // Build the flow graph. |
| 99 FlowGraphBuilder builder(parsed_function, | 99 FlowGraphBuilder builder(*parsed_function, |
| 100 ic_data_array, | 100 ic_data_array, |
| 101 NULL, // NULL = not inlining. | 101 NULL, // NULL = not inlining. |
| 102 osr_id); | 102 osr_id); |
| 103 | 103 |
| 104 return builder.BuildGraph(); | 104 return builder.BuildGraph(); |
| 105 } | 105 } |
| 106 | 106 |
| 107 virtual void FinalizeCompilation() { } | 107 virtual void FinalizeCompilation() { } |
| 108 }; | 108 }; |
| 109 | 109 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 127 RegExpEngine::CompilationResult result = | 127 RegExpEngine::CompilationResult result = |
| 128 RegExpEngine::Compile(parsed_function->regexp_compile_data(), | 128 RegExpEngine::Compile(parsed_function->regexp_compile_data(), |
| 129 parsed_function, | 129 parsed_function, |
| 130 ic_data_array); | 130 ic_data_array); |
| 131 backtrack_goto_ = result.backtrack_goto; | 131 backtrack_goto_ = result.backtrack_goto; |
| 132 | 132 |
| 133 // Allocate variables now that we know the number of locals. | 133 // Allocate variables now that we know the number of locals. |
| 134 parsed_function->AllocateIrregexpVariables(result.num_stack_locals); | 134 parsed_function->AllocateIrregexpVariables(result.num_stack_locals); |
| 135 | 135 |
| 136 // Build the flow graph. | 136 // Build the flow graph. |
| 137 FlowGraphBuilder builder(parsed_function, | 137 FlowGraphBuilder builder(*parsed_function, |
| 138 ic_data_array, | 138 ic_data_array, |
| 139 NULL, // NULL = not inlining. | 139 NULL, // NULL = not inlining. |
| 140 osr_id); | 140 osr_id); |
| 141 | 141 |
| 142 return new(isolate_) FlowGraph(parsed_function, | 142 return new(isolate_) FlowGraph(*parsed_function, |
| 143 result.graph_entry, | 143 result.graph_entry, |
| 144 result.num_blocks); | 144 result.num_blocks); |
| 145 } | 145 } |
| 146 | 146 |
| 147 virtual void FinalizeCompilation() { | 147 virtual void FinalizeCompilation() { |
| 148 backtrack_goto_->ComputeOffsetTable(isolate_); | 148 backtrack_goto_->ComputeOffsetTable(isolate_); |
| 149 } | 149 } |
| 150 | 150 |
| 151 private: | 151 private: |
| 152 IndirectGotoInstr* backtrack_goto_; | 152 IndirectGotoInstr* backtrack_goto_; |
| (...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 679 FlowGraphAllocator allocator(*flow_graph); | 679 FlowGraphAllocator allocator(*flow_graph); |
| 680 allocator.AllocateRegisters(); | 680 allocator.AllocateRegisters(); |
| 681 if (reorder_blocks) block_scheduler.ReorderBlocks(); | 681 if (reorder_blocks) block_scheduler.ReorderBlocks(); |
| 682 | 682 |
| 683 if (print_flow_graph) { | 683 if (print_flow_graph) { |
| 684 FlowGraphPrinter::PrintGraph("After Optimizations", flow_graph); | 684 FlowGraphPrinter::PrintGraph("After Optimizations", flow_graph); |
| 685 } | 685 } |
| 686 } | 686 } |
| 687 | 687 |
| 688 Assembler assembler(use_far_branches); | 688 Assembler assembler(use_far_branches); |
| 689 FlowGraphCompiler graph_compiler( | 689 FlowGraphCompiler graph_compiler(&assembler, flow_graph, |
| 690 &assembler, flow_graph, optimized, inline_id_to_function); | 690 *parsed_function, optimized, |
| 691 inline_id_to_function); |
| 691 { | 692 { |
| 692 TimerScope timer(FLAG_compiler_stats, | 693 TimerScope timer(FLAG_compiler_stats, |
| 693 &CompilerStats::graphcompiler_timer, | 694 &CompilerStats::graphcompiler_timer, |
| 694 isolate); | 695 isolate); |
| 695 graph_compiler.CompileGraph(); | 696 graph_compiler.CompileGraph(); |
| 696 pipeline->FinalizeCompilation(); | 697 pipeline->FinalizeCompilation(); |
| 697 } | 698 } |
| 698 { | 699 { |
| 699 TimerScope timer(FLAG_compiler_stats, | 700 TimerScope timer(FLAG_compiler_stats, |
| 700 &CompilerStats::codefinalizer_timer, | 701 &CompilerStats::codefinalizer_timer, |
| (...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1205 const Object& result = | 1206 const Object& result = |
| 1206 PassiveObject::Handle(isolate->object_store()->sticky_error()); | 1207 PassiveObject::Handle(isolate->object_store()->sticky_error()); |
| 1207 isolate->object_store()->clear_sticky_error(); | 1208 isolate->object_store()->clear_sticky_error(); |
| 1208 return result.raw(); | 1209 return result.raw(); |
| 1209 } | 1210 } |
| 1210 UNREACHABLE(); | 1211 UNREACHABLE(); |
| 1211 return Object::null(); | 1212 return Object::null(); |
| 1212 } | 1213 } |
| 1213 | 1214 |
| 1214 } // namespace dart | 1215 } // namespace dart |
| OLD | NEW |