diff options
| author | Lars Knoll <lars.knoll@qt.io> | 2017-11-03 22:08:02 +0100 |
|---|---|---|
| committer | Lars Knoll <lars.knoll@qt.io> | 2017-11-14 21:45:54 +0000 |
| commit | 353164263c55825a0ec72d30128c50560c626334 (patch) | |
| tree | e44b831652a84fc75237ce628a06438f620a0599 /src/qml/jsruntime/qv4object.cpp | |
| parent | 5c0481c1934ef4b39437eef06ddfa15170473bcb (diff) | |
Avoid marking on simple array data's
Speeds up things by 2-3%.
Change-Id: Ib17ab126cf91ce48a0ced7dd7b06c4f7f0a70a3b
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4object.cpp')
| -rw-r--r-- | src/qml/jsruntime/qv4object.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4object.cpp b/src/qml/jsruntime/qv4object.cpp index 8fbcadfd4a..70f6341ac9 100644 --- a/src/qml/jsruntime/qv4object.cpp +++ b/src/qml/jsruntime/qv4object.cpp @@ -271,8 +271,11 @@ void Heap::Object::markObjects(Heap::Base *b, MarkStack *stack) Object *o = static_cast<Object *>(b); if (o->memberData) o->memberData->mark(stack); - if (o->arrayData) - o->arrayData->mark(stack); + if (o->arrayData) { + o->arrayData->setMarkBit(); + if (o->arrayData->needsMark) + ArrayData::markObjects(o->arrayData, stack); + } uint nInline = o->vtable()->nInlineProperties; Value *v = reinterpret_cast<Value *>(o) + o->vtable()->inlinePropertyOffset; const Value *end = v + nInline; |
