diff --git a/src/plugins/debugger/cdb/cdbdumperhelper.cpp b/src/plugins/debugger/cdb/cdbdumperhelper.cpp
index b1d1f82ba2bfc24e2f57be97d7f85cc0935faf87..4646e046e8740a3fd46e9ff61ae44e9c4f2e0cdc 100644
--- a/src/plugins/debugger/cdb/cdbdumperhelper.cpp
+++ b/src/plugins/debugger/cdb/cdbdumperhelper.cpp
@@ -489,7 +489,7 @@ bool CdbDumperHelper::initKnownTypes(QString *errorMessage)
     if (callDumper(callCmd, QByteArray(), &outData, false, errorMessage) != CallOk) {
         return false;
     }
-    if (!m_helper.parseQuery(outData, QtDumperHelper::CdbDebugger)) {
+    if (!m_helper.parseQuery(outData)) {
      *errorMessage = QString::fromLatin1("Unable to parse the dumper output: '%1'").arg(QString::fromAscii(output));
     }
     if (m_helper.dumperVersion() < dumperVersionRequired) {
diff --git a/src/plugins/debugger/gdb/classicgdbengine.cpp b/src/plugins/debugger/gdb/classicgdbengine.cpp
index 1c4174bc5eb7386288692700743a2e6a0b624ce1..fbb241e9853836c95b8c65cda2964b3e8fa3eee6 100644
--- a/src/plugins/debugger/gdb/classicgdbengine.cpp
+++ b/src/plugins/debugger/gdb/classicgdbengine.cpp
@@ -713,7 +713,7 @@ void GdbEngine::handleQueryDebuggingHelperClassic(const GdbResponse &response)
 
     GdbMi contents;
     QTC_ASSERT(parseConsoleStream(response, &contents), qDebug() << response.toString());
-    const bool ok = m_dumperHelper.parseQuery(contents, QtDumperHelper::GdbDebugger)
+    const bool ok = m_dumperHelper.parseQuery(contents)
         && m_dumperHelper.typeCount();
     if (ok) {
         // Get version and sizes from dumpers. Expression cache
diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp
index 77baf248d0887a3f307d2657e12bdbfae367e6c8..645efdfad130efd6eec5166ca029c5aae310dd0e 100644
--- a/src/plugins/debugger/watchutils.cpp
+++ b/src/plugins/debugger/watchutils.cpp
@@ -838,7 +838,8 @@ QString QtDumperHelper::toString(bool debug) const
             str << "    " << it.key() << ' ' << it.value() << '\n';
         return rc;
     }
-    const QString nameSpace = m_qtNamespace.isEmpty() ? QCoreApplication::translate("QtDumperHelper", "<none>") : m_qtNamespace;
+    const QString nameSpace = m_qtNamespace.isEmpty()
+        ? QCoreApplication::translate("QtDumperHelper", "<none>") : m_qtNamespace;
     return QCoreApplication::translate("QtDumperHelper",
        "%n known types, Qt version: %1, Qt namespace: %2 Dumper version: %3",
        0, QCoreApplication::CodecForTr,
@@ -866,60 +867,62 @@ int QtDumperHelper::typeCount() const
 }
 
 // Look up unnamespaced 'std' types.
-static inline QtDumperHelper::Type stdType(const QString &s)
+static QtDumperHelper::Type stdType(const QByteArray &type)
 {
-    if (s == QLatin1String("vector"))
+    if (type == "vector")
         return QtDumperHelper::StdVectorType;
-    if (s == QLatin1String("deque"))
+    if (type == "deque")
         return QtDumperHelper::StdDequeType;
-    if (s == QLatin1String("set"))
+    if (type == "set")
         return QtDumperHelper::StdSetType;
-    if (s == QLatin1String("stack"))
+    if (type == "stack")
         return QtDumperHelper::StdStackType;
-    if (s == QLatin1String("map"))
+    if (type == "map")
         return QtDumperHelper::StdMapType;
-    if (s == QLatin1String("basic_string"))
+    if (type == "basic_string")
         return QtDumperHelper::StdStringType;
     return QtDumperHelper::UnknownType;
 }
 
-QtDumperHelper::Type QtDumperHelper::specialType(QString s)
+static QtDumperHelper::Type specialType(QByteArray type)
 {
     // Std classes.
-    if (s.startsWith(QLatin1String("std::")))
-        return stdType(s.mid(5));
+    if (type.startsWith("std::"))
+        return stdType(type.mid(5));
+
     // Strip namespace
     // FIXME: that's not a good idea as it makes all namespaces equal.
-    const int namespaceIndex = s.lastIndexOf(QLatin1String("::"));
+    const int namespaceIndex = type.lastIndexOf("::");
     if (namespaceIndex == -1) {
         // None ... check for std..
-        const Type sType = stdType(s);
-        if (sType != UnknownType)
+        const QtDumperHelper::Type sType = stdType(type);
+        if (sType != QtDumperHelper::UnknownType)
             return sType;
     } else {
-        s = s.mid(namespaceIndex + 2);
+        type = type.mid(namespaceIndex + 2);
     }
-    if (s == QLatin1String("QAbstractItem"))
-        return QAbstractItemType;
-    if (s == QLatin1String("QMap"))
-        return QMapType;
-    if (s == QLatin1String("QMapNode"))
-        return QMapNodeType;
-    if (s == QLatin1String("QMultiMap"))
-        return QMultiMapType;
-    if (s == QLatin1String("QObject"))
-        return QObjectType;
-    if (s == QLatin1String("QObjectSignal"))
-        return QObjectSignalType;
-    if (s == QLatin1String("QObjectSlot"))
-        return QObjectSlotType;
-    if (s == QLatin1String("QStack"))
-        return QStackType;
-    if (s == QLatin1String("QVector"))
-        return QVectorType;
-    if (s == QLatin1String("QWidget"))
-        return QWidgetType;
-    return UnknownType;
+
+    if (type == "QAbstractItem")
+        return QtDumperHelper::QAbstractItemType;
+    if (type == "QMap")
+        return QtDumperHelper::QMapType;
+    if (type == "QMapNode")
+        return QtDumperHelper::QMapNodeType;
+    if (type == "QMultiMap")
+        return QtDumperHelper::QMultiMapType;
+    if (type == "QObject")
+        return QtDumperHelper::QObjectType;
+    if (type == "QObjectSignal")
+        return QtDumperHelper::QObjectSignalType;
+    if (type == "QObjectSlot")
+        return QtDumperHelper::QObjectSlotType;
+    if (type == "QStack")
+        return QtDumperHelper::QStackType;
+    if (type == "QVector")
+        return QtDumperHelper::QVectorType;
+    if (type == "QWidget")
+        return QtDumperHelper::QWidgetType;
+    return QtDumperHelper::UnknownType;
 }
 
 QString QtDumperHelper::qtVersionString() const
@@ -931,15 +934,7 @@ QString QtDumperHelper::qtVersionString() const
 }
 
 // Parse a list of types.
-void QtDumperHelper::parseQueryTypes(const QStringList &l, Debugger  /* debugger */)
-{
-    m_nameTypeMap.clear();
-    const int count = l.count();
-    for (int i = 0; i < count; i++) {
-        const Type t = specialType(l.at(i));
-        m_nameTypeMap.insert(l.at(i), t != UnknownType ? t : SupportedType);
-    }
-}
+typedef QList<QByteArray> QByteArrayList;
 
 static inline QString qClassName(const QString &qtNamespace, const char *className)
 {
@@ -976,7 +971,7 @@ static inline double getDumperVersion(const GdbMi &contents)
     return 1.0;
 }
 
-bool QtDumperHelper::parseQuery(const GdbMi &contents, Debugger debugger)
+bool QtDumperHelper::parseQuery(const GdbMi &contents)
 {
     clear();
     if (debug > 1)
@@ -993,10 +988,17 @@ bool QtDumperHelper::parseQuery(const GdbMi &contents, Debugger debugger)
     }
     m_qtVersion = qtv;
     // Get list of helpers
-    QStringList availableSimpleDebuggingHelpers;
+    QByteArrayList availableSimpleDebuggingHelpers;
     foreach (const GdbMi &item, contents.findChild("dumpers").children())
-        availableSimpleDebuggingHelpers.append(QLatin1String(item.data()));
-    parseQueryTypes(availableSimpleDebuggingHelpers, debugger);
+        availableSimpleDebuggingHelpers.append(item.data());
+
+    // Parse types
+    m_nameTypeMap.clear();
+    foreach (const QByteArray &type, availableSimpleDebuggingHelpers) {
+        const Type t = specialType(type);
+        m_nameTypeMap.insert(type, t != UnknownType ? t : SupportedType);
+    }
+
     m_dumperVersion = getDumperVersion(contents);
     // Parse sizes
     foreach (const GdbMi &sizesList, contents.findChild("sizes").children()) {
@@ -1016,13 +1018,13 @@ bool QtDumperHelper::parseQuery(const GdbMi &contents, Debugger debugger)
 }
 
 // parse a query
-bool QtDumperHelper::parseQuery(const char *data, Debugger debugger)
+bool QtDumperHelper::parseQuery(const char *data)
 {
     GdbMi root;
     root.fromStringMultiple(QByteArray(data));
     if (!root.isValid())
         return false;
-    return parseQuery(root, debugger);
+    return parseQuery(root);
 }
 
 void QtDumperHelper::addSize(const QString &name, int size)
diff --git a/src/plugins/debugger/watchutils.h b/src/plugins/debugger/watchutils.h
index 67d0d732a88fdb15814ce196022fa671c9574956..e2afe8fff9dfe6e994c48e3d96aef5cf477b4f13 100644
--- a/src/plugins/debugger/watchutils.h
+++ b/src/plugins/debugger/watchutils.h
@@ -166,8 +166,8 @@ public:
 
     // Complete parse of "query" (protocol 1) response from debuggee buffer.
     // 'data' excludes the leading indicator character.
-    bool parseQuery(const char *data, Debugger debugger);
-    bool parseQuery(const GdbMi &data, Debugger debugger);
+    bool parseQuery(const char *data);
+    bool parseQuery(const GdbMi &data);
     // Sizes can be added as the debugger determines them
     void addSize(const QString &name, int size);
 
@@ -191,14 +191,12 @@ private:
     typedef QMap<QString, int> SizeCache;
 
     // Look up a simple (namespace) type
-    static Type specialType(QString s);
     QString evaluationSizeofTypeExpression(const QString &typeName, Debugger d) const;
-    void parseQueryTypes(const QStringList &l, Debugger debugger);
     QString qMapNodeValueOffsetExpression(const QString &type,
                                           const QString &addressIn,
                                           Debugger debugger) const;
 
-    inline QString lookupCdbDummyAddressExpression(const QString &expr, const QString &address) const;
+    QString lookupCdbDummyAddressExpression(const QString &expr, const QString &address) const;
 
     NameTypeMap m_nameTypeMap;
     SizeCache m_sizeCache;