aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2014-03-26 08:53:59 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-27 20:39:59 +0100
commitc0fe2ec596410a664990df9023bf21b393d119c7 (patch)
tree0d09ccab659d6b48b98ef53e4af199159e8e2d14 /src
parentcd1d5313ba5b122ad0117ac47958aa4779d91464 (diff)
Optimize construct calls
Optimize construction of the internalClass for the object being constructed. Change-Id: Id5fc02c291664ec01c3595ae0acbb6895cc5b147 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
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;