diff options
| author | Lars Knoll <lars.knoll@qt.io> | 2017-11-02 16:02:10 +0100 |
|---|---|---|
| committer | Lars Knoll <lars.knoll@qt.io> | 2017-11-14 21:45:42 +0000 |
| commit | 002fdc48d43e4fd67921e0cd46c28d28aee06848 (patch) | |
| tree | 08fdc81dc91153649d8b6c6514ed3b49ad970064 /src/qml/jsruntime/qv4object.cpp | |
| parent | 010197a42150ee73a17cb53fbe397a6c55b2d342 (diff) | |
Bring back markObjects(), this time generated
Doing the marking of objects in a function instead of
using the table seems to be somewhat faster.
Change-Id: I9ec00cc0264f9a15c69b285db493bee31d99bf96
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4object.cpp')
| -rw-r--r-- | src/qml/jsruntime/qv4object.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4object.cpp b/src/qml/jsruntime/qv4object.cpp index 8a178506aa..a9aa8f30a9 100644 --- a/src/qml/jsruntime/qv4object.cpp +++ b/src/qml/jsruntime/qv4object.cpp @@ -261,9 +261,18 @@ void Object::defineReadonlyConfigurableProperty(String *name, const Value &value insertMember(name, value, Attr_ReadOnly_ButConfigurable); } -void Object::markObjects(Heap::Base *b, MarkStack *stack) +void Object::markObjects(Heap::Base *base, MarkStack *stack) { - Heap::Object *o = static_cast<Heap::Object *>(b); + Heap::Object::markObjects(base, stack); +} + +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); uint nInline = o->vtable()->nInlineProperties; Value *v = reinterpret_cast<Value *>(o) + o->vtable()->inlinePropertyOffset; const Value *end = v + nInline; |
