/ src / Ryujinx.Cpu / Jit / JitMemoryBlock.cs
JitMemoryBlock.cs
 1  using ARMeilleure.Memory;
 2  using Ryujinx.Memory;
 3  using System;
 4  
 5  namespace Ryujinx.Cpu.Jit
 6  {
 7      public class JitMemoryBlock : IJitMemoryBlock
 8      {
 9          private readonly MemoryBlock _impl;
10  
11          public IntPtr Pointer => _impl.Pointer;
12  
13          public JitMemoryBlock(ulong size, MemoryAllocationFlags flags)
14          {
15              _impl = new MemoryBlock(size, flags);
16          }
17  
18          public void Commit(ulong offset, ulong size) => _impl.Commit(offset, size);
19          public void MapAsRw(ulong offset, ulong size) => _impl.Reprotect(offset, size, MemoryPermission.ReadAndWrite);
20          public void MapAsRx(ulong offset, ulong size) => _impl.Reprotect(offset, size, MemoryPermission.ReadAndExecute);
21          public void MapAsRwx(ulong offset, ulong size) => _impl.Reprotect(offset, size, MemoryPermission.ReadWriteExecute);
22  
23          public void Dispose()
24          {
25              GC.SuppressFinalize(this);
26              _impl.Dispose();
27          }
28      }
29  }