| 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 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 263 | 263 |
| 264 bool is_marked_; | 264 bool is_marked_; |
| 265 }; | 265 }; |
| 266 | 266 |
| 267 public: | 267 public: |
| 268 FlowGraphCompiler( | 268 FlowGraphCompiler( |
| 269 Assembler* assembler, | 269 Assembler* assembler, |
| 270 FlowGraph* flow_graph, | 270 FlowGraph* flow_graph, |
| 271 const ParsedFunction& parsed_function, | 271 const ParsedFunction& parsed_function, |
| 272 bool is_optimizing, | 272 bool is_optimizing, |
| 273 const GrowableArray<const Function*>& inline_id_to_function); | 273 const GrowableArray<const Function*>& inline_id_to_function, |
| 274 const GrowableArray<intptr_t>& caller_inline_id); |
| 274 | 275 |
| 275 ~FlowGraphCompiler(); | 276 ~FlowGraphCompiler(); |
| 276 | 277 |
| 277 static bool SupportsUnboxedDoubles(); | 278 static bool SupportsUnboxedDoubles(); |
| 278 static bool SupportsUnboxedMints(); | 279 static bool SupportsUnboxedMints(); |
| 279 static bool SupportsSinCos(); | 280 static bool SupportsSinCos(); |
| 280 static bool SupportsUnboxedSimd128(); | 281 static bool SupportsUnboxedSimd128(); |
| 281 | 282 |
| 282 // Accessors. | 283 // Accessors. |
| 283 Assembler* assembler() const { return assembler_; } | 284 Assembler* assembler() const { return assembler_; } |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 521 | 522 |
| 522 Isolate* isolate() const { return isolate_; } | 523 Isolate* isolate() const { return isolate_; } |
| 523 | 524 |
| 524 void AddStubCallTarget(const Code& code); | 525 void AddStubCallTarget(const Code& code); |
| 525 | 526 |
| 526 const Array& inlined_code_intervals() const { | 527 const Array& inlined_code_intervals() const { |
| 527 ASSERT(inlined_code_intervals_ != NULL); | 528 ASSERT(inlined_code_intervals_ != NULL); |
| 528 return *inlined_code_intervals_; | 529 return *inlined_code_intervals_; |
| 529 } | 530 } |
| 530 | 531 |
| 532 RawArray* InliningIdToFunction() const; |
| 533 |
| 531 private: | 534 private: |
| 532 friend class CheckStackOverflowSlowPath; // For pending_deoptimization_env_. | 535 friend class CheckStackOverflowSlowPath; // For pending_deoptimization_env_. |
| 533 | 536 |
| 534 void EmitFrameEntry(); | 537 void EmitFrameEntry(); |
| 535 | 538 |
| 536 void AddStaticCallTarget(const Function& function); | 539 void AddStaticCallTarget(const Function& function); |
| 537 | 540 |
| 538 void GenerateDeferredCode(); | 541 void GenerateDeferredCode(); |
| 539 | 542 |
| 540 void EmitInstructionPrologue(Instruction* instr); | 543 void EmitInstructionPrologue(Instruction* instr); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 678 Environment* pending_deoptimization_env_; | 681 Environment* pending_deoptimization_env_; |
| 679 | 682 |
| 680 intptr_t entry_patch_pc_offset_; | 683 intptr_t entry_patch_pc_offset_; |
| 681 intptr_t patch_code_pc_offset_; | 684 intptr_t patch_code_pc_offset_; |
| 682 intptr_t lazy_deopt_pc_offset_; | 685 intptr_t lazy_deopt_pc_offset_; |
| 683 | 686 |
| 684 ZoneGrowableArray<const ICData*>* deopt_id_to_ic_data_; | 687 ZoneGrowableArray<const ICData*>* deopt_id_to_ic_data_; |
| 685 | 688 |
| 686 const Array* inlined_code_intervals_; | 689 const Array* inlined_code_intervals_; |
| 687 const GrowableArray<const Function*>& inline_id_to_function_; | 690 const GrowableArray<const Function*>& inline_id_to_function_; |
| 691 const GrowableArray<intptr_t>& caller_inline_id_; |
| 688 | 692 |
| 689 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); | 693 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); |
| 690 }; | 694 }; |
| 691 | 695 |
| 692 } // namespace dart | 696 } // namespace dart |
| 693 | 697 |
| 694 #endif // VM_FLOW_GRAPH_COMPILER_H_ | 698 #endif // VM_FLOW_GRAPH_COMPILER_H_ |
| OLD | NEW |