diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-09-08 14:58:55 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-09-25 08:39:20 +0000 |
commit | a8ccf32793c849ee7bacc085dff1c8a8abc49735 (patch) | |
tree | 87478fa1444ef99be24c078d50318da354f3ef26 /src | |
parent | c72f973a35c0ba0a70a00f5c4d6bed8b0edbc21d (diff) |
Cosmetic improvements to marking of objects during GC
Change-Id: I79a7093c7086ea7f34252f097f18fe7c835053aa
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/jsruntime/qv4engine_p.h | 9 | ||||
-rw-r--r-- | src/qml/memory/qv4mm.cpp | 4 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/qml/jsruntime/qv4engine_p.h b/src/qml/jsruntime/qv4engine_p.h index ef9d83cea3..09cfbd226c 100644 --- a/src/qml/jsruntime/qv4engine_p.h +++ b/src/qml/jsruntime/qv4engine_p.h @@ -496,11 +496,12 @@ void Heap::Base::mark(QV4::ExecutionEngine *engine) inline void Value::mark(ExecutionEngine *e) { - if (!_val) + if (!isManaged()) return; - Managed *m = as<Managed>(); - if (m) - m->d()->mark(e); + + Heap::Base *o = heapObject(); + if (o) + o->mark(e); } diff --git a/src/qml/memory/qv4mm.cpp b/src/qml/memory/qv4mm.cpp index c85aa8c2f8..85f03b17c8 100644 --- a/src/qml/memory/qv4mm.cpp +++ b/src/qml/memory/qv4mm.cpp @@ -361,10 +361,10 @@ void MemoryManager::mark() engine->markObjects(); - m_persistentValues->mark(engine); - collectFromJSStack(); + m_persistentValues->mark(engine); + // Preserve QObject ownership rules within JavaScript: A parent with c++ ownership // keeps all of its children alive in JavaScript. |