misc: Use nint instead of IntPtr

This commit is contained in:
KeatonTheBot
2026-02-14 12:32:55 -06:00
parent 40c32c7a20
commit 59b1989b97
39 changed files with 414 additions and 414 deletions
@@ -31,7 +31,7 @@ namespace Ryujinx.Cpu.Jit
/// <inheritdoc/>
public bool UsesPrivateAllocations => false;
public IntPtr PageTablePointer => _addressSpace.Pointer;
public nint PageTablePointer => _addressSpace.Pointer;
public MemoryManagerType Type => _unsafeMode ? MemoryManagerType.HostMappedUnsafe : MemoryManagerType.HostMapped;
@@ -186,7 +186,7 @@ namespace Ryujinx.Cpu.Jit
for (int i = 0; i < regions.Length; i++)
{
var guestRegion = guestRegions[i];
IntPtr pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
nint pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
regions[i] = new HostMemoryRange((nuint)(ulong)pointer, guestRegion.Size);
}
+2 -2
View File
@@ -26,7 +26,7 @@ namespace Ryujinx.Cpu.Nce
/// <inheritdoc/>
public bool UsesPrivateAllocations => false;
public IntPtr PageTablePointer => IntPtr.Zero;
public nint PageTablePointer => nint.Zero;
public ulong ReservedSize => (ulong)_addressSpace.Pointer.ToInt64();
@@ -174,7 +174,7 @@ namespace Ryujinx.Cpu.Nce
for (int i = 0; i < regions.Length; i++)
{
var guestRegion = guestRegions[i];
IntPtr pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
nint pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
regions[i] = new HostMemoryRange((nuint)(ulong)pointer, guestRegion.Size);
}
+3 -3
View File
@@ -58,8 +58,8 @@ namespace Ryujinx.Cpu.Nce
}
}
private delegate void ThreadStart(IntPtr nativeContextPtr);
private delegate IntPtr GetTpidrEl0();
private delegate void ThreadStart(nint nativeContextPtr);
private delegate nint GetTpidrEl0();
private static MemoryBlock _codeBlock;
private static ThreadStart _threadStart;
private static GetTpidrEl0 _getTpidrEl0;
@@ -80,7 +80,7 @@ namespace Ryujinx.Cpu.Nce
MemoryBlock codeBlock = null;
NativeSignalHandler.InitializeSignalHandler((IntPtr oldSignalHandlerSegfaultPtr, IntPtr signalHandlerPtr) =>
NativeSignalHandler.InitializeSignalHandler((nint oldSignalHandlerSegfaultPtr, nint signalHandlerPtr) =>
{
uint[] ehWrapperCode = NcePatcher.GenerateWrapperExceptionHandler(oldSignalHandlerSegfaultPtr, signalHandlerPtr);
ulong ehWrapperCodeOffset = codeWriter.Write(ehWrapperCode);
+5 -5
View File
@@ -14,7 +14,7 @@ namespace Ryujinx.Cpu.Nce
private readonly NceNativeContext _context;
private readonly ExceptionCallbacks _exceptionCallbacks;
internal IntPtr NativeContextPtr => _context.BasePtr;
internal nint NativeContextPtr => _context.BasePtr;
public ulong Pc => 0UL;
@@ -70,7 +70,7 @@ namespace Ryujinx.Cpu.Nce
public NceExecutionContext(ExceptionCallbacks exceptionCallbacks)
{
_svcHandler = OnSupervisorCall;
IntPtr svcHandlerPtr = Marshal.GetFunctionPointerForDelegate(_svcHandler);
nint svcHandlerPtr = Marshal.GetFunctionPointerForDelegate(_svcHandler);
_context = new NceNativeContext();
@@ -108,7 +108,7 @@ namespace Ryujinx.Cpu.Nce
public void Exit()
{
_context.GetStorage().HostThreadHandle = IntPtr.Zero;
_context.GetStorage().HostThreadHandle = nint.Zero;
UnregisterAlternateStack();
}
@@ -143,8 +143,8 @@ namespace Ryujinx.Cpu.Nce
public void RequestInterrupt()
{
IntPtr threadHandle = _context.GetStorage().HostThreadHandle;
if (threadHandle != IntPtr.Zero)
nint threadHandle = _context.GetStorage().HostThreadHandle;
if (threadHandle != nint.Zero)
{
// Bit 0 set means that the thread is currently running managed code.
// Bit 1 set means that an interrupt was requested for the thread.
+1 -1
View File
@@ -8,7 +8,7 @@ namespace Ryujinx.Cpu.Nce
{
private readonly MemoryBlock _impl;
public IntPtr Pointer => _impl.Pointer;
public nint Pointer => _impl.Pointer;
public NceMemoryBlock(ulong size, MemoryAllocationFlags flags)
{
+4 -4
View File
@@ -20,16 +20,16 @@ namespace Ryujinx.Cpu.Nce
public uint Fpsr;
public uint InManaged;
public ulong HostSp;
public IntPtr HostThreadHandle;
public nint HostThreadHandle;
public ulong TempStorage;
public IntPtr SvcCallHandler;
public nint SvcCallHandler;
}
private static NativeCtxStorage _dummyStorage = new();
private readonly MemoryBlock _block;
public IntPtr BasePtr => _block.Pointer;
public nint BasePtr => _block.Pointer;
public NceNativeContext()
{
@@ -95,4 +95,4 @@ namespace Ryujinx.Cpu.Nce
public void Dispose() => _block.Dispose();
}
}
}
+5 -5
View File
@@ -9,8 +9,8 @@ namespace Ryujinx.Cpu.Nce
private delegate bool SuspendThreadHandlerDelegate();
private static GetTickCounterDelegate _getTickCounter;
private static SuspendThreadHandlerDelegate _suspendThreadHandler;
private static IntPtr _getTickCounterPtr;
private static IntPtr _suspendThreadHandlerPtr;
private static nint _getTickCounterPtr;
private static nint _suspendThreadHandlerPtr;
[ThreadStatic]
private static NceExecutionContext _context;
@@ -42,14 +42,14 @@ namespace Ryujinx.Cpu.Nce
return _context.OnInterrupt();
}
public static IntPtr GetTickCounterAccessFunctionPointer()
public static nint GetTickCounterAccessFunctionPointer()
{
return _getTickCounterPtr;
}
public static IntPtr GetSuspendThreadHandlerFunctionPointer()
public static nint GetSuspendThreadHandlerFunctionPointer()
{
return _suspendThreadHandlerPtr;
}
}
}
}
+2 -2
View File
@@ -425,7 +425,7 @@ namespace Ryujinx.Cpu.Nce
return asm.GetCode();
}
internal static uint[] GenerateWrapperExceptionHandler(IntPtr oldSignalHandlerSegfaultPtr, IntPtr signalHandlerPtr)
internal static uint[] GenerateWrapperExceptionHandler(nint oldSignalHandlerSegfaultPtr, nint signalHandlerPtr)
{
Assembler asm = new();
@@ -600,4 +600,4 @@ namespace Ryujinx.Cpu.Nce
return new RegisterSaveRestore((int)IntCalleeSavedRegsMask, unchecked((int)FpCalleeSavedRegsMask), OperandType.FP64, hasCall: true);
}
}
}
}
+2 -2
View File
@@ -10,7 +10,7 @@ namespace Ryujinx.Cpu.Nce
public static int UnixSuspendSignal => OperatingSystem.IsMacOS() ? SigUsr2MacOS : SigUsr2Linux;
public static IntPtr GetCurrentThreadHandle()
public static nint GetCurrentThreadHandle()
{
if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || PlatformInfo.IsBionic)
{
@@ -22,7 +22,7 @@ namespace Ryujinx.Cpu.Nce
}
}
public static void SuspendThread(IntPtr handle)
public static void SuspendThread(nint handle)
{
if (PlatformInfo.IsBionic)
{
+3 -3
View File
@@ -6,9 +6,9 @@ namespace Ryujinx.Cpu.Nce
static class NceThreadPalAndroid
{
[DllImport("libc", SetLastError = true)]
private static extern int pthread_kill(IntPtr thread, int sig);
private static extern int pthread_kill(nint thread, int sig);
public static void SuspendThread(IntPtr handle)
public static void SuspendThread(nint handle)
{
int result = pthread_kill(handle, NceThreadPal.UnixSuspendSignal);
if (result != 0)
@@ -17,4 +17,4 @@ namespace Ryujinx.Cpu.Nce
}
}
}
}
}
+7 -7
View File
@@ -6,26 +6,26 @@ namespace Ryujinx.Cpu.Nce
static class NceThreadPalUnix
{
[DllImport("libc", SetLastError = true)]
private static extern IntPtr pthread_self();
private static extern nint pthread_self();
[DllImport("libc", SetLastError = true)]
private static extern int pthread_threadid_np(IntPtr arg0, out ulong tid);
private static extern int pthread_threadid_np(nint arg0, out ulong tid);
[DllImport("libpthread", SetLastError = true)]
private static extern int pthread_kill(IntPtr thread, int sig);
private static extern int pthread_kill(nint thread, int sig);
public static IntPtr GetCurrentThreadHandle()
public static nint GetCurrentThreadHandle()
{
return pthread_self();
}
public static ulong GetCurrentThreadId()
{
pthread_threadid_np(IntPtr.Zero, out ulong tid);
pthread_threadid_np(nint.Zero, out ulong tid);
return tid;
}
public static void SuspendThread(IntPtr handle)
public static void SuspendThread(nint handle)
{
int result = pthread_kill(handle, NceThreadPal.UnixSuspendSignal);
if (result != 0)
@@ -34,4 +34,4 @@ namespace Ryujinx.Cpu.Nce
}
}
}
}
}
+9 -9
View File
@@ -10,10 +10,10 @@ namespace Ryujinx.Cpu.Nce
private struct Entry
{
public IntPtr ThreadId;
public IntPtr NativeContextPtr;
public nint ThreadId;
public nint NativeContextPtr;
public Entry(IntPtr threadId, IntPtr nativeContextPtr)
public Entry(nint threadId, nint nativeContextPtr)
{
ThreadId = threadId;
NativeContextPtr = nativeContextPtr;
@@ -22,7 +22,7 @@ namespace Ryujinx.Cpu.Nce
private static MemoryBlock _block;
public static IntPtr EntriesPointer => _block.Pointer + 8;
public static nint EntriesPointer => _block.Pointer + 8;
static NceThreadTable()
{
@@ -30,7 +30,7 @@ namespace Ryujinx.Cpu.Nce
_block.Write(0UL, 0UL);
}
public static int Register(IntPtr threadId, IntPtr nativeContextPtr)
public static int Register(nint threadId, nint nativeContextPtr)
{
Span<Entry> entries = GetStorage();
@@ -40,7 +40,7 @@ namespace Ryujinx.Cpu.Nce
for (int i = 0; i < MaxThreads; i++)
{
if (entries[i].ThreadId == IntPtr.Zero)
if (entries[i].ThreadId == nint.Zero)
{
entries[i] = new Entry(threadId, nativeContextPtr);
@@ -63,7 +63,7 @@ namespace Ryujinx.Cpu.Nce
lock (_block)
{
if (entries[tableIndex].ThreadId != IntPtr.Zero)
if (entries[tableIndex].ThreadId != nint.Zero)
{
entries[tableIndex] = default;
@@ -71,7 +71,7 @@ namespace Ryujinx.Cpu.Nce
for (int i = (int)currentThreadCount - 1; i >= 0; i--)
{
if (entries[i].ThreadId != IntPtr.Zero)
if (entries[i].ThreadId != nint.Zero)
{
break;
}
@@ -94,4 +94,4 @@ namespace Ryujinx.Cpu.Nce
return new Span<Entry>((void*)_block.GetPointer(8UL, (ulong)Unsafe.SizeOf<Entry>() * MaxThreads), MaxThreads);
}
}
}
}
@@ -128,7 +128,7 @@ namespace Ryujinx.Cpu.Signal
}
}
public static void InstallUnixAlternateStackForCurrentThread(IntPtr stackPtr, ulong stackSize)
public static void InstallUnixAlternateStackForCurrentThread(nint stackPtr, ulong stackSize)
{
UnixSignalHandlerRegistration.RegisterAlternateStack(stackPtr, stackSize);
}
@@ -138,7 +138,7 @@ namespace Ryujinx.Cpu.Signal
UnixSignalHandlerRegistration.UnregisterAlternateStack();
}
public static void InstallUnixSignalHandler(int sigNum, IntPtr action)
public static void InstallUnixSignalHandler(int sigNum, nint action)
{
UnixSignalHandlerRegistration.RegisterExceptionHandler(sigNum, action);
}
@@ -28,17 +28,17 @@ namespace Ryujinx.Cpu.Signal
public struct SigActionBionic
{
public int sa_flags;
public IntPtr sa_handler;
public nint sa_handler;
public SigSet sa_mask;
public IntPtr sa_restorer;
public nint sa_restorer;
}
[StructLayout(LayoutKind.Sequential, Pack = 8)]
public struct Stack
{
public IntPtr ss_sp;
public nint ss_sp;
public int ss_flags;
public IntPtr ss_size;
public nint ss_size;
}
private const int SIGSEGV = 11;
@@ -58,7 +58,7 @@ namespace Ryujinx.Cpu.Signal
private static partial int sigaction(int signum, nint sigAction, out SigAction oldAction);
[SupportedOSPlatform("android"), LibraryImport("libc", SetLastError = true)]
private static partial int sigaction(int signum, IntPtr sigAction, out SigActionBionic oldAction);
private static partial int sigaction(int signum, nint sigAction, out SigActionBionic oldAction);
[LibraryImport("libc", SetLastError = true)]
private static partial int sigemptyset(ref SigSet set);
@@ -152,13 +152,13 @@ namespace Ryujinx.Cpu.Signal
return old;
}
public static void RegisterAlternateStack(IntPtr stackPtr, ulong stackSize)
public static void RegisterAlternateStack(nint stackPtr, ulong stackSize)
{
Stack stack = new()
{
ss_sp = stackPtr,
ss_flags = SS_AUTODISARM,
ss_size = (IntPtr)stackSize
ss_size = (nint)stackSize
};
int result = sigaltstack(ref stack, out _);
@@ -184,7 +184,7 @@ namespace Ryujinx.Cpu.Signal
}
}
public static void RegisterExceptionHandler(int sigNum, IntPtr action)
public static void RegisterExceptionHandler(int sigNum, nint action)
{
int result;
@@ -200,7 +200,7 @@ namespace Ryujinx.Cpu.Signal
result = sigaction(sigNum, ref sig, out SigActionBionic oldu);
if (oldu.sa_handler != IntPtr.Zero)
if (oldu.sa_handler != nint.Zero)
{
throw new InvalidOperationException($"SIG{sigNum} is already in use.");
}
@@ -222,7 +222,7 @@ namespace Ryujinx.Cpu.Signal
result = sigaction(sigNum, ref sig, out SigAction oldu);
if (oldu.sa_handler != IntPtr.Zero)
if (oldu.sa_handler != nint.Zero)
{
throw new InvalidOperationException($"SIG{sigNum} is already in use.");
}