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;
}
void CdlManager::RefreshCodeCache()
void CdlManager::RefreshCodeCache(bool resetPrgCache)
{
_disassembler->ResetPrgCache();
if(resetPrgCache) {
_disassembler->ResetPrgCache();
}
for(CodeDataLogger* cdl : _codeDataLoggers) {
if(cdl) {

View file

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

View file

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

View file

@ -114,7 +114,7 @@ Debugger::Debugger(Emulator* emu, IConsole* console)
_breakRequestCount = 0;
_suspendRequestCount = 0;
_cdlManager->RefreshCodeCache();
_cdlManager->RefreshCodeCache(false);
if(_emu->IsPaused()) {
//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++) {
uint32_t memSize = _debugger->GetMemoryDumper()->GetMemorySize((MemoryType)i);
_counters[i].reserve(memSize);
for(uint32_t j = 0; j < memSize; j++) {
_counters[i].push_back({});
if(memSize > 0) {
_counters[i] = vector<AddressCounters>(memSize);
}
}
}

View file

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

View file

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