diff --git a/src/libs/qmljs/qmljsvalueowner.cpp b/src/libs/qmljs/qmljsvalueowner.cpp
index ac0ceb9c6a3c483447a8a01f7c7ef7e8085012b2..6c73df3caf3a78ca3b438f67caeb307896836375 100644
--- a/src/libs/qmljs/qmljsvalueowner.cpp
+++ b/src/libs/qmljs/qmljsvalueowner.cpp
@@ -67,7 +67,12 @@ private:
 class QmlJS::SharedValueOwner : public ValueOwner
 {
 public:
-    SharedValueOwner();
+    enum SharedValueOwnerKind{
+        Qt4Kind = 1,
+        Qt5Kind = 2
+    };
+
+    SharedValueOwner(SharedValueOwnerKind kind = Qt5Kind);
 
     ObjectValue *_objectPrototype;
     ObjectValue *_functionPrototype;
@@ -109,9 +114,18 @@ public:
     ColorValue _colorValue;
     AnchorLineValue _anchorLineValue;
 };
-Q_GLOBAL_STATIC(SharedValueOwner, sharedValueOwner)
 
-SharedValueOwner::SharedValueOwner()
+SharedValueOwner *ValueOwner::sharedValueOwner(QString kind)
+{
+    static SharedValueOwner qt5owner(SharedValueOwner::Qt5Kind);
+    static SharedValueOwner qt4owner(SharedValueOwner::Qt4Kind);
+    if (kind == QLatin1String("Qt4Kind"))
+        return &qt4owner;
+    else
+        return &qt5owner;
+}
+
+SharedValueOwner::SharedValueOwner(SharedValueOwnerKind kind)
     : ValueOwner(this) // need to avoid recursing in ValueOwner ctor
 {
     _objectPrototype   = newObject(/*prototype = */ 0);
@@ -526,8 +540,21 @@ SharedValueOwner::SharedValueOwner()
 
     // firebug/webkit compat
     ObjectValue *consoleObject = newObject(/*prototype */ 0);
-    addFunction(consoleObject, QLatin1String("log"), 1);
-    addFunction(consoleObject, QLatin1String("debug"), 1);
+    addFunction(consoleObject, QLatin1String("log"), 1, 0, true);
+    addFunction(consoleObject, QLatin1String("debug"), 1, 0, true);
+    if (kind == Qt5Kind) {
+        addFunction(consoleObject, QLatin1String("info"), 1, 0, true);
+        addFunction(consoleObject, QLatin1String("warn"), 1, 0, true);
+        addFunction(consoleObject, QLatin1String("error"), 1, 0, true);
+        addFunction(consoleObject, QLatin1String("assert"), 1, 0, true);
+        addFunction(consoleObject, QLatin1String("count"), 0, 1);
+        addFunction(consoleObject, QLatin1String("profile"), 0);
+        addFunction(consoleObject, QLatin1String("profileEnd"), 0);
+        addFunction(consoleObject, QLatin1String("time"), 1);
+        addFunction(consoleObject, QLatin1String("timeEnd"), 1);
+        addFunction(consoleObject, QLatin1String("trace"), 0);
+        addFunction(consoleObject, QLatin1String("exception"), 1, 0, true);
+    }
     _globalObject->setMember(QLatin1String("console"), consoleObject);
 
     // translation functions
diff --git a/src/libs/qmljs/qmljsvalueowner.h b/src/libs/qmljs/qmljsvalueowner.h
index 9797980efbfc8224c2b084747a1883dea9312b6a..61cc64bfd93c4d5083cdedadcfe673f4746666c7 100644
--- a/src/libs/qmljs/qmljsvalueowner.h
+++ b/src/libs/qmljs/qmljsvalueowner.h
@@ -66,6 +66,7 @@ class QMLJS_EXPORT ValueOwner
     Q_DISABLE_COPY(ValueOwner)
 
 public:
+    static SharedValueOwner *sharedValueOwner(QString kind = QString());
     ValueOwner(const SharedValueOwner *shared = 0);
     ~ValueOwner();