diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-01-10 21:37:31 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-01-10 21:37:31 +0100 |
commit | 3b67ec7abdb3056f259eb0aa819de9b5bbf8ec3a (patch) | |
tree | 84345fc1b93e153313c367abc1e8eac1ced51631 /src/qml | |
parent | ede9a8285858873e644083bbad9a71da26276dce (diff) | |
parent | 3795904e3831722e222fa32a1e52aeb6b3e6ba87 (diff) |
Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
.qmake.conf
Change-Id: I6b2539bf17d3e9bc66d96b53c1bce95680113ed8
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/configure.json | 5 | ||||
-rw-r--r-- | src/qml/doc/qtqml.qdocconf | 2 | ||||
-rw-r--r-- | src/qml/doc/src/qmllanguageref/syntax/signals.qdoc | 4 | ||||
-rw-r--r-- | src/qml/jit/qv4assemblercommon_p.h | 4 | ||||
-rw-r--r-- | src/qml/jit/qv4baselineassembler.cpp | 42 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4global_p.h | 2 | ||||
-rw-r--r-- | src/qml/types/qqmldelegatemodel.cpp | 2 |
7 files changed, 41 insertions, 20 deletions
diff --git a/src/qml/configure.json b/src/qml/configure.json index c7b145f46f..55bc1a7c4d 100644 --- a/src/qml/configure.json +++ b/src/qml/configure.json @@ -21,7 +21,8 @@ "include": "memory", "main": [ "std::unique_ptr<int> ptr = std::make_unique<int>();" - ] + ], + "qmake": "CONFIG += c++11" } } }, @@ -29,7 +30,7 @@ "features": { "cxx14_make_unique": { "label": "C++14 make_unique", - "condition": "tests.cxx14_make_unique", + "condition": "features.c++14 || tests.cxx14_make_unique", "output": [ "privateFeature" ] }, "qml-network": { diff --git a/src/qml/doc/qtqml.qdocconf b/src/qml/doc/qtqml.qdocconf index 40acc7c13f..ba4155c08b 100644 --- a/src/qml/doc/qtqml.qdocconf +++ b/src/qml/doc/qtqml.qdocconf @@ -33,7 +33,7 @@ qhp.QtQml.subprojects.qmltypes.sortPages = true tagfile = ../../../doc/qtqml/qtqml.tags -depends += qtcore qtgui qtquick qtdoc qtlinguist qmake qtscript qtwidgets +depends += qtcore qtgui qtquick qtdoc qtlinguist qmake qtscript qtwidgets qtxmlpatterns qtquickcontrols headerdirs += .. \ ../../imports/models diff --git a/src/qml/doc/src/qmllanguageref/syntax/signals.qdoc b/src/qml/doc/src/qmllanguageref/syntax/signals.qdoc index f0ad2b7767..b643f18154 100644 --- a/src/qml/doc/src/qmllanguageref/syntax/signals.qdoc +++ b/src/qml/doc/src/qmllanguageref/syntax/signals.qdoc @@ -52,8 +52,8 @@ object, the object definition should declare a signal handler named letter capitalized. The signal handler should contain the JavaScript code to be executed when the signal handler is invoked. -For example, the \l [QtQuick.Controls2]{Button} type from the -\l{Qt Quick Controls 2}{Qt Quick Controls} module has a \c clicked signal, which +For example, the \l [QtQuickControls]{Button} type from the +\l{Qt Quick Controls} module has a \c clicked signal, which is emitted whenever the button is clicked. In this case, the signal handler for receiving this signal should be \c onClicked. In the example below, whenever the button is clicked, the \c onClicked handler is invoked, applying a random diff --git a/src/qml/jit/qv4assemblercommon_p.h b/src/qml/jit/qv4assemblercommon_p.h index bf239fcfd8..c17fdd3a23 100644 --- a/src/qml/jit/qv4assemblercommon_p.h +++ b/src/qml/jit/qv4assemblercommon_p.h @@ -320,14 +320,14 @@ public: void pushAligned(RegisterID reg) { - subPtr(TrustedImm32(PointerSize), StackPointerRegister); + subPtr(TrustedImm32(3 * PointerSize), StackPointerRegister); push(reg); } void popAligned(RegisterID reg) { pop(reg); - addPtr(TrustedImm32(PointerSize), StackPointerRegister); + addPtr(TrustedImm32(3 * PointerSize), StackPointerRegister); } }; diff --git a/src/qml/jit/qv4baselineassembler.cpp b/src/qml/jit/qv4baselineassembler.cpp index c62d6e5388..5c08c42977 100644 --- a/src/qml/jit/qv4baselineassembler.cpp +++ b/src/qml/jit/qv4baselineassembler.cpp @@ -483,6 +483,7 @@ public: auto isNumber = branch32(GreaterThanOrEqual, ScratchRegister, TrustedImm32(Value::QT_Int)); if (ArgInRegCount < 2) { + subPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); // stack alignment push(AccumulatorRegisterTag); push(AccumulatorRegisterValue); } else { @@ -492,7 +493,7 @@ public: callRuntimeUnchecked("toNumberHelper", reinterpret_cast<void *>(&toNumberHelper)); saveReturnValueInAccumulator(); if (ArgInRegCount < 2) - addPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); + addPtr(TrustedImm32(4 * PointerSize), StackPointerRegister); isNumber.link(this); } @@ -513,28 +514,36 @@ public: push(AccumulatorRegisterTag); push(AccumulatorRegisterValue); } + if (ArgInRegCount < 2) { + if (!accumulatorNeedsSaving) + subPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); push(lhsTarget); load32(lhs, lhsTarget); push(lhsTarget); } else { + if (accumulatorNeedsSaving) + subPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); move(lhsTarget, registerForArg(1)); load32(lhs, registerForArg(0)); } callHelper(toInt32Helper); move(ReturnValueRegisterValue, lhsTarget); - if (ArgInRegCount < 2) - addPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); if (accumulatorNeedsSaving) { + addPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); pop(AccumulatorRegisterValue); pop(AccumulatorRegisterTag); + } else if (ArgInRegCount < 2) { + addPtr(TrustedImm32(4 * PointerSize), StackPointerRegister); } + lhsIsInt.link(this); auto rhsIsInt = branch32(Equal, TrustedImm32(int(IntegerTag)), AccumulatorRegisterTag); pushAligned(lhsTarget); if (ArgInRegCount < 2) { + subPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); push(AccumulatorRegisterTag); push(AccumulatorRegisterValue); } else { @@ -544,7 +553,7 @@ public: callRuntimeUnchecked("toInt32Helper", reinterpret_cast<void *>(&toInt32Helper)); saveReturnValueInAccumulator(); if (ArgInRegCount < 2) - addPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); + addPtr(TrustedImm32(4 * PointerSize), StackPointerRegister); popAligned(lhsTarget); rhsIsInt.link(this); @@ -556,6 +565,7 @@ public: auto isInt = branch32(Equal, TrustedImm32(Value::QT_Int), ScratchRegister); if (ArgInRegCount < 2) { + subPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); // align the stack on a 16-byte boundary push(AccumulatorRegisterTag); push(AccumulatorRegisterValue); } else { @@ -565,7 +575,7 @@ public: callRuntimeUnchecked("toInt32Helper", reinterpret_cast<void *>(&toInt32Helper)); saveReturnValueInAccumulator(); if (ArgInRegCount < 2) - addPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); + addPtr(TrustedImm32(4 * PointerSize), StackPointerRegister); isInt.link(this); } @@ -579,6 +589,8 @@ public: push(AccumulatorRegisterValue); } if (ArgInRegCount < 2) { + if (!accumulatorNeedsSaving) + subPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); srcReg.offset += 4; load32(srcReg, targetReg); push(targetReg); @@ -586,17 +598,20 @@ public: load32(srcReg, targetReg); push(targetReg); } else { + if (accumulatorNeedsSaving) + subPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); load32(srcReg, registerForArg(0)); srcReg.offset += 4; load32(srcReg, registerForArg(1)); } callHelper(toInt32Helper); move(ReturnValueRegisterValue, targetReg); - if (ArgInRegCount < 2) - addPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); if (accumulatorNeedsSaving) { + addPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); pop(AccumulatorRegisterValue); pop(AccumulatorRegisterTag); + } else if (ArgInRegCount < 2) { + addPtr(TrustedImm32(4 * PointerSize), StackPointerRegister); } } @@ -663,20 +678,24 @@ public: } if (ArgInRegCount < 2) { + if (!accumulatorNeedsSaving) + subPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); push(AccumulatorRegisterTag); push(AccumulatorRegisterValue); } else { + if (accumulatorNeedsSaving) + subPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); move(AccumulatorRegisterValue, registerForArg(0)); move(AccumulatorRegisterTag, registerForArg(1)); } callHelper(Value::toBooleanImpl); - if (ArgInRegCount < 2) - addPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); - and32(TrustedImm32(1), ReturnValueRegisterValue, ScratchRegister); if (accumulatorNeedsSaving) { + addPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); pop(AccumulatorRegisterValue); pop(AccumulatorRegisterTag); + } else if (ArgInRegCount < 2) { + addPtr(TrustedImm32(4 * PointerSize), StackPointerRegister); } continuation(ScratchRegister); @@ -775,6 +794,7 @@ public: void callWithAccumulatorByValueAsFirstArgument(std::function<void()> doCall) { if (ArgInRegCount < 2) { + subPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); push(AccumulatorRegisterTag); push(AccumulatorRegisterValue); } else { @@ -783,7 +803,7 @@ public: } doCall(); if (ArgInRegCount < 2) - addPtr(TrustedImm32(2 * PointerSize), StackPointerRegister); + addPtr(TrustedImm32(4 * PointerSize), StackPointerRegister); } }; diff --git a/src/qml/jsruntime/qv4global_p.h b/src/qml/jsruntime/qv4global_p.h index 95a87820fb..162fb66cba 100644 --- a/src/qml/jsruntime/qv4global_p.h +++ b/src/qml/jsruntime/qv4global_p.h @@ -88,7 +88,7 @@ inline double trunc(double d) { return d > 0 ? floor(d) : ceil(d); } // // NOTE: This should match the logic in qv4targetplatform_p.h! -#if defined(Q_PROCESSOR_X86) && (QT_POINTER_SIZE == 4) \ +#if defined(Q_PROCESSOR_X86_32) && (QT_POINTER_SIZE == 4) \ && (defined(Q_OS_WIN) || defined(Q_OS_LINUX) || defined(Q_OS_QNX) || defined(Q_OS_FREEBSD)) # define V4_ENABLE_JIT #elif defined(Q_PROCESSOR_X86_64) && (QT_POINTER_SIZE == 8) \ diff --git a/src/qml/types/qqmldelegatemodel.cpp b/src/qml/types/qqmldelegatemodel.cpp index 8a0d60a092..57bbf7465d 100644 --- a/src/qml/types/qqmldelegatemodel.cpp +++ b/src/qml/types/qqmldelegatemodel.cpp @@ -350,7 +350,7 @@ void QQmlDelegateModel::componentComplete() {QAbstractItemModel} subclass or a simple list. Models can also be created directly in QML, using a \l{ListModel} or - \l{XmlListModel}. + \l{QtQuick.XmlListModel::XmlListModel}{XmlListModel}. \sa {qml-data-models}{Data Models} */ |