| 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 #ifndef VM_FLOW_GRAPH_COMPILER_H_ | 5 #ifndef VM_FLOW_GRAPH_COMPILER_H_ |
| 6 #define VM_FLOW_GRAPH_COMPILER_H_ | 6 #define VM_FLOW_GRAPH_COMPILER_H_ |
| 7 | 7 |
| 8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
| 9 #include "vm/assembler.h" | 9 #include "vm/assembler.h" |
| 10 #include "vm/code_descriptors.h" | 10 #include "vm/code_descriptors.h" |
| (...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 465 Register array, | 465 Register array, |
| 466 Register index); | 466 Register index); |
| 467 | 467 |
| 468 // Returns 'sorted' array in decreasing count order. | 468 // Returns 'sorted' array in decreasing count order. |
| 469 static void SortICDataByCount(const ICData& ic_data, | 469 static void SortICDataByCount(const ICData& ic_data, |
| 470 GrowableArray<CidTarget>* sorted); | 470 GrowableArray<CidTarget>* sorted); |
| 471 | 471 |
| 472 private: | 472 private: |
| 473 friend class CheckStackOverflowSlowPath; // For pending_deoptimization_env_. | 473 friend class CheckStackOverflowSlowPath; // For pending_deoptimization_env_. |
| 474 | 474 |
| 475 Isolate* isolate() const { return isolate_; } |
| 476 |
| 475 void EmitFrameEntry(); | 477 void EmitFrameEntry(); |
| 476 | 478 |
| 477 void AddStaticCallTarget(const Function& function); | 479 void AddStaticCallTarget(const Function& function); |
| 478 | 480 |
| 479 void GenerateDeferredCode(); | 481 void GenerateDeferredCode(); |
| 480 | 482 |
| 481 void EmitInstructionPrologue(Instruction* instr); | 483 void EmitInstructionPrologue(Instruction* instr); |
| 482 void EmitInstructionEpilogue(Instruction* instr); | 484 void EmitInstructionEpilogue(Instruction* instr); |
| 483 | 485 |
| 484 // Emit code to load a Value into register 'dst'. | 486 // Emit code to load a Value into register 'dst'. |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 | 569 |
| 568 void CompactBlock(BlockEntryInstr* block); | 570 void CompactBlock(BlockEntryInstr* block); |
| 569 void CompactBlocks(); | 571 void CompactBlocks(); |
| 570 | 572 |
| 571 bool IsListClass(const Class& cls) const { | 573 bool IsListClass(const Class& cls) const { |
| 572 return cls.raw() == list_class_.raw(); | 574 return cls.raw() == list_class_.raw(); |
| 573 } | 575 } |
| 574 | 576 |
| 575 void EmitSourceLine(Instruction* instr); | 577 void EmitSourceLine(Instruction* instr); |
| 576 | 578 |
| 577 class Assembler* assembler_; | 579 Isolate* isolate_; |
| 580 Assembler* assembler_; |
| 578 const ParsedFunction& parsed_function_; | 581 const ParsedFunction& parsed_function_; |
| 579 const FlowGraph& flow_graph_; | 582 const FlowGraph& flow_graph_; |
| 580 const GrowableArray<BlockEntryInstr*>& block_order_; | 583 const GrowableArray<BlockEntryInstr*>& block_order_; |
| 581 | 584 |
| 582 // Compiler specific per-block state. Indexed by postorder block number | 585 // Compiler specific per-block state. Indexed by postorder block number |
| 583 // for convenience. This is not the block's index in the block order, | 586 // for convenience. This is not the block's index in the block order, |
| 584 // which is reverse postorder. | 587 // which is reverse postorder. |
| 585 BlockEntryInstr* current_block_; | 588 BlockEntryInstr* current_block_; |
| 586 ExceptionHandlerList* exception_handlers_list_; | 589 ExceptionHandlerList* exception_handlers_list_; |
| 587 DescriptorList* pc_descriptors_list_; | 590 DescriptorList* pc_descriptors_list_; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 608 // that should be used when deoptimizing we store it in this variable. | 611 // that should be used when deoptimizing we store it in this variable. |
| 609 // In future AddDeoptStub should be moved out of the instruction template. | 612 // In future AddDeoptStub should be moved out of the instruction template. |
| 610 Environment* pending_deoptimization_env_; | 613 Environment* pending_deoptimization_env_; |
| 611 | 614 |
| 612 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); | 615 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); |
| 613 }; | 616 }; |
| 614 | 617 |
| 615 } // namespace dart | 618 } // namespace dart |
| 616 | 619 |
| 617 #endif // VM_FLOW_GRAPH_COMPILER_H_ | 620 #endif // VM_FLOW_GRAPH_COMPILER_H_ |
| OLD | NEW |