aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qml/jsruntime/qv4engine.cpp1
-rw-r--r--src/qml/jsruntime/qv4engine_p.h1
-rw-r--r--src/qml/jsruntime/qv4functionobject.cpp2
3 files changed, 3 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp
index aa1f01636f..5372ef8f07 100644
--- a/src/qml/jsruntime/qv4engine.cpp
+++ b/src/qml/jsruntime/qv4engine.cpp
@@ -216,6 +216,7 @@ ExecutionEngine::ExecutionEngine(EvalISelFactory *factory)
emptyClass = new (classPool.allocate(sizeof(InternalClass))) InternalClass(this);
executionContextClass = InternalClass::create(this, ExecutionContext::staticVTable(), 0);
+ constructClass = InternalClass::create(this, Object::staticVTable(), 0);
stringClass = InternalClass::create(this, String::staticVTable(), 0);
regExpValueClass = InternalClass::create(this, RegExp::staticVTable(), 0);
diff --git a/src/qml/jsruntime/qv4engine_p.h b/src/qml/jsruntime/qv4engine_p.h
index b2fd290265..8620913ae8 100644
--- a/src/qml/jsruntime/qv4engine_p.h
+++ b/src/qml/jsruntime/qv4engine_p.h
@@ -200,6 +200,7 @@ public:
QQmlJS::MemoryPool classPool;
InternalClass *emptyClass;
InternalClass *executionContextClass;
+ InternalClass *constructClass;
InternalClass *stringClass;
InternalClass *objectClass;
diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp
index 6bd56d8fb2..e048bf1646 100644
--- a/src/qml/jsruntime/qv4functionobject.cpp
+++ b/src/qml/jsruntime/qv4functionobject.cpp
@@ -540,7 +540,7 @@ InternalClass *SimpleScriptFunction::internalClassForConstructor()
Scope scope(internalClass->engine);
ScopedObject p(scope, proto);
if (p)
- classForConstructor = InternalClass::create(scope.engine, Object::staticVTable(), p.getPointer());
+ classForConstructor = internalClass->engine->constructClass->changePrototype(p.getPointer());
else
classForConstructor = scope.engine->objectClass;