Ryujinx/src/ARMeilleure/CodeGen/RegisterAllocators/LiveIntervalList.cs
TSRBerry 2989c163a8
editorconfig: Set default encoding to UTF-8 (#5793)
* editorconfig: Add default charset

* Change file encoding from UTF-8-BOM to UTF-8
2023-12-04 14:17:13 +01:00

41 lines
1004 B
C#

using System;
namespace ARMeilleure.CodeGen.RegisterAllocators
{
unsafe struct LiveIntervalList
{
private LiveInterval* _items;
private int _count;
private int _capacity;
public readonly int Count => _count;
public readonly Span<LiveInterval> Span => new(_items, _count);
public void Add(LiveInterval interval)
{
if (_count + 1 > _capacity)
{
var oldSpan = Span;
_capacity = Math.Max(4, _capacity * 2);
_items = Allocators.References.Allocate<LiveInterval>((uint)_capacity);
var newSpan = Span;
oldSpan.CopyTo(newSpan);
}
int position = interval.GetStart();
int i = _count - 1;
while (i >= 0 && _items[i].GetStart() > position)
{
_items[i + 1] = _items[i--];
}
_items[i + 1] = interval;
_count++;
}
}
}