diff options
author | Lars Knoll <lars.knoll@digia.com> | 2014-01-31 14:58:14 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-31 23:02:23 +0100 |
commit | 3408bd9d08630687515401cfaadaf818912d72d7 (patch) | |
tree | be83f9c1b3ba7508267bf9e99b6a2c8eb6830892 /src/qml/jsruntime/qv4vme_moth.cpp | |
parent | 74cc0db2ce84ff2c54a9650d475a1d65adc45a94 (diff) |
Use lookups for get/setElement in the interpreter
Significantly speeds up crypto.js
Change-Id: Icd3d59bea3fe4427e93e9e10e3526178e8de859c
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4vme_moth.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4vme_moth.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp index 395d009e81..45d8098034 100644 --- a/src/qml/jsruntime/qv4vme_moth.cpp +++ b/src/qml/jsruntime/qv4vme_moth.cpp @@ -277,11 +277,22 @@ QV4::ReturnedValue VME::run(QV4::ExecutionContext *context, const uchar *code, STOREVALUE(instr.result, __qmljs_get_element(context, VALUEPTR(instr.base), VALUEPTR(instr.index))); MOTH_END_INSTR(LoadElement) + MOTH_BEGIN_INSTR(LoadElementLookup) + QV4::Lookup *l = context->lookups + instr.lookup; + STOREVALUE(instr.result, l->indexedGetter(l, VALUEPTR(instr.base), VALUEPTR(instr.index))); + MOTH_END_INSTR(LoadElementLookup) + MOTH_BEGIN_INSTR(StoreElement) __qmljs_set_element(context, VALUEPTR(instr.base), VALUEPTR(instr.index), VALUEPTR(instr.source)); CHECK_EXCEPTION; MOTH_END_INSTR(StoreElement) + MOTH_BEGIN_INSTR(StoreElementLookup) + QV4::Lookup *l = context->lookups + instr.lookup; + l->indexedSetter(l, VALUEPTR(instr.base), VALUEPTR(instr.index), VALUEPTR(instr.source)); + CHECK_EXCEPTION; + MOTH_END_INSTR(StoreElementLookup) + MOTH_BEGIN_INSTR(LoadProperty) STOREVALUE(instr.result, __qmljs_get_property(context, VALUEPTR(instr.base), runtimeStrings[instr.name])); MOTH_END_INSTR(LoadProperty) |