diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-11-08 10:28:30 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-11-08 12:32:01 +0100 |
commit | 0a27a14ec1879096e5fffca75b3bd107b813db87 (patch) | |
tree | 2e4332c9545af969903cb9c8bd619f2adc53f5a8 /src/qml/jsruntime | |
parent | b853a1e1b003d4dc01884201c09c2fcbf75f2cf6 (diff) | |
parent | 7bedd55551fbe95355b0db11f9d576924e829f9d (diff) |
Merge remote-tracking branch 'origin/dev' into new-backend
Change-Id: I1a49b4a242ed0764101521d06ec612e96bff0e4c
Diffstat (limited to 'src/qml/jsruntime')
-rw-r--r-- | src/qml/jsruntime/qv4engine.cpp | 11 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4engine_p.h | 5 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4numberobject.cpp | 4 |
3 files changed, 11 insertions, 9 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 5db7da668b..049e4a117d 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -470,10 +470,8 @@ ExecutionEngine::~ExecutionEngine() delete identifierTable; delete memoryManager; - QSet<QV4::CompiledData::CompilationUnit*> remainingUnits; - qSwap(compilationUnits, remainingUnits); - for (QV4::CompiledData::CompilationUnit *unit : qAsConst(remainingUnits)) - unit->unlink(); + while (!compilationUnits.isEmpty()) + (*compilationUnits.begin())->unlink(); internalClasses[Class_Empty]->destroy(); delete classPool; @@ -918,9 +916,8 @@ void ExecutionEngine::markObjects(MarkStack *markStack) classPool->markObjects(markStack); markStack->drain(); - for (QSet<CompiledData::CompilationUnit*>::ConstIterator it = compilationUnits.constBegin(), end = compilationUnits.constEnd(); - it != end; ++it) { - (*it)->markObjects(markStack); + for (auto compilationUnit: compilationUnits) { + compilationUnit->markObjects(markStack); markStack->drain(); } } diff --git a/src/qml/jsruntime/qv4engine_p.h b/src/qml/jsruntime/qv4engine_p.h index 6d5b93bcc8..db002035da 100644 --- a/src/qml/jsruntime/qv4engine_p.h +++ b/src/qml/jsruntime/qv4engine_p.h @@ -58,6 +58,7 @@ #ifndef V4_BOOTSTRAP # include <private/qv8engine_p.h> +# include <private/qv4compileddata_p.h> #endif namespace WTF { @@ -336,7 +337,9 @@ public: String *id_buffer() const { return reinterpret_cast<String *>(jsStrings + String_buffer); } String *id_lastIndex() const { return reinterpret_cast<String *>(jsStrings + String_lastIndex); } - QSet<CompiledData::CompilationUnit*> compilationUnits; +#ifndef V4_BOOTSTRAP + QIntrusiveList<CompiledData::CompilationUnit, &CompiledData::CompilationUnit::nextCompilationUnit> compilationUnits; +#endif quint32 m_engineId; diff --git a/src/qml/jsruntime/qv4numberobject.cpp b/src/qml/jsruntime/qv4numberobject.cpp index 2ac4409805..ca5340c37d 100644 --- a/src/qml/jsruntime/qv4numberobject.cpp +++ b/src/qml/jsruntime/qv4numberobject.cpp @@ -197,7 +197,9 @@ ReturnedValue NumberPrototype::method_isNaN(const BuiltinFunction *, CallData *c return Encode(false); double v = callData->args[0].toNumber(); - return Encode(std::isnan(v)); + // cast to bool explicitly as std::isnan() may give us ::isnan(), which + // sometimes returns an int and we don't want the Encode(int) overload. + return Encode(bool(std::isnan(v))); } ReturnedValue NumberPrototype::method_toString(const BuiltinFunction *b, CallData *callData) |