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_ALLOCATOR_H_ | 5 #ifndef VM_FLOW_GRAPH_ALLOCATOR_H_ |
6 #define VM_FLOW_GRAPH_ALLOCATOR_H_ | 6 #define VM_FLOW_GRAPH_ALLOCATOR_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 | 10 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 // It will be used later in SplitBetween heuristic that selects an | 84 // It will be used later in SplitBetween heuristic that selects an |
85 // optimal splitting position. | 85 // optimal splitting position. |
86 void DiscoverLoops(); | 86 void DiscoverLoops(); |
87 | 87 |
88 LiveRange* MakeLiveRangeForTemporary(); | 88 LiveRange* MakeLiveRangeForTemporary(); |
89 | 89 |
90 // Visit instructions in the postorder and build live ranges for | 90 // Visit instructions in the postorder and build live ranges for |
91 // all SSA values. | 91 // all SSA values. |
92 void BuildLiveRanges(); | 92 void BuildLiveRanges(); |
93 Instruction* ConnectOutgoingPhiMoves(BlockEntryInstr* block); | 93 Instruction* ConnectOutgoingPhiMoves(BlockEntryInstr* block); |
| 94 void ProcessEnvironmentUses(BlockEntryInstr* block, Instruction* current); |
94 void ProcessOneInstruction(BlockEntryInstr* block, Instruction* instr); | 95 void ProcessOneInstruction(BlockEntryInstr* block, Instruction* instr); |
95 void ConnectIncomingPhiMoves(BlockEntryInstr* block); | 96 void ConnectIncomingPhiMoves(BlockEntryInstr* block); |
96 void BlockLocation(Location loc, intptr_t from, intptr_t to); | 97 void BlockLocation(Location loc, intptr_t from, intptr_t to); |
97 | 98 |
98 // Process live ranges sorted by their start and assign registers | 99 // Process live ranges sorted by their start and assign registers |
99 // to them | 100 // to them |
100 void AllocateCPURegisters(); | 101 void AllocateCPURegisters(); |
101 void AdvanceActiveIntervals(const intptr_t start); | 102 void AdvanceActiveIntervals(const intptr_t start); |
102 | 103 |
103 // Connect split siblings over non-linear control flow edges. | 104 // Connect split siblings over non-linear control flow edges. |
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 | 460 |
460 AllocationFinger finger_; | 461 AllocationFinger finger_; |
461 | 462 |
462 DISALLOW_COPY_AND_ASSIGN(LiveRange); | 463 DISALLOW_COPY_AND_ASSIGN(LiveRange); |
463 }; | 464 }; |
464 | 465 |
465 | 466 |
466 } // namespace dart | 467 } // namespace dart |
467 | 468 |
468 #endif // VM_FLOW_GRAPH_ALLOCATOR_H_ | 469 #endif // VM_FLOW_GRAPH_ALLOCATOR_H_ |
OLD | NEW |