Resolve TODO re: memoisation in `GenericDebugger`
This commit is contained in:
parent
4b001a48a9
commit
c5d6a66e01
|
@ -21,108 +21,80 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
private RegisterValue PCRegister => Debuggable.GetCpuFlagsAndRegisters()[Disassembler.PCRegisterName];
|
private RegisterValue PCRegister => Debuggable.GetCpuFlagsAndRegisters()[Disassembler.PCRegisterName];
|
||||||
|
|
||||||
// TODO: be cachey with checks that depend on catching exceptions
|
private bool CanUseMemoryCallbacks = false;
|
||||||
private bool CanUseMemoryCallbacks
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (Debuggable != null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var result = Debuggable.MemoryCallbacks.HasReads;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch (NotImplementedException)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
private bool CanDisassemble = false;
|
||||||
|
|
||||||
|
private bool CanSetCpu = false;
|
||||||
|
|
||||||
|
private bool CanStepInto = false;
|
||||||
|
|
||||||
|
private bool CanStepOver = false;
|
||||||
|
|
||||||
|
private bool CanStepOut = false;
|
||||||
|
|
||||||
|
private void UpdateCapabilitiesProps()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_ = MemoryCallbacks.HasReads;
|
||||||
|
CanUseMemoryCallbacks = true;
|
||||||
}
|
}
|
||||||
}
|
catch (NotImplementedException)
|
||||||
|
|
||||||
private bool CanDisassemble
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
{
|
||||||
if (Disassembler == null)
|
CanUseMemoryCallbacks = false;
|
||||||
{
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (Disassembler is null)
|
||||||
|
{
|
||||||
|
CanDisassemble = false;
|
||||||
|
CanSetCpu = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var pc = (uint)PCRegister.Value;
|
_ = (uint) PCRegister.Value;
|
||||||
return true;
|
CanDisassemble = true;
|
||||||
}
|
}
|
||||||
catch (NotImplementedException)
|
catch (NotImplementedException)
|
||||||
{
|
{
|
||||||
return false;
|
CanDisassemble = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool CanSetCpu
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Disassembler.Cpu = Disassembler.Cpu;
|
Disassembler.Cpu = Disassembler.Cpu;
|
||||||
return true;
|
CanSetCpu = true;
|
||||||
}
|
}
|
||||||
catch (NotImplementedException)
|
catch (NotImplementedException)
|
||||||
{
|
{
|
||||||
return false;
|
CanSetCpu = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private bool CanStepInto
|
try
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
{
|
||||||
try
|
CanStepInto = Debuggable.CanStep(StepType.Into);
|
||||||
{
|
|
||||||
return Debuggable.CanStep(StepType.Into);
|
|
||||||
}
|
|
||||||
catch (NotImplementedException)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
catch (NotImplementedException)
|
||||||
|
|
||||||
private bool CanStepOver
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
{
|
||||||
try
|
CanStepInto = false;
|
||||||
{
|
|
||||||
return Debuggable.CanStep(StepType.Over);
|
|
||||||
}
|
|
||||||
catch (NotImplementedException)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
try
|
||||||
|
|
||||||
private bool CanStepOut
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
{
|
||||||
try
|
CanStepOver = Debuggable.CanStep(StepType.Over);
|
||||||
{
|
}
|
||||||
return Debuggable.CanStep(StepType.Out);
|
catch (NotImplementedException)
|
||||||
}
|
{
|
||||||
catch (NotImplementedException)
|
CanStepOver = false;
|
||||||
{
|
}
|
||||||
return false;
|
try
|
||||||
}
|
{
|
||||||
|
CanStepOut = Debuggable.CanStep(StepType.Out);
|
||||||
|
}
|
||||||
|
catch (NotImplementedException)
|
||||||
|
{
|
||||||
|
CanStepOut = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,6 +108,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
public override void Restart()
|
public override void Restart()
|
||||||
{
|
{
|
||||||
|
UpdateCapabilitiesProps();
|
||||||
DisengageDebugger();
|
DisengageDebugger();
|
||||||
EngageDebugger();
|
EngageDebugger();
|
||||||
FullUpdate();
|
FullUpdate();
|
||||||
|
|
Loading…
Reference in New Issue