diff --git a/ARMeilleure/Common/AddressTable.cs b/ARMeilleure/Common/AddressTable.cs
index 7cb83fdd2..9db2d00de 100644
--- a/ARMeilleure/Common/AddressTable.cs
+++ b/ARMeilleure/Common/AddressTable.cs
@@ -80,10 +80,7 @@ namespace ARMeilleure.Common
{
get
{
- if (_disposed)
- {
- throw new ObjectDisposedException(null);
- }
+ ObjectDisposedException.ThrowIf(_disposed, this);
lock (_pages)
{
@@ -100,10 +97,7 @@ namespace ARMeilleure.Common
/// Length of is less than 2
public AddressTable(Level[] levels)
{
- if (levels == null)
- {
- throw new ArgumentNullException(nameof(levels));
- }
+ ArgumentNullException.ThrowIfNull(levels);
if (levels.Length < 2)
{
@@ -141,10 +135,7 @@ namespace ARMeilleure.Common
/// is not mapped
public ref TEntry GetValue(ulong address)
{
- if (_disposed)
- {
- throw new ObjectDisposedException(null);
- }
+ ObjectDisposedException.ThrowIf(_disposed, this);
if (!IsValid(address))
{
diff --git a/ARMeilleure/Common/Counter.cs b/ARMeilleure/Common/Counter.cs
index 4b0627c1a..d7210d159 100644
--- a/ARMeilleure/Common/Counter.cs
+++ b/ARMeilleure/Common/Counter.cs
@@ -49,10 +49,7 @@ namespace ARMeilleure.Common
{
get
{
- if (_disposed)
- {
- throw new ObjectDisposedException(null);
- }
+ ObjectDisposedException.ThrowIf(_disposed, this);
return ref _countTable.GetValue(_index);
}
diff --git a/ARMeilleure/Common/EntryTable.cs b/ARMeilleure/Common/EntryTable.cs
index f3f3ce281..6f2057979 100644
--- a/ARMeilleure/Common/EntryTable.cs
+++ b/ARMeilleure/Common/EntryTable.cs
@@ -53,10 +53,7 @@ namespace ARMeilleure.Common
/// instance was disposed
public int Allocate()
{
- if (_disposed)
- {
- throw new ObjectDisposedException(null);
- }
+ ObjectDisposedException.ThrowIf(_disposed, this);
lock (_allocated)
{
@@ -83,10 +80,7 @@ namespace ARMeilleure.Common
/// instance was disposed
public void Free(int index)
{
- if (_disposed)
- {
- throw new ObjectDisposedException(null);
- }
+ ObjectDisposedException.ThrowIf(_disposed, this);
lock (_allocated)
{
@@ -108,10 +102,7 @@ namespace ARMeilleure.Common
/// Entry at is not allocated
public ref TEntry GetValue(int index)
{
- if (_disposed)
- {
- throw new ObjectDisposedException(null);
- }
+ ObjectDisposedException.ThrowIf(_disposed, this);
lock (_allocated)
{
diff --git a/ARMeilleure/IntermediateRepresentation/BasicBlock.cs b/ARMeilleure/IntermediateRepresentation/BasicBlock.cs
index 7cee52e58..07bd8b672 100644
--- a/ARMeilleure/IntermediateRepresentation/BasicBlock.cs
+++ b/ARMeilleure/IntermediateRepresentation/BasicBlock.cs
@@ -48,10 +48,7 @@ namespace ARMeilleure.IntermediateRepresentation
public void AddSuccessor(BasicBlock block)
{
- if (block == null)
- {
- ThrowNull(nameof(block));
- }
+ ArgumentNullException.ThrowIfNull(block);
if ((uint)_succCount + 1 > MaxSuccessors)
{
@@ -100,10 +97,7 @@ namespace ARMeilleure.IntermediateRepresentation
public void SetSuccessor(int index, BasicBlock block)
{
- if (block == null)
- {
- ThrowNull(nameof(block));
- }
+ ArgumentNullException.ThrowIfNull(block);
if ((uint)index >= (uint)_succCount)
{
@@ -144,7 +138,6 @@ namespace ARMeilleure.IntermediateRepresentation
}
}
- private static void ThrowNull(string name) => throw new ArgumentNullException(name);
private static void ThrowOutOfRange(string name) => throw new ArgumentOutOfRangeException(name);
private static void ThrowSuccessorOverflow() => throw new OverflowException($"BasicBlock can only have {MaxSuccessors} successors.");
diff --git a/ARMeilleure/Translation/DelegateHelper.cs b/ARMeilleure/Translation/DelegateHelper.cs
index f021d1160..43a39bab0 100644
--- a/ARMeilleure/Translation/DelegateHelper.cs
+++ b/ARMeilleure/Translation/DelegateHelper.cs
@@ -25,10 +25,7 @@ namespace ARMeilleure.Translation
public static Delegate GetDelegate(MethodInfo info)
{
- if (info == null)
- {
- throw new ArgumentNullException(nameof(info));
- }
+ ArgumentNullException.ThrowIfNull(info);
Type[] parameters = info.GetParameters().Select(pI => pI.ParameterType).ToArray();
Type returnType = info.ReturnType;
diff --git a/ARMeilleure/Translation/Delegates.cs b/ARMeilleure/Translation/Delegates.cs
index fef1f4ef7..9d3fdc172 100644
--- a/ARMeilleure/Translation/Delegates.cs
+++ b/ARMeilleure/Translation/Delegates.cs
@@ -35,10 +35,7 @@ namespace ARMeilleure.Translation
public static IntPtr GetDelegateFuncPtr(MethodInfo info)
{
- if (info == null)
- {
- throw new ArgumentNullException(nameof(info));
- }
+ ArgumentNullException.ThrowIfNull(info);
string key = GetKey(info);
@@ -52,10 +49,7 @@ namespace ARMeilleure.Translation
public static int GetDelegateIndex(MethodInfo info)
{
- if (info == null)
- {
- throw new ArgumentNullException(nameof(info));
- }
+ ArgumentNullException.ThrowIfNull(info);
string key = GetKey(info);
diff --git a/ARMeilleure/Translation/IntervalTree.cs b/ARMeilleure/Translation/IntervalTree.cs
index 79662bc98..9af01bea0 100644
--- a/ARMeilleure/Translation/IntervalTree.cs
+++ b/ARMeilleure/Translation/IntervalTree.cs
@@ -67,10 +67,7 @@ namespace ARMeilleure.Translation
/// True if the value was added, false if the start key was already in the dictionary
public bool AddOrUpdate(K start, K end, V value, Func updateFactoryCallback)
{
- if (value == null)
- {
- throw new ArgumentNullException(nameof(value));
- }
+ ArgumentNullException.ThrowIfNull(value);
return BSTInsert(start, end, value, updateFactoryCallback, out IntervalTreeNode node);
}
@@ -85,10 +82,7 @@ namespace ARMeilleure.Translation
/// if is not yet on the tree, or the existing value otherwise
public V GetOrAdd(K start, K end, V value)
{
- if (value == null)
- {
- throw new ArgumentNullException(nameof(value));
- }
+ ArgumentNullException.ThrowIfNull(value);
BSTInsert(start, end, value, null, out IntervalTreeNode node);
return node.Value;
@@ -152,10 +146,7 @@ namespace ARMeilleure.Translation
/// Node reference in the tree
private IntervalTreeNode GetNode(K key)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
IntervalTreeNode node = _root;
while (node != null)
diff --git a/ARMeilleure/Translation/TranslatorStubs.cs b/ARMeilleure/Translation/TranslatorStubs.cs
index 4ad6c2f23..67d2bba8e 100644
--- a/ARMeilleure/Translation/TranslatorStubs.cs
+++ b/ARMeilleure/Translation/TranslatorStubs.cs
@@ -30,10 +30,7 @@ namespace ARMeilleure.Translation
{
get
{
- if (_disposed)
- {
- throw new ObjectDisposedException(null);
- }
+ ObjectDisposedException.ThrowIf(_disposed, this);
return _dispatchStub.Value;
}
@@ -47,10 +44,7 @@ namespace ARMeilleure.Translation
{
get
{
- if (_disposed)
- {
- throw new ObjectDisposedException(null);
- }
+ ObjectDisposedException.ThrowIf(_disposed, this);
return _slowDispatchStub.Value;
}
@@ -64,10 +58,7 @@ namespace ARMeilleure.Translation
{
get
{
- if (_disposed)
- {
- throw new ObjectDisposedException(null);
- }
+ ObjectDisposedException.ThrowIf(_disposed, this);
return _dispatchLoop.Value;
}
@@ -81,7 +72,9 @@ namespace ARMeilleure.Translation
/// is null
public TranslatorStubs(Translator translator)
{
- _translator = translator ?? throw new ArgumentNullException(nameof(translator));
+ ArgumentNullException.ThrowIfNull(translator);
+
+ _translator = translator;
_dispatchStub = new(GenerateDispatchStub, isThreadSafe: true);
_dispatchLoop = new(GenerateDispatchLoop, isThreadSafe: true);
}
diff --git a/Ryujinx.Common/Collections/IntervalTree.cs b/Ryujinx.Common/Collections/IntervalTree.cs
index c829cabae..b5188cc7e 100644
--- a/Ryujinx.Common/Collections/IntervalTree.cs
+++ b/Ryujinx.Common/Collections/IntervalTree.cs
@@ -24,10 +24,7 @@ namespace Ryujinx.Common.Collections
/// is null
public int Get(K key, ref V[] overlaps)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
IntervalTreeNode node = GetNode(key);
@@ -61,15 +58,8 @@ namespace Ryujinx.Common.Collections
/// or is null
public int Get(K start, K end, ref V[] overlaps, int overlapCount = 0)
{
- if (start == null)
- {
- throw new ArgumentNullException(nameof(start));
- }
-
- if (end == null)
- {
- throw new ArgumentNullException(nameof(end));
- }
+ ArgumentNullException.ThrowIfNull(start);
+ ArgumentNullException.ThrowIfNull(end);
GetValues(Root, start, end, ref overlaps, ref overlapCount);
@@ -85,20 +75,9 @@ namespace Ryujinx.Common.Collections
/// , or are null
public void Add(K start, K end, V value)
{
- if (start == null)
- {
- throw new ArgumentNullException(nameof(start));
- }
-
- if (end == null)
- {
- throw new ArgumentNullException(nameof(end));
- }
-
- if (value == null)
- {
- throw new ArgumentNullException(nameof(value));
- }
+ ArgumentNullException.ThrowIfNull(start);
+ ArgumentNullException.ThrowIfNull(end);
+ ArgumentNullException.ThrowIfNull(value);
Insert(start, end, value);
}
@@ -112,10 +91,7 @@ namespace Ryujinx.Common.Collections
/// Number of deleted values
public int Remove(K key, V value)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
int removed = Delete(key, value);
@@ -168,10 +144,7 @@ namespace Ryujinx.Common.Collections
/// is null
private IntervalTreeNode GetNode(K key)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
IntervalTreeNode node = Root;
while (node != null)
@@ -462,10 +435,8 @@ namespace Ryujinx.Common.Collections
public bool ContainsKey(K key)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
+
return GetNode(key) != null;
}
}
diff --git a/Ryujinx.Common/Collections/IntrusiveRedBlackTree.cs b/Ryujinx.Common/Collections/IntrusiveRedBlackTree.cs
index 970cab87c..0063d91e4 100644
--- a/Ryujinx.Common/Collections/IntrusiveRedBlackTree.cs
+++ b/Ryujinx.Common/Collections/IntrusiveRedBlackTree.cs
@@ -17,10 +17,7 @@ namespace Ryujinx.Common.Collections
/// is null
public void Add(T node)
{
- if (node == null)
- {
- throw new ArgumentNullException(nameof(node));
- }
+ ArgumentNullException.ThrowIfNull(node);
Insert(node);
}
@@ -32,10 +29,8 @@ namespace Ryujinx.Common.Collections
/// is null
public void Remove(T node)
{
- if (node == null)
- {
- throw new ArgumentNullException(nameof(node));
- }
+ ArgumentNullException.ThrowIfNull(node);
+
if (Delete(node) != null)
{
Count--;
@@ -50,10 +45,7 @@ namespace Ryujinx.Common.Collections
/// is null
public T GetNode(T searchNode)
{
- if (searchNode == null)
- {
- throw new ArgumentNullException(nameof(searchNode));
- }
+ ArgumentNullException.ThrowIfNull(searchNode);
T node = Root;
while (node != null)
diff --git a/Ryujinx.Common/Collections/IntrusiveRedBlackTreeImpl.cs b/Ryujinx.Common/Collections/IntrusiveRedBlackTreeImpl.cs
index 267aeec31..bcb2e2a23 100644
--- a/Ryujinx.Common/Collections/IntrusiveRedBlackTreeImpl.cs
+++ b/Ryujinx.Common/Collections/IntrusiveRedBlackTreeImpl.cs
@@ -92,10 +92,8 @@ namespace Ryujinx.Common.Collections
/// is null
protected static T Minimum(T node)
{
- if (node == null)
- {
- throw new ArgumentNullException(nameof(node));
- }
+ ArgumentNullException.ThrowIfNull(node);
+
T tmp = node;
while (tmp.Left != null)
{
diff --git a/Ryujinx.Common/Collections/TreeDictionary.cs b/Ryujinx.Common/Collections/TreeDictionary.cs
index a5a3b8189..d118a30cc 100644
--- a/Ryujinx.Common/Collections/TreeDictionary.cs
+++ b/Ryujinx.Common/Collections/TreeDictionary.cs
@@ -22,10 +22,7 @@ namespace Ryujinx.Common.Collections
/// is null
public V Get(K key)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
Node node = GetNode(key);
@@ -47,14 +44,8 @@ namespace Ryujinx.Common.Collections
/// or are null
public void Add(K key, V value)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
- if (value == null)
- {
- throw new ArgumentNullException(nameof(value));
- }
+ ArgumentNullException.ThrowIfNull(key);
+ ArgumentNullException.ThrowIfNull(value);
Insert(key, value);
}
@@ -66,10 +57,8 @@ namespace Ryujinx.Common.Collections
/// is null
public void Remove(K key)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
+
if (Delete(key) != null)
{
Count--;
@@ -217,10 +206,7 @@ namespace Ryujinx.Common.Collections
/// is null
private Node GetNode(K key)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
Node node = Root;
while (node != null)
@@ -370,10 +356,8 @@ namespace Ryujinx.Common.Collections
/// is null
private Node FloorNode(K key)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
+
Node tmp = Root;
while (tmp != null)
@@ -424,10 +408,8 @@ namespace Ryujinx.Common.Collections
/// is null
private Node CeilingNode(K key)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
+
Node tmp = Root;
while (tmp != null)
@@ -477,10 +459,8 @@ namespace Ryujinx.Common.Collections
// Method descriptions are not provided as they are already included as part of the interface.
public bool ContainsKey(K key)
{
- if (key == null)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
+
return GetNode(key) != null;
}
@@ -493,10 +473,8 @@ namespace Ryujinx.Common.Collections
public bool TryGetValue(K key, [MaybeNullWhen(false)] out V value)
{
- if (null == key)
- {
- throw new ArgumentNullException(nameof(key));
- }
+ ArgumentNullException.ThrowIfNull(key);
+
Node node = GetNode(key);
value = node != null ? node.Value : default;
return node != null;
@@ -504,10 +482,7 @@ namespace Ryujinx.Common.Collections
public void Add(KeyValuePair item)
{
- if (item.Key == null)
- {
- throw new ArgumentNullException(nameof(item.Key));
- }
+ ArgumentNullException.ThrowIfNull(item.Key);
Add(item.Key, item.Value);
}
diff --git a/Ryujinx.HLE/Switch.cs b/Ryujinx.HLE/Switch.cs
index de0f98e46..46af68f49 100644
--- a/Ryujinx.HLE/Switch.cs
+++ b/Ryujinx.HLE/Switch.cs
@@ -32,20 +32,9 @@ namespace Ryujinx.HLE
public Switch(HLEConfiguration configuration)
{
- if (configuration.GpuRenderer == null)
- {
- throw new ArgumentNullException(nameof(configuration.GpuRenderer));
- }
-
- if (configuration.AudioDeviceDriver == null)
- {
- throw new ArgumentNullException(nameof(configuration.AudioDeviceDriver));
- }
-
- if (configuration.UserChannelPersistence == null)
- {
- throw new ArgumentNullException(nameof(configuration.UserChannelPersistence));
- }
+ ArgumentNullException.ThrowIfNull(configuration.GpuRenderer);
+ ArgumentNullException.ThrowIfNull(configuration.AudioDeviceDriver);
+ ArgumentNullException.ThrowIfNull(configuration.UserChannelPersistence);
Configuration = configuration;
FileSystem = Configuration.VirtualFileSystem;
diff --git a/Ryujinx.Memory/MemoryBlock.cs b/Ryujinx.Memory/MemoryBlock.cs
index 79a5cfe7c..41e6224bb 100644
--- a/Ryujinx.Memory/MemoryBlock.cs
+++ b/Ryujinx.Memory/MemoryBlock.cs
@@ -279,10 +279,7 @@ namespace Ryujinx.Memory
{
IntPtr ptr = _pointer;
- if (ptr == IntPtr.Zero)
- {
- ThrowObjectDisposed();
- }
+ ObjectDisposedException.ThrowIf(ptr == IntPtr.Zero, this);
int size = Unsafe.SizeOf();
@@ -312,10 +309,7 @@ namespace Ryujinx.Memory
{
IntPtr ptr = _pointer;
- if (ptr == IntPtr.Zero)
- {
- ThrowObjectDisposed();
- }
+ ObjectDisposedException.ThrowIf(ptr == IntPtr.Zero, this);
ulong endOffset = offset + size;
@@ -454,7 +448,6 @@ namespace Ryujinx.Memory
return true;
}
- private static void ThrowObjectDisposed() => throw new ObjectDisposedException(nameof(MemoryBlock));
private static void ThrowInvalidMemoryRegionException() => throw new InvalidMemoryRegionException();
}
}
diff --git a/Ryujinx.Memory/Tracking/RegionHandle.cs b/Ryujinx.Memory/Tracking/RegionHandle.cs
index affc84abb..86c77abc3 100644
--- a/Ryujinx.Memory/Tracking/RegionHandle.cs
+++ b/Ryujinx.Memory/Tracking/RegionHandle.cs
@@ -411,10 +411,7 @@ namespace Ryujinx.Memory.Tracking
///
public void Dispose()
{
- if (_disposed)
- {
- throw new ObjectDisposedException(GetType().FullName);
- }
+ ObjectDisposedException.ThrowIf(_disposed, this);
_disposed = true;