mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-07-25 06:17:10 +02:00
[Ryujinx.Memory] Address dotnet-format issues (#5386)
* dotnet format style --severity info Some changes were manually reverted. * dotnet format analyzers --serverity info Some changes have been minimally adapted. * Silence dotnet format IDE0059 warnings * Address or silence dotnet format IDE1006 warnings * Address dotnet format CA1816 warnings * Address or silence dotnet format CA1069 warnings * Address remaining dotnet format analyzer warnings * Address review comments * Address most dotnet format whitespace warnings * Apply dotnet format whitespace formatting A few of them have been manually reverted and the corresponding warning was silenced * Format if-blocks correctly * Another rebase, another dotnet format run * Run dotnet format after rebase and remove unused usings - analyzers - style - whitespace * Add comments to disabled warnings * Simplify properties and array initialization, Use const when possible, Remove trailing commas * Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas" This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e. * dotnet format whitespace after rebase * Address review feedback * Assign Decommit to ReplacePlaceholder * Run final dotnet format pass * Organize imports again * Add trailing commas * Add missing newline
This commit is contained in:
parent
46b7c905f5
commit
0a75b73fa4
25 changed files with 98 additions and 66 deletions
|
@ -21,7 +21,7 @@ namespace Ryujinx.Memory.Tracking
|
|||
/// This lock must be obtained when traversing or updating the region-handle hierarchy.
|
||||
/// It is not required when reading dirty flags.
|
||||
/// </summary>
|
||||
internal object TrackingLock = new object();
|
||||
internal object TrackingLock = new();
|
||||
|
||||
/// <summary>
|
||||
/// Create a new tracking structure for the given "physical" memory block,
|
||||
|
@ -114,7 +114,7 @@ namespace Ryujinx.Memory.Tracking
|
|||
/// <returns>A list of virtual regions within the given range</returns>
|
||||
internal List<VirtualRegion> GetVirtualRegionsForHandle(ulong va, ulong size)
|
||||
{
|
||||
List<VirtualRegion> result = new List<VirtualRegion>();
|
||||
List<VirtualRegion> result = new();
|
||||
_virtualRegions.GetOrAddRegions(result, va, size, (va, size) => new VirtualRegion(this, va, size));
|
||||
|
||||
return result;
|
||||
|
@ -172,7 +172,7 @@ namespace Ryujinx.Memory.Tracking
|
|||
lock (TrackingLock)
|
||||
{
|
||||
bool mapped = _memoryManager.IsRangeMapped(address, size);
|
||||
RegionHandle handle = new RegionHandle(this, paAddress, paSize, address, size, id, mapped);
|
||||
RegionHandle handle = new(this, paAddress, paSize, address, size, id, mapped);
|
||||
|
||||
return handle;
|
||||
}
|
||||
|
@ -194,7 +194,7 @@ namespace Ryujinx.Memory.Tracking
|
|||
lock (TrackingLock)
|
||||
{
|
||||
bool mapped = _memoryManager.IsRangeMapped(address, size);
|
||||
RegionHandle handle = new RegionHandle(this, paAddress, paSize, address, size, bitmap, bit, id, mapped);
|
||||
RegionHandle handle = new(this, paAddress, paSize, address, size, bitmap, bit, id, mapped);
|
||||
|
||||
return handle;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading;
|
||||
|
@ -21,11 +22,11 @@ namespace Ryujinx.Memory.Tracking
|
|||
private readonly ulong Granularity;
|
||||
private readonly ulong Size;
|
||||
|
||||
private ConcurrentBitmap _dirtyBitmap;
|
||||
private readonly ConcurrentBitmap _dirtyBitmap;
|
||||
|
||||
private int _sequenceNumber;
|
||||
private BitMap _sequenceNumberBitmap;
|
||||
private BitMap _dirtyCheckedBitmap;
|
||||
private readonly BitMap _sequenceNumberBitmap;
|
||||
private readonly BitMap _dirtyCheckedBitmap;
|
||||
private int _uncheckedHandles;
|
||||
|
||||
public bool Dirty { get; private set; } = true;
|
||||
|
@ -54,7 +55,7 @@ namespace Ryujinx.Memory.Tracking
|
|||
// It is assumed that the provided handles do not overlap, in order, are on page boundaries,
|
||||
// and don't extend past the requested range.
|
||||
|
||||
foreach (RegionHandle handle in handles)
|
||||
foreach (RegionHandle handle in handles.Cast<RegionHandle>())
|
||||
{
|
||||
int startIndex = (int)((handle.RealAddress - address) / granularity);
|
||||
|
||||
|
@ -406,6 +407,8 @@ namespace Ryujinx.Memory.Tracking
|
|||
|
||||
public void Dispose()
|
||||
{
|
||||
GC.SuppressFinalize(this);
|
||||
|
||||
foreach (var handle in _handles)
|
||||
{
|
||||
handle.Dispose();
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection.Metadata;
|
||||
using System.Threading;
|
||||
|
||||
namespace Ryujinx.Memory.Tracking
|
||||
|
@ -50,7 +49,7 @@ namespace Ryujinx.Memory.Tracking
|
|||
|
||||
internal IMultiRegionHandle Parent { get; set; }
|
||||
|
||||
private event Action _onDirty;
|
||||
private event Action OnDirty;
|
||||
|
||||
private readonly object _preActionLock = new();
|
||||
private RegionSignal _preAction; // Action to perform before a read or write. This will block the memory access.
|
||||
|
@ -269,7 +268,7 @@ namespace Ryujinx.Memory.Tracking
|
|||
Dirty = true;
|
||||
if (!oldDirty)
|
||||
{
|
||||
_onDirty?.Invoke();
|
||||
OnDirty?.Invoke();
|
||||
}
|
||||
Parent?.SignalWrite();
|
||||
}
|
||||
|
@ -311,7 +310,10 @@ namespace Ryujinx.Memory.Tracking
|
|||
/// <param name="consecutiveCheck">True if this reprotect is the result of consecutive dirty checks</param>
|
||||
public void Reprotect(bool asDirty, bool consecutiveCheck = false)
|
||||
{
|
||||
if (_volatile) return;
|
||||
if (_volatile)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Dirty = asDirty;
|
||||
|
||||
|
@ -403,7 +405,7 @@ namespace Ryujinx.Memory.Tracking
|
|||
/// <param name="action">Action to call on dirty</param>
|
||||
public void RegisterDirtyEvent(Action action)
|
||||
{
|
||||
_onDirty += action;
|
||||
OnDirty += action;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -461,6 +463,8 @@ namespace Ryujinx.Memory.Tracking
|
|||
{
|
||||
ObjectDisposedException.ThrowIf(_disposed, this);
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
|
||||
_disposed = true;
|
||||
|
||||
lock (_tracking.TrackingLock)
|
||||
|
|
|
@ -17,7 +17,7 @@ namespace Ryujinx.Memory.Tracking
|
|||
private readonly ulong _address;
|
||||
private readonly ulong _granularity;
|
||||
private readonly ulong _size;
|
||||
private MemoryTracking _tracking;
|
||||
private readonly MemoryTracking _tracking;
|
||||
private readonly int _id;
|
||||
|
||||
public bool Dirty { get; private set; } = true;
|
||||
|
@ -271,6 +271,8 @@ namespace Ryujinx.Memory.Tracking
|
|||
|
||||
public void Dispose()
|
||||
{
|
||||
GC.SuppressFinalize(this);
|
||||
|
||||
foreach (var handle in _handles)
|
||||
{
|
||||
handle?.Dispose();
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace Ryujinx.Memory.Tracking
|
|||
/// </summary>
|
||||
class VirtualRegion : AbstractRegion
|
||||
{
|
||||
public List<RegionHandle> Handles = new List<RegionHandle>();
|
||||
public List<RegionHandle> Handles = new();
|
||||
|
||||
private readonly MemoryTracking _tracking;
|
||||
private MemoryPermission _lastPermission;
|
||||
|
@ -86,7 +86,10 @@ namespace Ryujinx.Memory.Tracking
|
|||
foreach (var handle in Handles)
|
||||
{
|
||||
result &= handle.RequiredPermission;
|
||||
if (result == 0) return result;
|
||||
if (result == 0)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -128,7 +131,7 @@ namespace Ryujinx.Memory.Tracking
|
|||
|
||||
public override INonOverlappingRange Split(ulong splitAddress)
|
||||
{
|
||||
VirtualRegion newRegion = new VirtualRegion(_tracking, splitAddress, EndAddress - splitAddress, _lastPermission);
|
||||
VirtualRegion newRegion = new(_tracking, splitAddress, EndAddress - splitAddress, _lastPermission);
|
||||
Size = splitAddress - Address;
|
||||
|
||||
// The new region inherits all of our parents.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue