From b30ef6210bf9ba97e6e6f185ed20039b4a37710a Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Wed, 1 Sep 2010 13:56:51 +0200 Subject: [PATCH] debugger: register related refactoring (common code) --- src/plugins/debugger/cdb/cdbengine.cpp | 7 +------ src/plugins/debugger/gdb/gdbengine.cpp | 7 ++----- src/plugins/debugger/gdb/symbian.cpp | 11 ++--------- src/plugins/debugger/registerhandler.cpp | 9 +++++++++ src/plugins/debugger/registerhandler.h | 1 + 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 36b1087db9d..957153da6cf 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -1274,15 +1274,10 @@ void CdbEngine::reloadRegisters() qDebug() << Q_FUNC_INFO << intBase; QString errorMessage; - const Registers oldRegisters = registerHandler()->registers(); - Registers registers = getRegisters(m_d->interfaces().debugControl, + const Registers registers = getRegisters(m_d->interfaces().debugControl, m_d->interfaces().debugRegisters, &errorMessage, intBase); if (registers.isEmpty() && !errorMessage.isEmpty()) warning(msgFunctionFailed("reloadRegisters" , errorMessage)); - for (int i = qMin(registers.size(), oldRegisters.size()); --i >= 0; ) { - Register ® = registers[i]; - reg.changed = (reg.value != oldRegisters.at(i).value); - } registerHandler()->setRegisters(registers); } diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 45a09f4743a..37e3d15bfa2 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3110,13 +3110,10 @@ void GdbEngine::handleRegisterListValues(const GdbResponse &response) handled = true; } } - const QString value = _(handled ? ba : val.data()); - reg.changed = (value != reg.value); - if (reg.changed) - reg.value = value; + reg.value = _(handled ? ba : val.data()); } } - registerHandler()->setRegisters(registers); + registerHandler()->setAndMarkRegisters(registers); } diff --git a/src/plugins/debugger/gdb/symbian.cpp b/src/plugins/debugger/gdb/symbian.cpp index 34e87921753..df7b56b45da 100644 --- a/src/plugins/debugger/gdb/symbian.cpp +++ b/src/plugins/debugger/gdb/symbian.cpp @@ -482,19 +482,12 @@ void Snapshot::syncRegisters(uint threadId, RegisterHandler *handler) const QTC_ASSERT(debuggerRegisters.size() >= RegisterPSGdb, qDebug() << "HAVE: " << debuggerRegisters.size(); return); - bool changed = false; for (int i = 0; i < RegisterCount; ++i) { const int gdbIndex = i == RegisterPSTrk ? int(RegisterPSGdb) : i; Register ® = debuggerRegisters[gdbIndex]; - const QString value = trk::hexxNumber(thread.registers[i]); - reg.changed = (value != reg.value); - if (reg.changed) { - reg.value = value; - changed = true; - } + reg.value = trk::hexxNumber(thread.registers[i]); } - if (changed) - handler->setRegisters(debuggerRegisters); + handler->setAndMarkRegisters(debuggerRegisters); } void Snapshot::parseGdbStepRange(const QByteArray &cmd, bool so) diff --git a/src/plugins/debugger/registerhandler.cpp b/src/plugins/debugger/registerhandler.cpp index 164342b5763..272ba9928e9 100644 --- a/src/plugins/debugger/registerhandler.cpp +++ b/src/plugins/debugger/registerhandler.cpp @@ -187,6 +187,15 @@ void RegisterHandler::setRegisters(const Registers ®isters) reset(); } +void RegisterHandler::setAndMarkRegisters(const Registers ®isters) +{ + const Registers old = m_registers; + m_registers = registers; + for (int i = qMin(m_registers.size(), old.size()); --i >= 0; ) + m_registers[i].changed = m_registers[i].value != old[i].value; + reset(); +} + Registers RegisterHandler::registers() const { return m_registers; diff --git a/src/plugins/debugger/registerhandler.h b/src/plugins/debugger/registerhandler.h index 0818de9c95d..740acc0d152 100644 --- a/src/plugins/debugger/registerhandler.h +++ b/src/plugins/debugger/registerhandler.h @@ -63,6 +63,7 @@ public: bool isEmpty() const; // nothing known so far? void setRegisters(const Registers ®isters); + void setAndMarkRegisters(const Registers ®isters); Registers registers() const; void removeAll(); Q_SLOT void setNumberBase(int base); -- GitLab