| 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/code_generator.h" |   10 #include "vm/code_generator.h" | 
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  239       } |  239       } | 
|  240  |  240  | 
|  241       if (FLAG_range_analysis) { |  241       if (FLAG_range_analysis) { | 
|  242         // We have to perform range analysis after LICM because it |  242         // We have to perform range analysis after LICM because it | 
|  243         // optimistically moves CheckSmi through phis into loop preheaders |  243         // optimistically moves CheckSmi through phis into loop preheaders | 
|  244         // making some phis smi. |  244         // making some phis smi. | 
|  245         flow_graph->ComputeUseLists(); |  245         flow_graph->ComputeUseLists(); | 
|  246         optimizer.InferSmiRanges(); |  246         optimizer.InferSmiRanges(); | 
|  247       } |  247       } | 
|  248  |  248  | 
 |  249       // The final canonicalization pass before the code generation. | 
 |  250       optimizer.Canonicalize(); | 
 |  251  | 
|  249       // Perform register allocation on the SSA graph. |  252       // Perform register allocation on the SSA graph. | 
|  250       FlowGraphAllocator allocator(*flow_graph); |  253       FlowGraphAllocator allocator(*flow_graph); | 
|  251       allocator.AllocateRegisters(); |  254       allocator.AllocateRegisters(); | 
|  252  |  255  | 
|  253       if (FLAG_print_flow_graph || FLAG_print_flow_graph_optimized) { |  256       if (FLAG_print_flow_graph || FLAG_print_flow_graph_optimized) { | 
|  254         OS::Print("After Optimizations:\n"); |  257         OS::Print("After Optimizations:\n"); | 
|  255         FlowGraphPrinter printer(*flow_graph); |  258         FlowGraphPrinter printer(*flow_graph); | 
|  256         printer.PrintBlocks(); |  259         printer.PrintBlocks(); | 
|  257       } |  260       } | 
|  258     } |  261     } | 
| (...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  637       Object::Handle(isolate->object_store()->sticky_error()); |  640       Object::Handle(isolate->object_store()->sticky_error()); | 
|  638     isolate->object_store()->clear_sticky_error(); |  641     isolate->object_store()->clear_sticky_error(); | 
|  639     isolate->set_long_jump_base(base); |  642     isolate->set_long_jump_base(base); | 
|  640     return result.raw(); |  643     return result.raw(); | 
|  641   } |  644   } | 
|  642   UNREACHABLE(); |  645   UNREACHABLE(); | 
|  643   return Object::null(); |  646   return Object::null(); | 
|  644 } |  647 } | 
|  645  |  648  | 
|  646 }  // namespace dart |  649 }  // namespace dart | 
| OLD | NEW |