private LiveInterval(VirtualRegister virtualRegister, SlotIndex start, SlotIndex end, IList <SlotIndex> uses, IList <SlotIndex> defs) { LiveRange = new LiveRange(start, end, uses, defs); VirtualRegister = virtualRegister; SpillValue = 0; Stage = AllocationStage.Initial; ForceSpilled = false; NeverSpill = false; }
private LiveInterval(VirtualRegister virtualRegister, SlotIndex start, SlotIndex end, IList<SlotIndex> uses, IList<SlotIndex> defs) { LiveRange = new LiveRange(start, end, uses, defs); VirtualRegister = virtualRegister; SpillValue = 0; Stage = AllocationStage.Initial; ForceSpilled = false; NeverSpill = false; }
public IList <LiveInterval> SplitAt(SlotIndex low, SlotIndex high) { var liveRanges = LiveRange.SplitAt(low, high); var intervals = new List <LiveInterval>(liveRanges.Count); foreach (var liveRange in liveRanges) { intervals.Add(CreateSplit(liveRange)); } return(intervals); }
public LiveInterval(VirtualRegister virtualRegister, SlotIndex start, SlotIndex end) { VirtualRegister = virtualRegister; Start = start; End = end; LiveRange = new LiveRange(start, end, virtualRegister); SpillValue = 0; Stage = AllocationStage.Initial; ForceSpilled = false; NeverSpill = false; TooSmallToSplit = IsTooSmallToSplit(); }
public void LiveRangeTest() { var basicBlocks = CreateBasicBlockInstructionSet(); GreedyRegisterAllocator.NumberInstructions(basicBlocks); var liveRange = new LiveRange( new SlotIndex(basicBlocks[0].First), new SlotIndex(basicBlocks[0].Last), new List<SlotIndex>(), new List<SlotIndex>() ); Assert.True(liveRange.IsEmpty); //liveRange.SplitAt(basicBlocks.) }
private LiveInterval CreateSplit(LiveRange liveRange) { return new LiveInterval(VirtualRegister, liveRange.Start, liveRange.End, LiveRange.UsePositions, LiveRange.DefPositions); }
private LiveInterval CreateSplit(LiveRange liveRange) { return(new LiveInterval(VirtualRegister, liveRange.Start, liveRange.End, LiveRange.UsePositions, LiveRange.DefPositions)); }
public override string ToString() { return(VirtualRegister.ToString() + " between " + LiveRange.ToString()); }
public bool Intersects(LiveInterval other) { return(LiveRange.Intersects(other.LiveRange)); }
public bool IsAdjacent(LiveInterval other) { return(LiveRange.IsAdjacent(other.LiveRange)); }
public bool Contains(SlotIndex start) { return(LiveRange.Contains(start)); }
public bool Intersects(SlotIndex start, SlotIndex end) { return(LiveRange.Intersects(start, end)); }
public bool IsAdjacent(SlotIndex start, SlotIndex end) { return(LiveRange.IsAdjacent(start, end)); }
private LiveInterval CreateSplit(LiveRange liveRange) { return(new LiveInterval(VirtualRegister, liveRange.Start, liveRange.End)); }