aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-01-10 21:37:31 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-01-10 21:37:31 +0100
commit3b67ec7abdb3056f259eb0aa819de9b5bbf8ec3a (patch)
tree84345fc1b93e153313c367abc1e8eac1ced51631 /src/qml
parentede9a8285858873e644083bbad9a71da26276dce (diff)
parent3795904e3831722e222fa32a1e52aeb6b3e6ba87 (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.json5
-rw-r--r--src/qml/doc/qtqml.qdocconf2
-rw-r--r--src/qml/doc/src/qmllanguageref/syntax/signals.qdoc4
-rw-r--r--src/qml/jit/qv4assemblercommon_p.h4
-rw-r--r--src/qml/jit/qv4baselineassembler.cpp42
-rw-r--r--src/qml/jsruntime/qv4global_p.h2
-rw-r--r--src/qml/types/qqmldelegatemodel.cpp2
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}
*/