From a539303e7165cf524dc5b5750da49cb4bd4be6d6 Mon Sep 17 00:00:00 2001 From: riperiperi Date: Sat, 6 Mar 2021 23:21:53 +0000 Subject: Remove unused physical region tracking (#2085) * Remove unused physical region tracking * Update comments --- Ryujinx.Memory/Tracking/VirtualRegion.cs | 78 +------------------------------- 1 file changed, 1 insertion(+), 77 deletions(-) (limited to 'Ryujinx.Memory/Tracking/VirtualRegion.cs') diff --git a/Ryujinx.Memory/Tracking/VirtualRegion.cs b/Ryujinx.Memory/Tracking/VirtualRegion.cs index fcf2fbe0..696d3560 100644 --- a/Ryujinx.Memory/Tracking/VirtualRegion.cs +++ b/Ryujinx.Memory/Tracking/VirtualRegion.cs @@ -9,15 +9,12 @@ namespace Ryujinx.Memory.Tracking class VirtualRegion : AbstractRegion { public List Handles = new List(); - private List _physicalChildren; private readonly MemoryTracking _tracking; public VirtualRegion(MemoryTracking tracking, ulong address, ulong size) : base(address, size) { _tracking = tracking; - - UpdatePhysicalChildren(); } public override void Signal(ulong address, ulong size, bool write) @@ -30,42 +27,6 @@ namespace Ryujinx.Memory.Tracking UpdateProtection(); } - /// - /// Clears all physical children of this region. Assumes that the tracking lock has been obtained. - /// - private void ClearPhysicalChildren() - { - if (_physicalChildren != null) - { - foreach (PhysicalRegion child in _physicalChildren) - { - child.RemoveParent(this); - } - } - } - - /// - /// Updates the physical children of this region, assuming that they are clear and that the tracking lock has been obtained. - /// - private void UpdatePhysicalChildren() - { - _physicalChildren = _tracking.GetPhysicalRegionsForVirtual(Address, Size); - - foreach (PhysicalRegion child in _physicalChildren) - { - child.VirtualParents.Add(this); - } - } - - /// - /// Recalculates the physical children for this virtual region. Assumes that the tracking lock has been obtained. - /// - public void RecalculatePhysicalChildren() - { - ClearPhysicalChildren(); - UpdatePhysicalChildren(); - } - /// /// Signal that this region has been mapped or unmapped. /// @@ -98,20 +59,11 @@ namespace Ryujinx.Memory.Tracking } /// - /// Updates the protection for this virtual region, and all child physical regions. + /// Updates the protection for this virtual region. /// public void UpdateProtection() { - // Re-evaluate protection for all physical children. - _tracking.ProtectVirtualRegion(this, GetRequiredPermission()); - lock (_tracking.TrackingLock) - { - foreach (var child in _physicalChildren) - { - child.UpdateProtection(); - } - } } /// @@ -120,7 +72,6 @@ namespace Ryujinx.Memory.Tracking /// Handle to remove public void RemoveHandle(RegionHandle handle) { - bool removedRegions = false; lock (_tracking.TrackingLock) { Handles.Remove(handle); @@ -128,41 +79,14 @@ namespace Ryujinx.Memory.Tracking if (Handles.Count == 0) { _tracking.RemoveVirtual(this); - foreach (var child in _physicalChildren) - { - removedRegions |= child.RemoveParent(this); - } } } - - if (removedRegions) - { - // The first lock will unprotect any regions that have been removed. This second lock will remove them. - lock (_tracking.TrackingLock) - { - foreach (var child in _physicalChildren) - { - child.TryDelete(); - } - } - } - } - - /// - /// Add a child physical region to this virtual region. Assumes that the tracking lock has been obtained. - /// - /// Physical region to add as a child - public void AddChild(PhysicalRegion region) - { - _physicalChildren.Add(region); } public override INonOverlappingRange Split(ulong splitAddress) { - ClearPhysicalChildren(); VirtualRegion newRegion = new VirtualRegion(_tracking, splitAddress, EndAddress - splitAddress); Size = splitAddress - Address; - UpdatePhysicalChildren(); // The new region inherits all of our parents. newRegion.Handles = new List(Handles); -- cgit v1.2.3