From 353164263c55825a0ec72d30128c50560c626334 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Fri, 3 Nov 2017 22:08:02 +0100 Subject: Avoid marking on simple array data's Speeds up things by 2-3%. Change-Id: Ib17ab126cf91ce48a0ced7dd7b06c4f7f0a70a3b Reviewed-by: Erik Verbruggen --- src/qml/jsruntime/qv4engine.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/qml/jsruntime/qv4engine.cpp') diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 049e4a117d..78c10eacc7 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -585,6 +585,12 @@ Heap::ArrayObject *ExecutionEngine::newArrayObject(const Value *values, int leng // this doesn't require a write barrier, things will be ok, when the new array data gets inserted into // the parent object memcpy(&d->values.values, values, length*sizeof(Value)); + for (int i = 0; i < length; ++i) { + if (values[i].isManaged()) { + d->needsMark = true; + break; + } + } a->d()->arrayData.set(this, d); a->setArrayLengthUnchecked(length); } -- cgit v1.2.3