Add missing "yield return" (#424)

This commit is contained in:
Marco Carvalho
2024-12-22 02:28:31 -03:00
committed by GitHub
parent 67ec10feea
commit decd37ce6d
7 changed files with 54 additions and 95 deletions

View File

@ -250,25 +250,20 @@ namespace Ryujinx.Cpu.Jit
{
if (size == 0)
{
return Enumerable.Empty<HostMemoryRange>();
yield break;
}
var guestRegions = GetPhysicalRegionsImpl(va, size);
if (guestRegions == null)
{
return null;
yield break;
}
var regions = new HostMemoryRange[guestRegions.Count];
for (int i = 0; i < regions.Length; i++)
foreach (var guestRegion in guestRegions)
{
var guestRegion = guestRegions[i];
nint pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
regions[i] = new HostMemoryRange((nuint)(ulong)pointer, guestRegion.Size);
yield return new HostMemoryRange((nuint)(ulong)pointer, guestRegion.Size);
}
return regions;
}
/// <inheritdoc/>
@ -276,23 +271,24 @@ namespace Ryujinx.Cpu.Jit
{
if (size == 0)
{
return Enumerable.Empty<MemoryRange>();
yield break;
}
return GetPhysicalRegionsImpl(va, size);
foreach (var physicalRegion in GetPhysicalRegionsImpl(va, size))
{
yield return physicalRegion;
}
}
private List<MemoryRange> GetPhysicalRegionsImpl(ulong va, ulong size)
private IEnumerable<MemoryRange> GetPhysicalRegionsImpl(ulong va, ulong size)
{
if (!ValidateAddress(va) || !ValidateAddressAndSize(va, size))
{
return null;
yield break;
}
int pages = GetPagesCount(va, (uint)size, out va);
var regions = new List<MemoryRange>();
ulong regionStart = GetPhysicalAddressInternal(va);
ulong regionSize = PageSize;
@ -300,14 +296,14 @@ namespace Ryujinx.Cpu.Jit
{
if (!ValidateAddress(va + PageSize))
{
return null;
yield break;
}
ulong newPa = GetPhysicalAddressInternal(va + PageSize);
if (GetPhysicalAddressInternal(va) + PageSize != newPa)
{
regions.Add(new MemoryRange(regionStart, regionSize));
yield return new MemoryRange(regionStart, regionSize);
regionStart = newPa;
regionSize = 0;
}
@ -316,9 +312,7 @@ namespace Ryujinx.Cpu.Jit
regionSize += PageSize;
}
regions.Add(new MemoryRange(regionStart, regionSize));
return regions;
yield return new MemoryRange(regionStart, regionSize);
}
/// <inheritdoc/>