Debugger: Minor performance improvements for debugger initialization

This commit is contained in:
Sour 2025-03-26 21:25:34 +09:00
parent af9eda3524
commit 9e5d013c84
7 changed files with 17 additions and 9 deletions

View file

@ -70,9 +70,11 @@ void CdlManager::RegisterCdl(MemoryType memType, CodeDataLogger* cdl)
_codeDataLoggers[(int)memType] = cdl; _codeDataLoggers[(int)memType] = cdl;
} }
void CdlManager::RefreshCodeCache() void CdlManager::RefreshCodeCache(bool resetPrgCache)
{ {
_disassembler->ResetPrgCache(); if(resetPrgCache) {
_disassembler->ResetPrgCache();
}
for(CodeDataLogger* cdl : _codeDataLoggers) { for(CodeDataLogger* cdl : _codeDataLoggers) {
if(cdl) { if(cdl) {

View file

@ -29,7 +29,7 @@ public:
void SaveCdlFile(MemoryType memType, char* cdlFile); void SaveCdlFile(MemoryType memType, char* cdlFile);
void RegisterCdl(MemoryType memType, CodeDataLogger* cdl); void RegisterCdl(MemoryType memType, CodeDataLogger* cdl);
void RefreshCodeCache(); void RefreshCodeCache(bool resetPrgCache = true);
CodeDataLogger* GetCodeDataLogger(MemoryType memType); CodeDataLogger* GetCodeDataLogger(MemoryType memType);
}; };

View file

@ -51,8 +51,7 @@ bool CodeDataLogger::LoadCdlFile(string cdlFilepath, bool autoResetCdl)
VirtualFile cdlFile = cdlFilepath; VirtualFile cdlFile = cdlFilepath;
if(cdlFile.IsValid()) { if(cdlFile.IsValid()) {
uint32_t fileSize = (uint32_t)cdlFile.GetSize(); uint32_t fileSize = (uint32_t)cdlFile.GetSize();
vector<uint8_t> cdlData; vector<uint8_t>& cdlData = cdlFile.GetData();
cdlFile.ReadFile(cdlData);
if(fileSize >= _memSize) { if(fileSize >= _memSize) {
Reset(); Reset();

View file

@ -114,7 +114,7 @@ Debugger::Debugger(Emulator* emu, IConsole* console)
_breakRequestCount = 0; _breakRequestCount = 0;
_suspendRequestCount = 0; _suspendRequestCount = 0;
_cdlManager->RefreshCodeCache(); _cdlManager->RefreshCodeCache(false);
if(_emu->IsPaused()) { if(_emu->IsPaused()) {
//Break on the current instruction if emulation was already paused //Break on the current instruction if emulation was already paused

View file

@ -15,9 +15,8 @@ MemoryAccessCounter::MemoryAccessCounter(Debugger* debugger)
for(int i = (int)DebugUtilities::GetLastCpuMemoryType() + 1; i < DebugUtilities::GetMemoryTypeCount(); i++) { for(int i = (int)DebugUtilities::GetLastCpuMemoryType() + 1; i < DebugUtilities::GetMemoryTypeCount(); i++) {
uint32_t memSize = _debugger->GetMemoryDumper()->GetMemorySize((MemoryType)i); uint32_t memSize = _debugger->GetMemoryDumper()->GetMemorySize((MemoryType)i);
_counters[i].reserve(memSize); if(memSize > 0) {
for(uint32_t j = 0; j < memSize; j++) { _counters[i] = vector<AddressCounters>(memSize);
_counters[i].push_back({});
} }
} }
} }

View file

@ -235,6 +235,12 @@ void VirtualFile::InitChunks()
} }
} }
vector<uint8_t>& VirtualFile::GetData()
{
LoadFile();
return _data;
}
bool VirtualFile::ReadFile(vector<uint8_t>& out) bool VirtualFile::ReadFile(vector<uint8_t>& out)
{ {
LoadFile(); LoadFile();

View file

@ -44,6 +44,8 @@ public:
bool CheckFileSignature(vector<string> signatures, bool loadArchives = false); bool CheckFileSignature(vector<string> signatures, bool loadArchives = false);
void InitChunks(); void InitChunks();
vector<uint8_t>& GetData();
bool ReadFile(vector<uint8_t> &out); bool ReadFile(vector<uint8_t> &out);
bool ReadFile(std::stringstream &out); bool ReadFile(std::stringstream &out);
bool ReadFile(uint8_t* out, uint32_t expectedSize); bool ReadFile(uint8_t* out, uint32_t expectedSize);