diff options
author | Lars Knoll <[email protected]> | 2014-03-26 08:53:59 +0100 |
---|---|---|
committer | The Qt Project <[email protected]> | 2014-03-27 20:39:59 +0100 |
commit | c0fe2ec596410a664990df9023bf21b393d119c7 (patch) | |
tree | 0d09ccab659d6b48b98ef53e4af199159e8e2d14 /src | |
parent | cd1d5313ba5b122ad0117ac47958aa4779d91464 (diff) |
Optimize construct calls
Optimize construction of the internalClass for the object
being constructed.
Change-Id: Id5fc02c291664ec01c3595ae0acbb6895cc5b147
Reviewed-by: Simon Hausmann <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/jsruntime/qv4engine.cpp | 1 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4engine_p.h | 1 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4functionobject.cpp | 2 |
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; |