| Index: runtime/vm/flow_graph_allocator.h
|
| ===================================================================
|
| --- runtime/vm/flow_graph_allocator.h (revision 12765)
|
| +++ runtime/vm/flow_graph_allocator.h (working copy)
|
| @@ -33,6 +33,8 @@
|
| LiveRange* GetLiveRange(intptr_t vreg);
|
|
|
| private:
|
| + void CollectRepresentations();
|
| +
|
| // Eliminate unnecessary environments from the IL.
|
| void EliminateEnvironmentUses();
|
|
|
| @@ -191,13 +193,14 @@
|
|
|
| MoveOperands* AddMoveAt(intptr_t pos, Location to, Location from);
|
|
|
| - Location MakeRegisterLocation(intptr_t reg) {
|
| - return Location::MachineRegisterLocation(register_kind_, reg);
|
| + Location MakeRegisterLocation(intptr_t reg, Location::Representation rep) {
|
| + return Location::MachineRegisterLocation(register_kind_, reg, rep);
|
| }
|
|
|
| void PrintLiveRanges();
|
|
|
| const FlowGraph& flow_graph_;
|
| + BitVector* reps_;
|
| const GrowableArray<BlockEntryInstr*>& block_order_;
|
| const GrowableArray<BlockEntryInstr*>& postorder_;
|
|
|
| @@ -449,8 +452,9 @@
|
| // LiveRange represents a sequence of UseIntervals for a given SSA value.
|
| class LiveRange : public ZoneAllocated {
|
| public:
|
| - explicit LiveRange(intptr_t vreg)
|
| + explicit LiveRange(intptr_t vreg, Location::Representation rep)
|
| : vreg_(vreg),
|
| + representation_(rep),
|
| assigned_location_(),
|
| spill_slot_(),
|
| uses_(NULL),
|
| @@ -465,6 +469,7 @@
|
| static LiveRange* MakeTemp(intptr_t pos, Location* location_slot);
|
|
|
| intptr_t vreg() const { return vreg_; }
|
| + Location::Representation representation() const { return representation_; }
|
| LiveRange* next_sibling() const { return next_sibling_; }
|
| UsePosition* first_use() const { return uses_; }
|
| void set_first_use(UsePosition* use) { uses_ = use; }
|
| @@ -517,12 +522,14 @@
|
|
|
| private:
|
| LiveRange(intptr_t vreg,
|
| + Location::Representation rep,
|
| UsePosition* uses,
|
| UseInterval* first_use_interval,
|
| UseInterval* last_use_interval,
|
| SafepointPosition* first_safepoint,
|
| LiveRange* next_sibling)
|
| : vreg_(vreg),
|
| + representation_(rep),
|
| assigned_location_(),
|
| uses_(uses),
|
| first_use_interval_(first_use_interval),
|
| @@ -534,6 +541,7 @@
|
| }
|
|
|
| const intptr_t vreg_;
|
| + Location::Representation representation_;
|
| Location assigned_location_;
|
| Location spill_slot_;
|
|
|
|
|