| 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_FLOW_GRAPH_H_ | 5 #ifndef VM_FLOW_GRAPH_H_ |
| 6 #define VM_FLOW_GRAPH_H_ | 6 #define VM_FLOW_GRAPH_H_ |
| 7 | 7 |
| 8 #include "vm/growable_array.h" | 8 #include "vm/growable_array.h" |
| 9 #include "vm/intermediate_language.h" | 9 #include "vm/intermediate_language.h" |
| 10 #include "vm/parser.h" | 10 #include "vm/parser.h" |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 intptr_t allocate_block_id() { return ++max_block_id_; } | 107 intptr_t allocate_block_id() { return ++max_block_id_; } |
| 108 | 108 |
| 109 GraphEntryInstr* graph_entry() const { | 109 GraphEntryInstr* graph_entry() const { |
| 110 return graph_entry_; | 110 return graph_entry_; |
| 111 } | 111 } |
| 112 | 112 |
| 113 ConstantInstr* constant_null() const { | 113 ConstantInstr* constant_null() const { |
| 114 return constant_null_; | 114 return constant_null_; |
| 115 } | 115 } |
| 116 | 116 |
| 117 ConstantInstr* constant_dead() const { |
| 118 return constant_dead_; |
| 119 } |
| 120 |
| 117 intptr_t alloc_ssa_temp_index() { return current_ssa_temp_index_++; } | 121 intptr_t alloc_ssa_temp_index() { return current_ssa_temp_index_++; } |
| 118 | 122 |
| 119 intptr_t InstructionCount() const; | 123 intptr_t InstructionCount() const; |
| 120 | 124 |
| 121 ConstantInstr* GetConstant(const Object& object); | 125 ConstantInstr* GetConstant(const Object& object); |
| 122 void AddToInitialDefinitions(Definition* defn); | 126 void AddToInitialDefinitions(Definition* defn); |
| 123 | 127 |
| 124 void InsertBefore(Instruction* next, | 128 void InsertBefore(Instruction* next, |
| 125 Instruction* instr, | 129 Instruction* instr, |
| 126 Environment* env, | 130 Environment* env, |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 262 const ParsedFunction& parsed_function_; | 266 const ParsedFunction& parsed_function_; |
| 263 const intptr_t num_copied_params_; | 267 const intptr_t num_copied_params_; |
| 264 const intptr_t num_non_copied_params_; | 268 const intptr_t num_non_copied_params_; |
| 265 const intptr_t num_stack_locals_; | 269 const intptr_t num_stack_locals_; |
| 266 GraphEntryInstr* graph_entry_; | 270 GraphEntryInstr* graph_entry_; |
| 267 GrowableArray<BlockEntryInstr*> preorder_; | 271 GrowableArray<BlockEntryInstr*> preorder_; |
| 268 GrowableArray<BlockEntryInstr*> postorder_; | 272 GrowableArray<BlockEntryInstr*> postorder_; |
| 269 GrowableArray<BlockEntryInstr*> reverse_postorder_; | 273 GrowableArray<BlockEntryInstr*> reverse_postorder_; |
| 270 GrowableArray<BlockEntryInstr*> optimized_block_order_; | 274 GrowableArray<BlockEntryInstr*> optimized_block_order_; |
| 271 ConstantInstr* constant_null_; | 275 ConstantInstr* constant_null_; |
| 276 ConstantInstr* constant_dead_; |
| 272 | 277 |
| 273 BlockEffects* block_effects_; | 278 BlockEffects* block_effects_; |
| 274 bool licm_allowed_; | 279 bool licm_allowed_; |
| 275 | 280 |
| 276 bool use_far_branches_; | 281 bool use_far_branches_; |
| 277 | 282 |
| 278 ZoneGrowableArray<BlockEntryInstr*>* loop_headers_; | 283 ZoneGrowableArray<BlockEntryInstr*>* loop_headers_; |
| 279 ZoneGrowableArray<BitVector*>* loop_invariant_loads_; | 284 ZoneGrowableArray<BitVector*>* loop_invariant_loads_; |
| 280 ZoneGrowableArray<const Field*>* guarded_fields_; | 285 ZoneGrowableArray<const Field*>* guarded_fields_; |
| 281 }; | 286 }; |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 // Per block sets of available blocks. Block A is available at the block B if | 381 // Per block sets of available blocks. Block A is available at the block B if |
| 377 // and only if A dominates B and all paths from A to B are free of side | 382 // and only if A dominates B and all paths from A to B are free of side |
| 378 // effects. | 383 // effects. |
| 379 GrowableArray<BitVector*> available_at_; | 384 GrowableArray<BitVector*> available_at_; |
| 380 }; | 385 }; |
| 381 | 386 |
| 382 | 387 |
| 383 } // namespace dart | 388 } // namespace dart |
| 384 | 389 |
| 385 #endif // VM_FLOW_GRAPH_H_ | 390 #endif // VM_FLOW_GRAPH_H_ |
| OLD | NEW |