| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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_INTERMEDIATE_LANGUAGE_H_ | 5 #ifndef VM_INTERMEDIATE_LANGUAGE_H_ |
| 6 #define VM_INTERMEDIATE_LANGUAGE_H_ | 6 #define VM_INTERMEDIATE_LANGUAGE_H_ |
| 7 | 7 |
| 8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
| 9 #include "vm/ast.h" | 9 #include "vm/ast.h" |
| 10 #include "vm/growable_array.h" | 10 #include "vm/growable_array.h" |
| (...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 791 virtual Instruction* Canonicalize(FlowGraph* flow_graph); | 791 virtual Instruction* Canonicalize(FlowGraph* flow_graph); |
| 792 | 792 |
| 793 // Insert this instruction before 'next' after use lists are computed. | 793 // Insert this instruction before 'next' after use lists are computed. |
| 794 // Instructions cannot be inserted before a block entry or any other | 794 // Instructions cannot be inserted before a block entry or any other |
| 795 // instruction without a previous instruction. | 795 // instruction without a previous instruction. |
| 796 void InsertBefore(Instruction* next) { InsertAfter(next->previous()); } | 796 void InsertBefore(Instruction* next) { InsertAfter(next->previous()); } |
| 797 | 797 |
| 798 // Insert this instruction after 'prev' after use lists are computed. | 798 // Insert this instruction after 'prev' after use lists are computed. |
| 799 void InsertAfter(Instruction* prev); | 799 void InsertAfter(Instruction* prev); |
| 800 | 800 |
| 801 // Append an instruction to the current one and return the tail. |
| 802 // This function updated def-use chains of the newly appended |
| 803 // instruction. |
| 804 Instruction* AppendInstruction(Instruction* tail); |
| 805 |
| 801 // Returns true if CSE and LICM are allowed for this instruction. | 806 // Returns true if CSE and LICM are allowed for this instruction. |
| 802 virtual bool AllowsCSE() const { | 807 virtual bool AllowsCSE() const { |
| 803 return false; | 808 return false; |
| 804 } | 809 } |
| 805 | 810 |
| 806 // Returns set of effects created by this instruction. | 811 // Returns set of effects created by this instruction. |
| 807 virtual EffectSet Effects() const = 0; | 812 virtual EffectSet Effects() const = 0; |
| 808 | 813 |
| 809 // Returns set of effects that affect this instruction. | 814 // Returns set of effects that affect this instruction. |
| 810 virtual EffectSet Dependencies() const { | 815 virtual EffectSet Dependencies() const { |
| (...skipping 5594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6405 ForwardInstructionIterator* current_iterator_; | 6410 ForwardInstructionIterator* current_iterator_; |
| 6406 | 6411 |
| 6407 private: | 6412 private: |
| 6408 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); | 6413 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); |
| 6409 }; | 6414 }; |
| 6410 | 6415 |
| 6411 | 6416 |
| 6412 } // namespace dart | 6417 } // namespace dart |
| 6413 | 6418 |
| 6414 #endif // VM_INTERMEDIATE_LANGUAGE_H_ | 6419 #endif // VM_INTERMEDIATE_LANGUAGE_H_ |
| OLD | NEW |