diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-10-13 21:03:44 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-14 21:59:59 +0200 |
commit | 1be51cc3e7c9ca5256a52136d6fcc9c22c997625 (patch) | |
tree | e0c4f1feae828c4f04f0b8b63201627aa20cf43c /src/qml/jsruntime/qv4object.cpp | |
parent | 668eca2b9343cf5d79dc1faa6c251595e2e84918 (diff) |
inline get_element calls
Inline calls to get_element if the base is an
object with a simple array structure, and the index
is an integer number.
Implemented for 64bit only for now, saves ~25% on crypto.js
Change-Id: I3e34a6409169d90d3937f62264707d52a6c2f9f7
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4object.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4object.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4object.cpp b/src/qml/jsruntime/qv4object.cpp index 0ccd8e6f62..795362e691 100644 --- a/src/qml/jsruntime/qv4object.cpp +++ b/src/qml/jsruntime/qv4object.cpp @@ -76,6 +76,7 @@ Object::Object(ExecutionEngine *engine) { vtbl = &static_vtbl; type = Type_Object; + flags = SimpleArray; memset(memberData, 0, sizeof(Property)*memberDataAlloc); } @@ -86,6 +87,7 @@ Object::Object(InternalClass *internalClass) { vtbl = &static_vtbl; type = Type_Object; + flags = SimpleArray; if (internalClass->size >= memberDataAlloc) { memberDataAlloc = internalClass->size; @@ -1078,6 +1080,7 @@ void Object::copyArrayData(Object *other) arrayOffset = 0; if (other->sparseArray) { + flags &= ~SimpleArray; sparseArray = new SparseArray(*other->sparseArray); arrayFreeList = other->arrayFreeList; } @@ -1226,6 +1229,7 @@ void Object::arraySort(ExecutionContext *context, ObjectRef thisObject, const Va void Object::initSparse() { if (!sparseArray) { + flags &= ~SimpleArray; sparseArray = new SparseArray; for (int i = 0; i < arrayDataLen; ++i) { if (!((arrayAttributes && arrayAttributes[i].isGeneric()) || arrayData[i].value.isEmpty())) { @@ -1302,6 +1306,7 @@ void Object::ensureArrayAttributes() if (arrayAttributes) return; + flags &= ~SimpleArray; arrayAttributes = new PropertyAttributes[arrayAlloc]; for (uint i = 0; i < arrayDataLen; ++i) arrayAttributes[i] = Attr_Data; |