diff options
author | Lars Knoll <lars.knoll@digia.com> | 2014-01-24 13:16:55 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-31 11:13:48 +0100 |
commit | 426b5647b6ac584cfa0a45ab932d4a4dfbcbadc4 (patch) | |
tree | 32ec22afc7ee39b6f9a3f4dd47a45c472f7d77e4 /src/qml/compiler/qv4compileddata.cpp | |
parent | e3219a1f7143c52fad7f5c5266327e199d02c6d6 (diff) |
Implement Lookup::indexedSetter
use this instead of the generic runtime method. This gives
around 10% speedup for array heavy Javascript such
as crypto.js.
Change-Id: Ic8f478c5b18893f2ef49e3f658b1ef24ae22e64f
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/compiler/qv4compileddata.cpp')
-rw-r--r-- | src/qml/compiler/qv4compileddata.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/qml/compiler/qv4compileddata.cpp b/src/qml/compiler/qv4compileddata.cpp index 717e7f4ba2..367ada194b 100644 --- a/src/qml/compiler/qv4compileddata.cpp +++ b/src/qml/compiler/qv4compileddata.cpp @@ -95,21 +95,24 @@ QV4::Function *CompilationUnit::linkToEngine(ExecutionEngine *engine) for (uint i = 0; i < data->lookupTableSize; ++i) { QV4::Lookup *l = runtimeLookups + i; - if (compiledLookups[i].type_and_flags == CompiledData::Lookup::Type_Getter) + Lookup::Type type = Lookup::Type(compiledLookups[i].type_and_flags); + if (type == CompiledData::Lookup::Type_Getter) l->getter = QV4::Lookup::getterGeneric; - else if (compiledLookups[i].type_and_flags == CompiledData::Lookup::Type_Setter) + else if (type == CompiledData::Lookup::Type_Setter) l->setter = QV4::Lookup::setterGeneric; - else if (compiledLookups[i].type_and_flags == CompiledData::Lookup::Type_GlobalGetter) + else if (type == CompiledData::Lookup::Type_GlobalGetter) l->globalGetter = QV4::Lookup::globalGetterGeneric; - else if (compiledLookups[i].type_and_flags == CompiledData::Lookup::Type_IndexedGetter) + else if (type == CompiledData::Lookup::Type_IndexedGetter) l->indexedGetter = QV4::Lookup::indexedGetterGeneric; + else if (type == CompiledData::Lookup::Type_IndexedSetter) + l->indexedSetter = QV4::Lookup::indexedSetterGeneric; for (int j = 0; j < QV4::Lookup::Size; ++j) l->classList[j] = 0; l->level = -1; l->index = UINT_MAX; l->name = runtimeStrings[compiledLookups[i].nameIndex].asString(); - if (compiledLookups[i].type_and_flags == CompiledData::Lookup::Type_IndexedGetter) + if (type == CompiledData::Lookup::Type_IndexedGetter || type == CompiledData::Lookup::Type_IndexedSetter) l->engine = engine; } } |