| 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 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 private: | 258 private: |
| 259 Label block_label_; | 259 Label block_label_; |
| 260 | 260 |
| 261 Label* jump_label_; | 261 Label* jump_label_; |
| 262 Label* next_nonempty_label_; | 262 Label* next_nonempty_label_; |
| 263 | 263 |
| 264 bool is_marked_; | 264 bool is_marked_; |
| 265 }; | 265 }; |
| 266 | 266 |
| 267 public: | 267 public: |
| 268 FlowGraphCompiler(Assembler* assembler, | 268 FlowGraphCompiler( |
| 269 FlowGraph* flow_graph, | 269 Assembler* assembler, |
| 270 bool is_optimizing); | 270 FlowGraph* flow_graph, |
| 271 bool is_optimizing, |
| 272 const GrowableArray<const Function*>& inline_id_to_function); |
| 271 | 273 |
| 272 ~FlowGraphCompiler(); | 274 ~FlowGraphCompiler(); |
| 273 | 275 |
| 274 static bool SupportsUnboxedDoubles(); | 276 static bool SupportsUnboxedDoubles(); |
| 275 static bool SupportsUnboxedMints(); | 277 static bool SupportsUnboxedMints(); |
| 276 static bool SupportsSinCos(); | 278 static bool SupportsSinCos(); |
| 277 static bool SupportsUnboxedSimd128(); | 279 static bool SupportsUnboxedSimd128(); |
| 278 | 280 |
| 279 // Accessors. | 281 // Accessors. |
| 280 Assembler* assembler() const { return assembler_; } | 282 Assembler* assembler() const { return assembler_; } |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 intptr_t num_args_tested); | 514 intptr_t num_args_tested); |
| 513 | 515 |
| 514 const ZoneGrowableArray<const ICData*>& deopt_id_to_ic_data() const { | 516 const ZoneGrowableArray<const ICData*>& deopt_id_to_ic_data() const { |
| 515 return *deopt_id_to_ic_data_; | 517 return *deopt_id_to_ic_data_; |
| 516 } | 518 } |
| 517 | 519 |
| 518 Isolate* isolate() const { return isolate_; } | 520 Isolate* isolate() const { return isolate_; } |
| 519 | 521 |
| 520 void AddStubCallTarget(const Code& code); | 522 void AddStubCallTarget(const Code& code); |
| 521 | 523 |
| 524 const Array& inlined_code_intervals() const { |
| 525 ASSERT(inlined_code_intervals_ != NULL); |
| 526 return *inlined_code_intervals_; |
| 527 } |
| 528 |
| 522 private: | 529 private: |
| 523 friend class CheckStackOverflowSlowPath; // For pending_deoptimization_env_. | 530 friend class CheckStackOverflowSlowPath; // For pending_deoptimization_env_. |
| 524 | 531 |
| 525 void EmitFrameEntry(); | 532 void EmitFrameEntry(); |
| 526 | 533 |
| 527 void AddStaticCallTarget(const Function& function); | 534 void AddStaticCallTarget(const Function& function); |
| 528 | 535 |
| 529 void GenerateDeferredCode(); | 536 void GenerateDeferredCode(); |
| 530 | 537 |
| 531 void EmitInstructionPrologue(Instruction* instr); | 538 void EmitInstructionPrologue(Instruction* instr); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 667 // that should be used when deoptimizing we store it in this variable. | 674 // that should be used when deoptimizing we store it in this variable. |
| 668 // In future AddDeoptStub should be moved out of the instruction template. | 675 // In future AddDeoptStub should be moved out of the instruction template. |
| 669 Environment* pending_deoptimization_env_; | 676 Environment* pending_deoptimization_env_; |
| 670 | 677 |
| 671 intptr_t entry_patch_pc_offset_; | 678 intptr_t entry_patch_pc_offset_; |
| 672 intptr_t patch_code_pc_offset_; | 679 intptr_t patch_code_pc_offset_; |
| 673 intptr_t lazy_deopt_pc_offset_; | 680 intptr_t lazy_deopt_pc_offset_; |
| 674 | 681 |
| 675 ZoneGrowableArray<const ICData*>* deopt_id_to_ic_data_; | 682 ZoneGrowableArray<const ICData*>* deopt_id_to_ic_data_; |
| 676 | 683 |
| 684 const Array* inlined_code_intervals_; |
| 685 const GrowableArray<const Function*>& inline_id_to_function_; |
| 686 |
| 677 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); | 687 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); |
| 678 }; | 688 }; |
| 679 | 689 |
| 680 } // namespace dart | 690 } // namespace dart |
| 681 | 691 |
| 682 #endif // VM_FLOW_GRAPH_COMPILER_H_ | 692 #endif // VM_FLOW_GRAPH_COMPILER_H_ |
| OLD | NEW |