| 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 | 
|---|