Convert EnterExitWrapper to a readonly ref struct, this should be a speedup in all cases. Will need to experiment to see if this mean the try/finally from #3296 can be avoided
This commit is contained in:
parent
d508b734d6
commit
f01463e2b3
|
@ -79,7 +79,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
protected virtual byte ReadMem(int addr)
|
protected virtual byte ReadMem(int addr)
|
||||||
{
|
{
|
||||||
using (MemGuard?.EnterExit())
|
using (MemGuard.EnterExit())
|
||||||
{
|
{
|
||||||
return _domain.PeekByte(FixAddr(addr) ^ _addressMangler);
|
return _domain.PeekByte(FixAddr(addr) ^ _addressMangler);
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
protected virtual void WriteMem(int addr, byte val)
|
protected virtual void WriteMem(int addr, byte val)
|
||||||
{
|
{
|
||||||
using (MemGuard?.EnterExit())
|
using (MemGuard.EnterExit())
|
||||||
{
|
{
|
||||||
_domain.PokeByte(FixAddr(addr) ^ _addressMangler, val);
|
_domain.PokeByte(FixAddr(addr) ^ _addressMangler, val);
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
using (MemGuard?.EnterExit())
|
using (MemGuard.EnterExit())
|
||||||
{
|
{
|
||||||
var end = Math.Min(addr + bytes, _domainAddrStart + BankSize);
|
var end = Math.Min(addr + bytes, _domainAddrStart + BankSize);
|
||||||
var length = end - addr;
|
var length = end - addr;
|
||||||
|
@ -191,7 +191,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
using (MemGuard?.EnterExit())
|
using (MemGuard.EnterExit())
|
||||||
{
|
{
|
||||||
var end = Math.Min(addr + bytes, BankSize);
|
var end = Math.Min(addr + bytes, BankSize);
|
||||||
var length = end - addr;
|
var length = end - addr;
|
||||||
|
@ -236,7 +236,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
protected override byte ReadMem(int addr)
|
protected override byte ReadMem(int addr)
|
||||||
{
|
{
|
||||||
using (MemGuard?.EnterExit())
|
using (MemGuard.EnterExit())
|
||||||
{
|
{
|
||||||
if (addr < 0x40)
|
if (addr < 0x40)
|
||||||
{
|
{
|
||||||
|
@ -251,7 +251,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
protected override void WriteMem(int addr, byte val)
|
protected override void WriteMem(int addr, byte val)
|
||||||
{
|
{
|
||||||
using (MemGuard?.EnterExit())
|
using (MemGuard.EnterExit())
|
||||||
{
|
{
|
||||||
if (addr < 0x40)
|
if (addr < 0x40)
|
||||||
{
|
{
|
||||||
|
@ -275,7 +275,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
using (MemGuard?.EnterExit())
|
using (MemGuard.EnterExit())
|
||||||
{
|
{
|
||||||
var regs = _debuggable.GetCpuFlagsAndRegisters();
|
var regs = _debuggable.GetCpuFlagsAndRegisters();
|
||||||
var end = Math.Min(addr + bytes, BankSize);
|
var end = Math.Min(addr + bytes, BankSize);
|
||||||
|
|
|
@ -11,32 +11,22 @@ namespace BizHawk.Common
|
||||||
|
|
||||||
public static class MonitorExtensions
|
public static class MonitorExtensions
|
||||||
{
|
{
|
||||||
public static IDisposable EnterExit(this IMonitor m)
|
public static EnterExitWrapper EnterExit(this IMonitor m)
|
||||||
|
=> new(m);
|
||||||
|
|
||||||
|
public readonly ref struct EnterExitWrapper
|
||||||
{
|
{
|
||||||
var ret = new EnterExitWrapper(m);
|
// yes, this can be null
|
||||||
m.Enter();
|
private readonly IMonitor? _m;
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
private class EnterExitWrapper : IDisposable
|
public EnterExitWrapper(IMonitor? m)
|
||||||
{
|
{
|
||||||
private readonly IMonitor _m;
|
_m = m;
|
||||||
|
_m?.Enter();
|
||||||
private bool _disposed;
|
|
||||||
|
|
||||||
public EnterExitWrapper(IMonitor m)
|
|
||||||
{
|
|
||||||
_m = m;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
=> _m?.Exit();
|
||||||
if (!_disposed)
|
|
||||||
{
|
|
||||||
_m.Exit();
|
|
||||||
_disposed = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue