From e2f86d9e48bd3ba424079fe34b002a7cbd4c63db Mon Sep 17 00:00:00 2001
From: hjk <qthjk@ovi.com>
Date: Thu, 17 Jan 2013 13:20:04 +0100
Subject: [PATCH] Debugger: Speed up disassembly retrieval

This skips the case of "disassembling a function given an address"
with indeterministic time behaviour and and immediately falls back
to the fixed range version instead.

Change-Id: I90ec56198a7d767bcf0a9ffb030637c2ee5c617a
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
---
 src/plugins/debugger/gdb/gdbengine.cpp | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 9b63495d169..c9588c24898 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -4434,11 +4434,15 @@ void GdbEngine::fetchDisassemblerByCliPointMixed(const DisassemblerAgentCookie &
 
 void GdbEngine::fetchDisassemblerByCliPointPlain(const DisassemblerAgentCookie &ac0)
 {
-    DisassemblerAgentCookie ac = ac0;
-    QTC_ASSERT(ac.agent, return);
-    postCommand(disassemblerCommand(ac.agent->location(), false), Discardable,
-        CB(handleFetchDisassemblerByCliPointPlain),
-        QVariant::fromValue(ac));
+    // This here
+    //    DisassemblerAgentCookie ac = ac0;
+    //    QTC_ASSERT(ac.agent, return);
+    //    postCommand(disassemblerCommand(ac.agent->location(), false), Discardable,
+    //        CB(handleFetchDisassemblerByCliPointPlain),
+    //        QVariant::fromValue(ac));
+    // takes far to long if function boundaries are not hit.
+    // Skip this feature and immediately fall back to the 'range' verion:
+    fetchDisassemblerByCliRangePlain(ac0);
 }
 
 void GdbEngine::fetchDisassemblerByCliRangeMixed(const DisassemblerAgentCookie &ac0)
-- 
GitLab