Rename some files
authorLars Knoll <lars.knoll@digia.com>
Fri, 24 Jan 2014 14:07:34 +0000 (15:07 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 31 Jan 2014 10:13:48 +0000 (11:13 +0100)
Rename qv4value_def_p.h -> qv4value_p.h and qv4value_p.h to
qv4value_inl_p.h.
It makes more sense to have the class definition in the file
that is named after the class and move the inline methods into
a _inl file. Doing this now, as I expect we'll be needing a few
more _inl files soon.

Change-Id: Ib59e9380e9e976254c6b4369574157f39b1b5f51
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
53 files changed:
src/imports/xmllistmodel/qqmlxmllistmodel.cpp
src/particles/qquickv4particledata_p.h
src/qml/compiler/qv4compileddata_p.h
src/qml/compiler/qv4instr_moth_p.h
src/qml/compiler/qv4isel_masm_p.h
src/qml/compiler/qv4isel_moth_p.h
src/qml/compiler/qv4isel_util_p.h
src/qml/compiler/qv4regalloc.cpp
src/qml/jsapi/qjsvalue.cpp
src/qml/jsapi/qjsvalue_p.h
src/qml/jsruntime/jsruntime.pri
src/qml/jsruntime/qv4context_p.h
src/qml/jsruntime/qv4engine.cpp
src/qml/jsruntime/qv4function.cpp
src/qml/jsruntime/qv4function_p.h
src/qml/jsruntime/qv4globalobject.cpp
src/qml/jsruntime/qv4include_p.h
src/qml/jsruntime/qv4managed_p.h
src/qml/jsruntime/qv4mm_p.h
src/qml/jsruntime/qv4property_p.h
src/qml/jsruntime/qv4qobjectwrapper_p.h
src/qml/jsruntime/qv4runtime_p.h
src/qml/jsruntime/qv4scopedvalue_p.h
src/qml/jsruntime/qv4sequenceobject_p.h
src/qml/jsruntime/qv4serialize.cpp
src/qml/jsruntime/qv4serialize_p.h
src/qml/jsruntime/qv4sparsearray_p.h
src/qml/jsruntime/qv4value_def_p.h [deleted file]
src/qml/jsruntime/qv4value_inl_p.h [new file with mode: 0644]
src/qml/jsruntime/qv4value_p.h
src/qml/jsruntime/qv4variantobject_p.h
src/qml/jsruntime/qv4vme_moth.cpp
src/qml/qml/qqmlboundsignal.cpp
src/qml/qml/qqmlcontextwrapper.cpp
src/qml/qml/qqmlcontextwrapper_p.h
src/qml/qml/qqmldata_p.h
src/qml/qml/qqmljavascriptexpression.cpp
src/qml/qml/qqmllistwrapper_p.h
src/qml/qml/qqmlpropertycache.cpp
src/qml/qml/qqmlpropertycache_p.h
src/qml/qml/qqmltypeloader_p.h
src/qml/qml/qqmltypewrapper_p.h
src/qml/qml/qqmlvaluetypewrapper_p.h
src/qml/qml/qqmlvmemetaobject_p.h
src/qml/qml/v8/qv8engine.cpp
src/qml/qml/v8/qv8engine_p.h
src/qml/types/qqmldelegatemodel.cpp
src/qml/types/qquickworkerscript.cpp
src/qml/util/qqmladaptormodel.cpp
src/quick/items/context2d/qquickcanvasitem.cpp
src/quick/items/context2d/qquickcontext2d.cpp
src/quick/items/context2d/qquickcontext2d_p.h
src/quick/items/qquickloader_p_p.h

index ebfdad5cbf2df9fe301e206dec72e8f73aab09e3..0b9be3105bc6e2d5ba636f23c6b7cdbb1b5f3fa8 100644 (file)
@@ -44,7 +44,7 @@
 #include <qqmlcontext.h>
 #include <private/qqmlengine_p.h>
 #include <private/qv8engine_p.h>
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4engine_p.h>
 #include <private/qv4object_p.h>
 
index b3614f94ffc5fd45d84c7bfd4e0100e68d118ea2..10e9ecacc54817ce74ff5d6f89b5807819d2ee92 100644 (file)
@@ -44,7 +44,7 @@
 
 #include <private/qv8engine_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 
 QT_BEGIN_NAMESPACE
 
index 451bf4216a3b08813a7255d79286229f9c279f7e..385a650d8e4dd0ccf9acbcaf4b5ab3d64bbcab60 100644 (file)
@@ -45,7 +45,7 @@
 #include <QVector>
 #include <QStringList>
 #include <QHash>
-#include <private/qv4value_def_p.h>
+#include <private/qv4value_p.h>
 #include <private/qv4executableallocator_p.h>
 
 QT_BEGIN_NAMESPACE
index a2cc0510034b823cf7070458b45d9b70d553f2c3..e010e6e909b560770d86a36d4fda9a8cda430715 100644 (file)
@@ -43,7 +43,7 @@
 #define QV4INSTR_MOTH_P_H
 
 #include <QtCore/qglobal.h>
-#include <private/qv4value_def_p.h>
+#include <private/qv4value_p.h>
 #include <private/qv4function_p.h>
 #include <private/qv4runtime_p.h>
 
index f22e0930e3e99a4b847434b48208311c324d3c92..eb4a2b9cb613104791e2e36356bb31e59d7114e0 100644 (file)
@@ -45,7 +45,7 @@
 #include "qv4jsir_p.h"
 #include "qv4isel_p.h"
 #include "qv4isel_util_p.h"
-#include "private/qv4value_def_p.h"
+#include "private/qv4value_p.h"
 #include "private/qv4lookup_p.h"
 
 #include <QtCore/QHash>
index d8a85ff249c42be343a92a7774a97de83572de9d..65c706a7b05743548e053428bcadb70276b23381 100644 (file)
@@ -46,7 +46,7 @@
 #include <private/qv4isel_p.h>
 #include <private/qv4isel_util_p.h>
 #include <private/qv4jsir_p.h>
-#include <private/qv4value_def_p.h>
+#include <private/qv4value_p.h>
 #include "qv4instr_moth_p.h"
 
 QT_BEGIN_NAMESPACE
index 38ea682d3bfe9a6680779996582e4554617d1922..1d7a99941ee5220e4aeecb3eea9033d3e0d645e8 100644 (file)
@@ -42,7 +42,7 @@
 #ifndef QV4ISEL_UTIL_P_H
 #define QV4ISEL_UTIL_P_H
 
-#include "private/qv4value_def_p.h"
+#include "private/qv4value_p.h"
 #include "qv4jsir_p.h"
 
 QT_BEGIN_NAMESPACE
index 2f1f64e523a454f1daa50569ae9c9c12ebd9fe50..bc88d5849a08182a084aadbe5ec4cdd2aa96eecf 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 #include "qv4regalloc_p.h"
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 
 #include <algorithm>
 
index c8de31ef784aa73e4eb4eb654d0f0e9f8a2af5ce..38a8e40cb24fd33482503ae1fbb57a4cb83e2099 100644 (file)
@@ -45,7 +45,7 @@
 #include "qjsengine.h"
 #include "qjsvalue.h"
 #include "qjsvalue_p.h"
-#include "qv4value_p.h"
+#include "qv4value_inl_p.h"
 #include "qv4object_p.h"
 #include "qv4functionobject_p.h"
 #include "qv4dateobject_p.h"
index d8da664cc656da3ad4f1f6da473c990d73c8d87a..41856b1e98a380597ccd87caccba75e7d0e1f325 100644 (file)
@@ -55,7 +55,7 @@
 
 #include <qjsvalue.h>
 #include <private/qtqmlglobal_p.h>
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4string_p.h>
 #include <private/qv4engine_p.h>
 #include <private/qv4object_p.h>
index a90cea96c287d06fb9fb7eb9e5818595fb0b6133..6afcc77f407bfb0807883f6d7b001fb98113eead 100644 (file)
@@ -49,8 +49,8 @@ HEADERS += \
     $$PWD/qv4context_p.h \
     $$PWD/qv4runtime_p.h \
     $$PWD/qv4math_p.h \
+    $$PWD/qv4value_inl_p.h \
     $$PWD/qv4value_p.h \
-    $$PWD/qv4value_def_p.h \
     $$PWD/qv4debugging_p.h \
     $$PWD/qv4lookup_p.h \
     $$PWD/qv4identifier_p.h \
index b794c285821b948e71dee2d007b6a36cf282a4f1..2d782f9a318dd8aad87b4267234a86fa92bc09e2 100644 (file)
@@ -42,7 +42,7 @@
 #define QMLJS_ENVIRONMENT_H
 
 #include "qv4global_p.h"
-#include "qv4value_def_p.h"
+#include "qv4value_p.h"
 #include "qv4managed_p.h"
 #include "qv4engine_p.h"
 
index 093fe96dd56a8eab5b6d32ff0d7d31fe5324c416..66216e6d85397cd18dceaf1db5368c1e7051182b 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 #include <qv4engine_p.h>
 #include <qv4context_p.h>
-#include <qv4value_p.h>
+#include <qv4value_inl_p.h>
 #include <qv4object_p.h>
 #include <qv4objectproto_p.h>
 #include <qv4objectiterator_p.h>
index 0e90e213c409330d27378e8d2a15093ac2e025e5..811b445f9e995fbcacc3b7478390c3dbf1e3b928 100644 (file)
@@ -42,7 +42,7 @@
 #include "qv4function_p.h"
 #include "qv4managed_p.h"
 #include "qv4string_p.h"
-#include "qv4value_p.h"
+#include "qv4value_inl_p.h"
 #include "qv4engine_p.h"
 #include "qv4lookup_p.h"
 
index 8d07853b45c9c92ebdf34bac917de97f1795969e..8a14665e426580d1b1637db3a839b51d7133c7d2 100644 (file)
@@ -47,7 +47,7 @@
 #include <QtCore/QByteArray>
 #include <QtCore/qurl.h>
 
-#include "qv4value_def_p.h"
+#include "qv4value_p.h"
 #include <private/qv4compileddata_p.h>
 #include <private/qv4engine_p.h>
 
index 224d383614e64c882a5ed48a54d4890249dc0999..76a8b0c25c097aa0698f9527a6d3035b360c010b 100644 (file)
@@ -41,7 +41,7 @@
 
 #include "qv4globalobject_p.h"
 #include "qv4mm_p.h"
-#include "qv4value_p.h"
+#include "qv4value_inl_p.h"
 #include "qv4context_p.h"
 #include "qv4function_p.h"
 #include "qv4debugging_p.h"
index c4c72f3a830eec81cac2ebdcce6df098a29fcd70..d1cadb3aa5a43331651c9ccbc45ce072b29c40f7 100644 (file)
@@ -58,7 +58,7 @@
 
 #include <private/qqmlcontext_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4context_p.h>
 
 QT_BEGIN_NAMESPACE
index da2aab627eb6f3f31475862284ac68469d216e28..fa78ce5a64f933e88a8c09cec7538e30a2123c4b 100644 (file)
@@ -45,7 +45,7 @@
 #include <QtCore/QVector>
 #include <QtCore/QDebug>
 #include "qv4global_p.h"
-#include "qv4value_def_p.h"
+#include "qv4value_p.h"
 #include "qv4internalclass_p.h"
 
 QT_BEGIN_NAMESPACE
index 7d28319536251453423e1e3049cfc008b1894460..a8fd585332ef128cf91d6a9cdd1b091c518135fc 100644 (file)
@@ -44,7 +44,7 @@
 
 #include "qv4global_p.h"
 #include "qv4context_p.h"
-#include "qv4value_p.h"
+#include "qv4value_inl_p.h"
 
 #include <QScopedPointer>
 
index 6381fe7687e2eb6c8226251962e2dc0da0e6a865..bc2b961d22163c7060ed8420474592903ee4de13 100644 (file)
@@ -42,7 +42,7 @@
 #define QV4PROPERTYDESCRIPTOR_H
 
 #include "qv4global_p.h"
-#include "qv4value_p.h"
+#include "qv4value_inl_p.h"
 #include "qv4internalclass_p.h"
 
 QT_BEGIN_NAMESPACE
index f6d1ac0790689eb3e302c1aba242cc716ecf52e8..75cfa26cdd16a704aac099b18e993d8ce70c4ab0 100644 (file)
@@ -62,7 +62,7 @@
 #include <private/qqmlpropertycache_p.h>
 #include <private/qintrusivelist_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4functionobject_p.h>
 
 QT_BEGIN_NAMESPACE
index 2e252b106756113405a6d1bfab2fb2e8ba0a763a..4437198a7bb9e2ab0f456d9c2118b2e6cf3fd5c2 100644 (file)
@@ -42,7 +42,7 @@
 #define QMLJS_RUNTIME_H
 
 #include "qv4global_p.h"
-#include "qv4value_p.h"
+#include "qv4value_inl_p.h"
 #include "qv4math_p.h"
 #include "qv4scopedvalue_p.h"
 
index 2c71a36a3d6e77408cecaabe7ccb4ba26be6ab05..38431d2c44e222902037a01afc572f84d6bb0926 100644 (file)
@@ -42,7 +42,7 @@
 #define QV4SCOPEDVALUE_P_H
 
 #include "qv4context_p.h"
-#include "qv4value_def_p.h"
+#include "qv4value_p.h"
 
 QT_BEGIN_NAMESPACE
 
index 54a96863df914cd8d35dcf527692c87ebbb23d6e..4a5e82b68866a2247cac52fd4ea569f75d65b10a 100644 (file)
@@ -56,7 +56,7 @@
 #include <QtCore/qglobal.h>
 #include <QtCore/qvariant.h>
 
-#include "qv4value_p.h"
+#include "qv4value_inl_p.h"
 #include "qv4object_p.h"
 
 QT_BEGIN_NAMESPACE
index 50899c3893f6148f161751ff675d2f49f86f298c..3d754389a2b60238787ad042843315ead8d16bbd 100644 (file)
@@ -45,7 +45,7 @@
 #include <private/qqmllistmodel_p.h>
 #include <private/qqmllistmodelworkeragent_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4dateobject_p.h>
 #include <private/qv4regexpobject_p.h>
 #include <private/qv4sequenceobject_p.h>
index a9f40e43cdff1da5e38726a8cdf304237b2609ef..5ab8ae9258357e35ddd20be0fc46c8bba9300266 100644 (file)
@@ -54,7 +54,7 @@
 //
 
 #include <QtCore/qbytearray.h>
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 
 QT_BEGIN_NAMESPACE
 
index 6c2808b6b1f02032d98f9df9867ad5f16d534c9b..648fc9ac7d5e02fe2bf6ad372eaf3e3c9396a677 100644 (file)
@@ -44,7 +44,7 @@
 
 #include "qv4global_p.h"
 #include <QtCore/qmap.h>
-#include "qv4value_p.h"
+#include "qv4value_inl_p.h"
 #include "qv4scopedvalue_p.h"
 #include "qv4property_p.h"
 #include <assert.h>
diff --git a/src/qml/jsruntime/qv4value_def_p.h b/src/qml/jsruntime/qv4value_def_p.h
deleted file mode 100644 (file)
index cf351c1..0000000
+++ /dev/null
@@ -1,476 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtQml module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia.  For licensing terms and
-** conditions see http://qt.digia.com/licensing.  For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights.  These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef QV4VALUE_DEF_P_H
-#define QV4VALUE_DEF_P_H
-
-#include <QtCore/QString>
-#include "qv4global_p.h"
-
-QT_BEGIN_NAMESPACE
-
-namespace QV4 {
-
-typedef uint Bool;
-
-template <typename T>
-struct Returned : private T
-{
-    static Returned<T> *create(T *t) { return static_cast<Returned<T> *>(t); }
-    T *getPointer() { return this; }
-    template<typename X>
-    static T *getPointer(Returned<X> *x) { return x->getPointer(); }
-    template<typename X>
-    Returned<X> *as() { return Returned<X>::create(Returned<X>::getPointer(this)); }
-    using T::asReturnedValue;
-};
-
-struct Q_QML_EXPORT Value
-{
-    /*
-        We use two different ways of encoding JS values. One for 32bit and one for 64bit systems.
-
-        In both cases, we 8 bytes for a value and different variant of NaN boxing. A Double NaN (actually -qNaN)
-        is indicated by a number that has the top 13 bits set. THe other values are usually set to 0 by the
-        processor, and are thus free for us to store other data. We keep pointers in there for managed objects,
-        and encode the other types using the free space given to use by the unused bits for NaN values. This also
-        works for pointers on 64 bit systems, as they all currently only have 48 bits of addressable memory.
-
-        On 32bit, we store doubles as doubles. All other values, have the high 32bits set to a value that
-        will make the number a NaN. The Masks below are used for encoding the other types.
-
-        On 64 bit, we xor Doubles with (0xffff8000 << 32). Thas has the effect that no doubles will get encoded
-        with the 13 highest bits all 0. We are now using special values for bits 14-17 to encode our values. These
-        can be used, as the highest valid pointer on a 64 bit system is 2^48-1.
-
-        If they are all 0, we have a pointer to a Managed object. If bit 14 is set we have an integer.
-        This makes testing for pointers and numbers very fast (we have a number if any of the highest 14 bits is set).
-
-        Bit 15-17 is then used to encode other immediates.
-    */
-
-
-    union {
-        quint64 val;
-#if QT_POINTER_SIZE == 8
-        Managed *m;
-        Object *o;
-        String *s;
-#else
-        double dbl;
-#endif
-        struct {
-#if Q_BYTE_ORDER != Q_LITTLE_ENDIAN
-            uint tag;
-#endif
-            union {
-                uint uint_32;
-                int int_32;
-#if QT_POINTER_SIZE == 4
-                Managed *m;
-                Object *o;
-                String *s;
-#endif
-            };
-#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
-            uint tag;
-#endif
-        };
-    };
-
-#if QT_POINTER_SIZE == 4
-    enum Masks {
-        NaN_Mask = 0x7ff80000,
-        NotDouble_Mask = 0x7ffc0000,
-        Type_Mask = 0xffff8000,
-        Immediate_Mask = NotDouble_Mask | 0x00008000,
-        IsNullOrUndefined_Mask = Immediate_Mask | 0x20000,
-        Tag_Shift = 32
-    };
-    enum ValueType {
-        Undefined_Type = Immediate_Mask | 0x00000,
-        Null_Type = Immediate_Mask | 0x10000,
-        Boolean_Type = Immediate_Mask | 0x20000,
-        Integer_Type = Immediate_Mask | 0x30000,
-        Managed_Type = NotDouble_Mask | 0x00000,
-        Empty_Type = NotDouble_Mask | 0x30000
-    };
-
-    enum ImmediateFlags {
-        ConvertibleToInt = Immediate_Mask | 0x1
-    };
-
-    enum ValueTypeInternal {
-        _Null_Type = Null_Type | ConvertibleToInt,
-        _Boolean_Type = Boolean_Type | ConvertibleToInt,
-        _Integer_Type = Integer_Type | ConvertibleToInt,
-
-    };
-#else
-    static const quint64 NaNEncodeMask = 0xffff800000000000ll;
-    static const quint64 IsInt32Mask  = 0x0002000000000000ll;
-    static const quint64 IsDoubleMask = 0xfffc000000000000ll;
-    static const quint64 IsNumberMask = IsInt32Mask|IsDoubleMask;
-    static const quint64 IsNullOrUndefinedMask = 0x0000800000000000ll;
-    static const quint64 IsNullOrBooleanMask = 0x0001000000000000ll;
-    static const quint64 IsConvertibleToIntMask = IsInt32Mask|IsNullOrBooleanMask;
-
-    enum Masks {
-        NaN_Mask = 0x7ff80000,
-        Type_Mask = 0xffff8000,
-        IsDouble_Mask = 0xfffc0000,
-        Immediate_Mask = 0x00018000,
-        IsNullOrUndefined_Mask = 0x00008000,
-        IsNullOrBoolean_Mask = 0x00010000,
-        Tag_Shift = 32
-    };
-    enum ValueType {
-        Undefined_Type = IsNullOrUndefined_Mask,
-        Null_Type = IsNullOrUndefined_Mask|IsNullOrBoolean_Mask,
-        Boolean_Type = IsNullOrBoolean_Mask,
-        Integer_Type = 0x20000|IsNullOrBoolean_Mask,
-        Managed_Type = 0,
-        Empty_Type = Undefined_Type | 0x4000
-    };
-    enum {
-        IsDouble_Shift = 64-14,
-        IsNumber_Shift = 64-15,
-        IsConvertibleToInt_Shift = 64-16,
-        IsManaged_Shift = 64-17
-    };
-
-
-    enum ValueTypeInternal {
-        _Null_Type = Null_Type,
-        _Boolean_Type = Boolean_Type,
-        _Integer_Type = Integer_Type
-    };
-#endif
-
-    inline unsigned type() const {
-        return tag & Type_Mask;
-    }
-
-    // used internally in property
-    inline bool isEmpty() const { return tag == Empty_Type; }
-
-    inline bool isUndefined() const { return tag == Undefined_Type; }
-    inline bool isNull() const { return tag == _Null_Type; }
-    inline bool isBoolean() const { return tag == _Boolean_Type; }
-#if QT_POINTER_SIZE == 8
-    inline bool isInteger() const { return (val >> IsNumber_Shift) == 1; }
-    inline bool isDouble() const { return (val >> IsDouble_Shift); }
-    inline bool isNumber() const { return (val >> IsNumber_Shift); }
-    inline bool isManaged() const { return !(val >> IsManaged_Shift); }
-    inline bool isNullOrUndefined() const { return ((val >> IsManaged_Shift) & ~2) == 1; }
-    inline bool integerCompatible() const { return ((val >> IsConvertibleToInt_Shift) & ~2) == 1; }
-    static inline bool integerCompatible(Value a, Value b) {
-        return a.integerCompatible() && b.integerCompatible();
-    }
-    static inline bool bothDouble(Value a, Value b) {
-        return a.isDouble() && b.isDouble();
-    }
-    double doubleValue() const {
-        Q_ASSERT(isDouble());
-        union {
-            quint64 i;
-            double d;
-        } v;
-        v.i = val ^ NaNEncodeMask;
-        return v.d;
-    }
-    void setDouble(double d) {
-        union {
-            quint64 i;
-            double d;
-        } v;
-        v.d = d;
-        val = v.i ^ NaNEncodeMask;
-        Q_ASSERT(isDouble());
-    }
-    bool isNaN() const { return (tag & 0x7fff8000) == 0x00078000; }
-#else
-    inline bool isInteger() const { return tag == _Integer_Type; }
-    inline bool isDouble() const { return (tag & NotDouble_Mask) != NotDouble_Mask; }
-    inline bool isNumber() const { return tag == _Integer_Type || (tag & NotDouble_Mask) != NotDouble_Mask; }
-    inline bool isManaged() const { return tag == Managed_Type; }
-    inline bool isNullOrUndefined() const { return (tag & IsNullOrUndefined_Mask) == Undefined_Type; }
-    inline bool integerCompatible() const { return (tag & ConvertibleToInt) == ConvertibleToInt; }
-    static inline bool integerCompatible(Value a, Value b) {
-        return ((a.tag & b.tag) & ConvertibleToInt) == ConvertibleToInt;
-    }
-    static inline bool bothDouble(Value a, Value b) {
-        return ((a.tag | b.tag) & NotDouble_Mask) != NotDouble_Mask;
-    }
-    double doubleValue() const { return dbl; }
-    void setDouble(double d) { dbl = d; }
-    bool isNaN() const { return (tag & QV4::Value::NotDouble_Mask) == QV4::Value::NaN_Mask; }
-#endif
-    inline bool isString() const;
-    inline bool isObject() const;
-    inline bool isInt32() {
-        if (tag == _Integer_Type)
-            return true;
-        if (isDouble()) {
-            double d = doubleValue();
-            int i = (int)d;
-            if (i == d) {
-                int_32 = i;
-                tag = _Integer_Type;
-                return true;
-            }
-        }
-        return false;
-    }
-    double asDouble() const {
-        if (tag == _Integer_Type)
-            return int_32;
-        return doubleValue();
-    }
-
-    bool booleanValue() const {
-        return int_32;
-    }
-    int integerValue() const {
-        return int_32;
-    }
-
-    String *stringValue() const {
-        return s;
-    }
-    Object *objectValue() const {
-        return o;
-    }
-    Managed *managed() const {
-        return m;
-    }
-
-    quint64 rawValue() const {
-        return val;
-    }
-
-    static inline Value fromManaged(Managed *o);
-
-    int toUInt16() const;
-    inline int toInt32() const;
-    inline unsigned int toUInt32() const;
-
-    inline bool toBoolean() const;
-    double toInteger() const;
-    inline double toNumber() const;
-    double toNumberImpl() const;
-    QString toQStringNoThrow() const;
-    QString toQString() const;
-    String *toString(ExecutionContext *ctx) const;
-    Object *toObject(ExecutionContext *ctx) const;
-
-    inline bool isPrimitive() const;
-    inline bool tryIntegerConversion() {
-        bool b = integerCompatible();
-        if (b)
-            tag = _Integer_Type;
-        return b;
-    }
-
-    inline String *asString() const;
-    inline Managed *asManaged() const;
-    inline Object *asObject() const;
-    inline FunctionObject *asFunctionObject() const;
-    inline NumberObject *asNumberObject() const;
-    inline StringObject *asStringObject() const;
-    inline DateObject *asDateObject() const;
-    inline ArrayObject *asArrayObject() const;
-    inline ErrorObject *asErrorObject() const;
-
-    template<typename T> inline T *as() const;
-
-    inline uint asArrayIndex() const;
-    inline uint asArrayLength(bool *ok) const;
-
-    inline ExecutionEngine *engine() const;
-
-    ReturnedValue asReturnedValue() const { return val; }
-    static Value fromReturnedValue(ReturnedValue val) { Value v; v.val = val; return v; }
-    Value &operator=(ReturnedValue v) { val = v; return *this; }
-    template <typename T>
-    inline Value &operator=(Returned<T> *t);
-
-    // Section 9.12
-    bool sameValue(Value other) const;
-
-    inline void mark(ExecutionEngine *e) const;
-};
-
-inline Managed *Value::asManaged() const
-{
-    if (isManaged())
-        return managed();
-    return 0;
-}
-
-inline String *Value::asString() const
-{
-    if (isString())
-        return stringValue();
-    return 0;
-}
-
-struct Q_QML_EXPORT Primitive : public Value
-{
-    inline static Primitive emptyValue();
-    static inline Primitive fromBoolean(bool b);
-    static inline Primitive fromInt32(int i);
-    inline static Primitive undefinedValue();
-    static inline Primitive nullValue();
-    static inline Primitive fromDouble(double d);
-    static inline Primitive fromUInt32(uint i);
-
-    static double toInteger(double fromNumber);
-    static int toInt32(double value);
-    static unsigned int toUInt32(double value);
-
-    inline operator ValueRef();
-    Value asValue() const { return *this; }
-};
-
-inline Primitive Primitive::undefinedValue()
-{
-    Primitive v;
-#if QT_POINTER_SIZE == 8
-    v.val = quint64(Undefined_Type) << Tag_Shift;
-#else
-    v.tag = Undefined_Type;
-    v.int_32 = 0;
-#endif
-    return v;
-}
-
-inline Primitive Primitive::emptyValue()
-{
-    Primitive v;
-    v.tag = Value::Empty_Type;
-    v.uint_32 = 0;
-    return v;
-}
-
-inline Value Value::fromManaged(Managed *m)
-{
-    if (!m)
-        return QV4::Primitive::undefinedValue();
-    Value v;
-#if QT_POINTER_SIZE == 8
-    v.m = m;
-#else
-    v.tag = Managed_Type;
-    v.m = m;
-#endif
-    return v;
-}
-
-struct SafeValue : public Value
-{
-    SafeValue &operator =(const ScopedValue &v);
-    template<typename T>
-    SafeValue &operator=(Returned<T> *t);
-    SafeValue &operator=(ReturnedValue v) {
-        val = v;
-        return *this;
-    }
-    template<typename T>
-    SafeValue &operator=(T *t) {
-        val = Value::fromManaged(t).val;
-        return *this;
-    }
-
-    template<typename T>
-    SafeValue &operator=(const Scoped<T> &t);
-    SafeValue &operator=(const ValueRef v);
-    SafeValue &operator=(const Value &v) {
-        val = v.val;
-        return *this;
-    }
-    template<typename T>
-    inline Returned<T> *as();
-    template<typename T>
-    inline Referenced<T> asRef();
-};
-
-template <typename T>
-struct Safe : public SafeValue
-{
-    template<typename X>
-    Safe &operator =(X *x) {
-        val = Value::fromManaged(x).val;
-    }
-    Safe &operator =(T *t);
-    Safe &operator =(const Scoped<T> &v);
-    Safe &operator =(const Referenced<T> &v);
-    Safe &operator =(Returned<T> *t);
-
-    Safe &operator =(const Safe<T> &t);
-
-    bool operator!() const { return !managed(); }
-
-    T *operator->() { return static_cast<T *>(managed()); }
-    const T *operator->() const { return static_cast<T *>(managed()); }
-    T *getPointer() const { return static_cast<T *>(managed()); }
-    Returned<T> *ret() const;
-
-    void mark(ExecutionEngine *e) { if (managed()) managed()->mark(e); }
-};
-typedef Safe<String> SafeString;
-typedef Safe<Object> SafeObject;
-
-template<typename T>
-T *value_cast(const Value &v)
-{
-    return v.as<T>();
-}
-
-template<typename T>
-ReturnedValue value_convert(ExecutionContext *ctx, const Value &v);
-
-
-
-}
-
-QT_END_NAMESPACE
-
-#endif // QV4VALUE_DEF_P_H
diff --git a/src/qml/jsruntime/qv4value_inl_p.h b/src/qml/jsruntime/qv4value_inl_p.h
new file mode 100644 (file)
index 0000000..2618ef3
--- /dev/null
@@ -0,0 +1,397 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtQml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QV4VALUE_INL_H
+#define QV4VALUE_INL_H
+
+#include <cmath> // this HAS to come
+
+#include <QtCore/QString>
+#include <QtCore/qnumeric.h>
+#include "qv4global_p.h"
+#include "qv4string_p.h"
+#include <QtCore/QDebug>
+#include "qv4managed_p.h"
+#include "qv4engine_p.h"
+#include <private/qtqmlglobal_p.h>
+
+//#include <wtf/MathExtras.h>
+
+#include "qv4value_p.h"
+
+QT_BEGIN_NAMESPACE
+
+namespace QV4 {
+
+inline bool Value::isString() const
+{
+    if (!isManaged())
+        return false;
+    return managed() && managed()->internalClass->vtable->isString;
+}
+inline bool Value::isObject() const
+{
+    if (!isManaged())
+        return false;
+    return managed() && managed()->internalClass->vtable->isObject;
+}
+
+inline bool Value::isPrimitive() const
+{
+    return !isObject();
+}
+
+inline ExecutionEngine *Value::engine() const
+{
+    Managed *m = asManaged();
+    return m ? m->engine() : 0;
+}
+
+inline void Value::mark(ExecutionEngine *e) const
+{
+    if (!val)
+        return;
+    Managed *m = asManaged();
+    if (m)
+        m->mark(e);
+}
+
+inline Primitive Primitive::nullValue()
+{
+    Primitive v;
+#if QT_POINTER_SIZE == 8
+    v.val = quint64(_Null_Type) << Tag_Shift;
+#else
+    v.tag = _Null_Type;
+    v.int_32 = 0;
+#endif
+    return v;
+}
+
+inline Primitive Primitive::fromBoolean(bool b)
+{
+    Primitive v;
+    v.tag = _Boolean_Type;
+    v.int_32 = (bool)b;
+    return v;
+}
+
+inline Primitive Primitive::fromDouble(double d)
+{
+    Primitive v;
+    v.setDouble(d);
+    return v;
+}
+
+inline Primitive Primitive::fromInt32(int i)
+{
+    Primitive v;
+    v.tag = _Integer_Type;
+    v.int_32 = i;
+    return v;
+}
+
+inline Primitive Primitive::fromUInt32(uint i)
+{
+    Primitive v;
+    if (i < INT_MAX) {
+        v.tag = _Integer_Type;
+        v.int_32 = (int)i;
+    } else {
+        v.setDouble(i);
+    }
+    return v;
+}
+
+inline double Value::toNumber() const
+{
+    if (integerCompatible())
+        return int_32;
+    if (isDouble())
+        return doubleValue();
+    return toNumberImpl();
+}
+
+inline int Value::toInt32() const
+{
+    if (integerCompatible())
+        return int_32;
+    double d;
+    if (isDouble())
+        d = doubleValue();
+    else
+        d = toNumberImpl();
+
+    const double D32 = 4294967296.0;
+    const double D31 = D32 / 2.0;
+
+    if ((d >= -D31 && d < D31))
+        return static_cast<int>(d);
+
+    return Primitive::toInt32(d);
+}
+
+inline unsigned int Value::toUInt32() const
+{
+    return (unsigned int)toInt32();
+}
+
+
+inline bool Value::toBoolean() const
+{
+    switch (type()) {
+    case Value::Undefined_Type:
+    case Value::Null_Type:
+        return false;
+    case Value::Boolean_Type:
+    case Value::Integer_Type:
+        return (bool)int_32;
+    case Value::Managed_Type:
+        if (isString())
+            return stringValue()->toQString().length() > 0;
+        return true;
+    default: // double
+        return doubleValue() && !std::isnan(doubleValue());
+    }
+}
+
+inline uint Value::asArrayIndex() const
+{
+#if QT_POINTER_SIZE == 8
+    if (!isNumber())
+        return UINT_MAX;
+    if (isInteger())
+        return int_32 >= 0 ? (uint)int_32 : UINT_MAX;
+#else
+    if (isInteger() && int_32 >= 0)
+        return (uint)int_32;
+    if (!isDouble())
+        return UINT_MAX;
+#endif
+    double d = doubleValue();
+    uint idx = (uint)d;
+    if (idx != d)
+        return UINT_MAX;
+    return idx;
+}
+
+inline uint Value::asArrayLength(bool *ok) const
+{
+    *ok = true;
+    if (integerCompatible() && int_32 >= 0)
+        return (uint)int_32;
+    if (isDouble()) {
+        double d = doubleValue();
+        uint idx = (uint)d;
+        if (idx != d) {
+            *ok = false;
+            return UINT_MAX;
+        }
+        return idx;
+    }
+    if (isString())
+        return stringValue()->toUInt(ok);
+
+    uint idx = toUInt32();
+    double d = toNumber();
+    if (d != idx) {
+        *ok = false;
+        return UINT_MAX;
+    }
+    return idx;
+}
+
+inline Object *Value::asObject() const
+{
+    return isObject() ? objectValue() : 0;
+}
+
+inline FunctionObject *Value::asFunctionObject() const
+{
+    return isObject() ? managed()->asFunctionObject() : 0;
+}
+
+inline NumberObject *Value::asNumberObject() const
+{
+    return isObject() ? managed()->asNumberObject() : 0;
+}
+
+inline StringObject *Value::asStringObject() const
+{
+    return isObject() ? managed()->asStringObject() : 0;
+}
+
+inline DateObject *Value::asDateObject() const
+{
+    return isObject() ? managed()->asDateObject() : 0;
+}
+
+inline ArrayObject *Value::asArrayObject() const
+{
+    return isObject() ? managed()->asArrayObject() : 0;
+}
+
+inline ErrorObject *Value::asErrorObject() const
+{
+    return isObject() ? managed()->asErrorObject() : 0;
+}
+
+template<typename T>
+inline T *Value::as() const { Managed *m = isObject() ? managed() : 0; return m ? m->as<T>() : 0; }
+
+struct Q_QML_PRIVATE_EXPORT PersistentValuePrivate
+{
+    PersistentValuePrivate(ReturnedValue v, ExecutionEngine *engine = 0, bool weak = false);
+    virtual ~PersistentValuePrivate();
+    SafeValue value;
+    uint refcount;
+    bool weak;
+    QV4::ExecutionEngine *engine;
+    PersistentValuePrivate **prev;
+    PersistentValuePrivate *next;
+
+    void init();
+    void removeFromList();
+    void ref() { ++refcount; }
+    void deref();
+    PersistentValuePrivate *detach(const ReturnedValue value, bool weak = false);
+
+    bool checkEngine(QV4::ExecutionEngine *otherEngine) {
+        if (!engine) {
+            Q_ASSERT(!value.isObject());
+            engine = otherEngine;
+        }
+        return (engine == otherEngine);
+    }
+};
+
+class Q_QML_EXPORT PersistentValue
+{
+public:
+    PersistentValue() : d(0) {}
+    PersistentValue(const PersistentValue &other);
+    PersistentValue &operator=(const PersistentValue &other);
+
+    PersistentValue(const ValueRef val);
+    PersistentValue(ReturnedValue val);
+    template<typename T>
+    PersistentValue(Returned<T> *obj);
+    template<typename T>
+    PersistentValue(const Referenced<T> obj);
+    PersistentValue &operator=(const ValueRef other);
+    PersistentValue &operator =(ReturnedValue other);
+    template<typename T>
+    PersistentValue &operator=(Returned<T> *obj);
+    template<typename T>
+    PersistentValue &operator=(const Referenced<T> obj);
+    ~PersistentValue();
+
+    ReturnedValue value() const {
+        return (d ? d->value.asReturnedValue() : Primitive::undefinedValue().asReturnedValue());
+    }
+
+    ExecutionEngine *engine() {
+        if (!d)
+            return 0;
+        if (d->engine)
+            return d->engine;
+        Managed *m = d->value.asManaged();
+        return m ? m->engine() : 0;
+    }
+
+    bool isUndefined() const { return !d || d->value.isUndefined(); }
+    bool isNullOrUndefined() const { return !d || d->value.isNullOrUndefined(); }
+    void clear() {
+        *this = PersistentValue();
+    }
+
+private:
+    friend struct ValueRef;
+    PersistentValuePrivate *d;
+};
+
+class Q_QML_EXPORT WeakValue
+{
+public:
+    WeakValue() : d(0) {}
+    WeakValue(const ValueRef val);
+    WeakValue(const WeakValue &other);
+    WeakValue(ReturnedValue val);
+    template<typename T>
+    WeakValue(Returned<T> *obj);
+    WeakValue &operator=(const WeakValue &other);
+    WeakValue &operator=(const ValueRef other);
+    WeakValue &operator =(const ReturnedValue &other);
+    template<typename T>
+    WeakValue &operator=(Returned<T> *obj);
+
+    ~WeakValue();
+
+    ReturnedValue value() const {
+        return (d ? d->value.asReturnedValue() : Primitive::undefinedValue().asReturnedValue());
+    }
+
+    ExecutionEngine *engine() {
+        if (!d)
+            return 0;
+        if (d->engine)
+            return d->engine;
+        Managed *m = d->value.asManaged();
+        return m ? m->engine() : 0;
+    }
+
+    bool isUndefined() const { return !d || d->value.isUndefined(); }
+    bool isNullOrUndefined() const { return !d || d->value.isNullOrUndefined(); }
+    void clear() {
+        *this = WeakValue();
+    }
+
+    void markOnce(ExecutionEngine *e);
+
+private:
+    friend struct ValueRef;
+    PersistentValuePrivate *d;
+};
+
+} // namespace QV4
+
+QT_END_NAMESPACE
+
+#endif
index b93fcbe4bd718af53c5ae26ea6e6f49b92be37fe..4b16114174c006662634653e0288b26ec82b17e6 100644 (file)
 ** $QT_END_LICENSE$
 **
 ****************************************************************************/
-#ifndef QMLJS_VALUE_H
-#define QMLJS_VALUE_H
-
-#include <cmath> // this HAS to come
+#ifndef QV4VALUE_P_H
+#define QV4VALUE_P_H
 
 #include <QtCore/QString>
-#include <QtCore/qnumeric.h>
 #include "qv4global_p.h"
-#include "qv4string_p.h"
-#include <QtCore/QDebug>
-#include "qv4managed_p.h"
-#include "qv4engine_p.h"
-#include <private/qtqmlglobal_p.h>
-
-//#include <wtf/MathExtras.h>
-
-#include "qv4value_def_p.h"
 
 QT_BEGIN_NAMESPACE
 
 namespace QV4 {
 
-inline bool Value::isString() const
-{
-    if (!isManaged())
-        return false;
-    return managed() && managed()->internalClass->vtable->isString;
-}
-inline bool Value::isObject() const
-{
-    if (!isManaged())
-        return false;
-    return managed() && managed()->internalClass->vtable->isObject;
-}
+typedef uint Bool;
 
-inline bool Value::isPrimitive() const
+template <typename T>
+struct Returned : private T
 {
-    return !isObject();
-}
+    static Returned<T> *create(T *t) { return static_cast<Returned<T> *>(t); }
+    T *getPointer() { return this; }
+    template<typename X>
+    static T *getPointer(Returned<X> *x) { return x->getPointer(); }
+    template<typename X>
+    Returned<X> *as() { return Returned<X>::create(Returned<X>::getPointer(this)); }
+    using T::asReturnedValue;
+};
 
-inline ExecutionEngine *Value::engine() const
+struct Q_QML_EXPORT Value
 {
-    Managed *m = asManaged();
-    return m ? m->engine() : 0;
-}
+    /*
+        We use two different ways of encoding JS values. One for 32bit and one for 64bit systems.
 
-inline void Value::mark(ExecutionEngine *e) const
-{
-    if (!val)
-        return;
-    Managed *m = asManaged();
-    if (m)
-        m->mark(e);
-}
+        In both cases, we 8 bytes for a value and different variant of NaN boxing. A Double NaN (actually -qNaN)
+        is indicated by a number that has the top 13 bits set. THe other values are usually set to 0 by the
+        processor, and are thus free for us to store other data. We keep pointers in there for managed objects,
+        and encode the other types using the free space given to use by the unused bits for NaN values. This also
+        works for pointers on 64 bit systems, as they all currently only have 48 bits of addressable memory.
 
-inline Primitive Primitive::nullValue()
-{
-    Primitive v;
+        On 32bit, we store doubles as doubles. All other values, have the high 32bits set to a value that
+        will make the number a NaN. The Masks below are used for encoding the other types.
+
+        On 64 bit, we xor Doubles with (0xffff8000 << 32). Thas has the effect that no doubles will get encoded
+        with the 13 highest bits all 0. We are now using special values for bits 14-17 to encode our values. These
+        can be used, as the highest valid pointer on a 64 bit system is 2^48-1.
+
+        If they are all 0, we have a pointer to a Managed object. If bit 14 is set we have an integer.
+        This makes testing for pointers and numbers very fast (we have a number if any of the highest 14 bits is set).
+
+        Bit 15-17 is then used to encode other immediates.
+    */
+
+
+    union {
+        quint64 val;
 #if QT_POINTER_SIZE == 8
-    v.val = quint64(_Null_Type) << Tag_Shift;
+        Managed *m;
+        Object *o;
+        String *s;
 #else
-    v.tag = _Null_Type;
-    v.int_32 = 0;
+        double dbl;
+#endif
+        struct {
+#if Q_BYTE_ORDER != Q_LITTLE_ENDIAN
+            uint tag;
+#endif
+            union {
+                uint uint_32;
+                int int_32;
+#if QT_POINTER_SIZE == 4
+                Managed *m;
+                Object *o;
+                String *s;
+#endif
+            };
+#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
+            uint tag;
+#endif
+        };
+    };
+
+#if QT_POINTER_SIZE == 4
+    enum Masks {
+        NaN_Mask = 0x7ff80000,
+        NotDouble_Mask = 0x7ffc0000,
+        Type_Mask = 0xffff8000,
+        Immediate_Mask = NotDouble_Mask | 0x00008000,
+        IsNullOrUndefined_Mask = Immediate_Mask | 0x20000,
+        Tag_Shift = 32
+    };
+    enum ValueType {
+        Undefined_Type = Immediate_Mask | 0x00000,
+        Null_Type = Immediate_Mask | 0x10000,
+        Boolean_Type = Immediate_Mask | 0x20000,
+        Integer_Type = Immediate_Mask | 0x30000,
+        Managed_Type = NotDouble_Mask | 0x00000,
+        Empty_Type = NotDouble_Mask | 0x30000
+    };
+
+    enum ImmediateFlags {
+        ConvertibleToInt = Immediate_Mask | 0x1
+    };
+
+    enum ValueTypeInternal {
+        _Null_Type = Null_Type | ConvertibleToInt,
+        _Boolean_Type = Boolean_Type | ConvertibleToInt,
+        _Integer_Type = Integer_Type | ConvertibleToInt,
+
+    };
+#else
+    static const quint64 NaNEncodeMask = 0xffff800000000000ll;
+    static const quint64 IsInt32Mask  = 0x0002000000000000ll;
+    static const quint64 IsDoubleMask = 0xfffc000000000000ll;
+    static const quint64 IsNumberMask = IsInt32Mask|IsDoubleMask;
+    static const quint64 IsNullOrUndefinedMask = 0x0000800000000000ll;
+    static const quint64 IsNullOrBooleanMask = 0x0001000000000000ll;
+    static const quint64 IsConvertibleToIntMask = IsInt32Mask|IsNullOrBooleanMask;
+
+    enum Masks {
+        NaN_Mask = 0x7ff80000,
+        Type_Mask = 0xffff8000,
+        IsDouble_Mask = 0xfffc0000,
+        Immediate_Mask = 0x00018000,
+        IsNullOrUndefined_Mask = 0x00008000,
+        IsNullOrBoolean_Mask = 0x00010000,
+        Tag_Shift = 32
+    };
+    enum ValueType {
+        Undefined_Type = IsNullOrUndefined_Mask,
+        Null_Type = IsNullOrUndefined_Mask|IsNullOrBoolean_Mask,
+        Boolean_Type = IsNullOrBoolean_Mask,
+        Integer_Type = 0x20000|IsNullOrBoolean_Mask,
+        Managed_Type = 0,
+        Empty_Type = Undefined_Type | 0x4000
+    };
+    enum {
+        IsDouble_Shift = 64-14,
+        IsNumber_Shift = 64-15,
+        IsConvertibleToInt_Shift = 64-16,
+        IsManaged_Shift = 64-17
+    };
+
+
+    enum ValueTypeInternal {
+        _Null_Type = Null_Type,
+        _Boolean_Type = Boolean_Type,
+        _Integer_Type = Integer_Type
+    };
 #endif
-    return v;
-}
-
-inline Primitive Primitive::fromBoolean(bool b)
-{
-    Primitive v;
-    v.tag = _Boolean_Type;
-    v.int_32 = (bool)b;
-    return v;
-}
 
-inline Primitive Primitive::fromDouble(double d)
-{
-    Primitive v;
-    v.setDouble(d);
-    return v;
-}
+    inline unsigned type() const {
+        return tag & Type_Mask;
+    }
 
-inline Primitive Primitive::fromInt32(int i)
-{
-    Primitive v;
-    v.tag = _Integer_Type;
-    v.int_32 = i;
-    return v;
-}
+    // used internally in property
+    inline bool isEmpty() const { return tag == Empty_Type; }
 
-inline Primitive Primitive::fromUInt32(uint i)
-{
-    Primitive v;
-    if (i < INT_MAX) {
-        v.tag = _Integer_Type;
-        v.int_32 = (int)i;
-    } else {
-        v.setDouble(i);
+    inline bool isUndefined() const { return tag == Undefined_Type; }
+    inline bool isNull() const { return tag == _Null_Type; }
+    inline bool isBoolean() const { return tag == _Boolean_Type; }
+#if QT_POINTER_SIZE == 8
+    inline bool isInteger() const { return (val >> IsNumber_Shift) == 1; }
+    inline bool isDouble() const { return (val >> IsDouble_Shift); }
+    inline bool isNumber() const { return (val >> IsNumber_Shift); }
+    inline bool isManaged() const { return !(val >> IsManaged_Shift); }
+    inline bool isNullOrUndefined() const { return ((val >> IsManaged_Shift) & ~2) == 1; }
+    inline bool integerCompatible() const { return ((val >> IsConvertibleToInt_Shift) & ~2) == 1; }
+    static inline bool integerCompatible(Value a, Value b) {
+        return a.integerCompatible() && b.integerCompatible();
     }
-    return v;
-}
-
-inline double Value::toNumber() const
-{
-    if (integerCompatible())
-        return int_32;
-    if (isDouble())
+    static inline bool bothDouble(Value a, Value b) {
+        return a.isDouble() && b.isDouble();
+    }
+    double doubleValue() const {
+        Q_ASSERT(isDouble());
+        union {
+            quint64 i;
+            double d;
+        } v;
+        v.i = val ^ NaNEncodeMask;
+        return v.d;
+    }
+    void setDouble(double d) {
+        union {
+            quint64 i;
+            double d;
+        } v;
+        v.d = d;
+        val = v.i ^ NaNEncodeMask;
+        Q_ASSERT(isDouble());
+    }
+    bool isNaN() const { return (tag & 0x7fff8000) == 0x00078000; }
+#else
+    inline bool isInteger() const { return tag == _Integer_Type; }
+    inline bool isDouble() const { return (tag & NotDouble_Mask) != NotDouble_Mask; }
+    inline bool isNumber() const { return tag == _Integer_Type || (tag & NotDouble_Mask) != NotDouble_Mask; }
+    inline bool isManaged() const { return tag == Managed_Type; }
+    inline bool isNullOrUndefined() const { return (tag & IsNullOrUndefined_Mask) == Undefined_Type; }
+    inline bool integerCompatible() const { return (tag & ConvertibleToInt) == ConvertibleToInt; }
+    static inline bool integerCompatible(Value a, Value b) {
+        return ((a.tag & b.tag) & ConvertibleToInt) == ConvertibleToInt;
+    }
+    static inline bool bothDouble(Value a, Value b) {
+        return ((a.tag | b.tag) & NotDouble_Mask) != NotDouble_Mask;
+    }
+    double doubleValue() const { return dbl; }
+    void setDouble(double d) { dbl = d; }
+    bool isNaN() const { return (tag & QV4::Value::NotDouble_Mask) == QV4::Value::NaN_Mask; }
+#endif
+    inline bool isString() const;
+    inline bool isObject() const;
+    inline bool isInt32() {
+        if (tag == _Integer_Type)
+            return true;
+        if (isDouble()) {
+            double d = doubleValue();
+            int i = (int)d;
+            if (i == d) {
+                int_32 = i;
+                tag = _Integer_Type;
+                return true;
+            }
+        }
+        return false;
+    }
+    double asDouble() const {
+        if (tag == _Integer_Type)
+            return int_32;
         return doubleValue();
-    return toNumberImpl();
-}
+    }
 
-inline int Value::toInt32() const
-{
-    if (integerCompatible())
+    bool booleanValue() const {
+        return int_32;
+    }
+    int integerValue() const {
         return int_32;
-    double d;
-    if (isDouble())
-        d = doubleValue();
-    else
-        d = toNumberImpl();
+    }
 
-    const double D32 = 4294967296.0;
-    const double D31 = D32 / 2.0;
+    String *stringValue() const {
+        return s;
+    }
+    Object *objectValue() const {
+        return o;
+    }
+    Managed *managed() const {
+        return m;
+    }
 
-    if ((d >= -D31 && d < D31))
-        return static_cast<int>(d);
+    quint64 rawValue() const {
+        return val;
+    }
 
-    return Primitive::toInt32(d);
-}
+    static inline Value fromManaged(Managed *o);
+
+    int toUInt16() const;
+    inline int toInt32() const;
+    inline unsigned int toUInt32() const;
+
+    inline bool toBoolean() const;
+    double toInteger() const;
+    inline double toNumber() const;
+    double toNumberImpl() const;
+    QString toQStringNoThrow() const;
+    QString toQString() const;
+    String *toString(ExecutionContext *ctx) const;
+    Object *toObject(ExecutionContext *ctx) const;
+
+    inline bool isPrimitive() const;
+    inline bool tryIntegerConversion() {
+        bool b = integerCompatible();
+        if (b)
+            tag = _Integer_Type;
+        return b;
+    }
 
-inline unsigned int Value::toUInt32() const
-{
-    return (unsigned int)toInt32();
-}
+    inline String *asString() const;
+    inline Managed *asManaged() const;
+    inline Object *asObject() const;
+    inline FunctionObject *asFunctionObject() const;
+    inline NumberObject *asNumberObject() const;
+    inline StringObject *asStringObject() const;
+    inline DateObject *asDateObject() const;
+    inline ArrayObject *asArrayObject() const;
+    inline ErrorObject *asErrorObject() const;
 
+    template<typename T> inline T *as() const;
 
-inline bool Value::toBoolean() const
-{
-    switch (type()) {
-    case Value::Undefined_Type:
-    case Value::Null_Type:
-        return false;
-    case Value::Boolean_Type:
-    case Value::Integer_Type:
-        return (bool)int_32;
-    case Value::Managed_Type:
-        if (isString())
-            return stringValue()->toQString().length() > 0;
-        return true;
-    default: // double
-        return doubleValue() && !std::isnan(doubleValue());
-    }
-}
+    inline uint asArrayIndex() const;
+    inline uint asArrayLength(bool *ok) const;
 
-inline uint Value::asArrayIndex() const
-{
-#if QT_POINTER_SIZE == 8
-    if (!isNumber())
-        return UINT_MAX;
-    if (isInteger())
-        return int_32 >= 0 ? (uint)int_32 : UINT_MAX;
-#else
-    if (isInteger() && int_32 >= 0)
-        return (uint)int_32;
-    if (!isDouble())
-        return UINT_MAX;
-#endif
-    double d = doubleValue();
-    uint idx = (uint)d;
-    if (idx != d)
-        return UINT_MAX;
-    return idx;
-}
+    inline ExecutionEngine *engine() const;
 
-inline uint Value::asArrayLength(bool *ok) const
-{
-    *ok = true;
-    if (integerCompatible() && int_32 >= 0)
-        return (uint)int_32;
-    if (isDouble()) {
-        double d = doubleValue();
-        uint idx = (uint)d;
-        if (idx != d) {
-            *ok = false;
-            return UINT_MAX;
-        }
-        return idx;
-    }
-    if (isString())
-        return stringValue()->toUInt(ok);
+    ReturnedValue asReturnedValue() const { return val; }
+    static Value fromReturnedValue(ReturnedValue val) { Value v; v.val = val; return v; }
+    Value &operator=(ReturnedValue v) { val = v; return *this; }
+    template <typename T>
+    inline Value &operator=(Returned<T> *t);
 
-    uint idx = toUInt32();
-    double d = toNumber();
-    if (d != idx) {
-        *ok = false;
-        return UINT_MAX;
-    }
-    return idx;
-}
+    // Section 9.12
+    bool sameValue(Value other) const;
 
-inline Object *Value::asObject() const
-{
-    return isObject() ? objectValue() : 0;
-}
+    inline void mark(ExecutionEngine *e) const;
+};
 
-inline FunctionObject *Value::asFunctionObject() const
+inline Managed *Value::asManaged() const
 {
-    return isObject() ? managed()->asFunctionObject() : 0;
+    if (isManaged())
+        return managed();
+    return 0;
 }
 
-inline NumberObject *Value::asNumberObject() const
+inline String *Value::asString() const
 {
-    return isObject() ? managed()->asNumberObject() : 0;
+    if (isString())
+        return stringValue();
+    return 0;
 }
 
-inline StringObject *Value::asStringObject() const
+struct Q_QML_EXPORT Primitive : public Value
 {
-    return isObject() ? managed()->asStringObject() : 0;
-}
+    inline static Primitive emptyValue();
+    static inline Primitive fromBoolean(bool b);
+    static inline Primitive fromInt32(int i);
+    inline static Primitive undefinedValue();
+    static inline Primitive nullValue();
+    static inline Primitive fromDouble(double d);
+    static inline Primitive fromUInt32(uint i);
+
+    static double toInteger(double fromNumber);
+    static int toInt32(double value);
+    static unsigned int toUInt32(double value);
+
+    inline operator ValueRef();
+    Value asValue() const { return *this; }
+};
 
-inline DateObject *Value::asDateObject() const
+inline Primitive Primitive::undefinedValue()
 {
-    return isObject() ? managed()->asDateObject() : 0;
+    Primitive v;
+#if QT_POINTER_SIZE == 8
+    v.val = quint64(Undefined_Type) << Tag_Shift;
+#else
+    v.tag = Undefined_Type;
+    v.int_32 = 0;
+#endif
+    return v;
 }
 
-inline ArrayObject *Value::asArrayObject() const
+inline Primitive Primitive::emptyValue()
 {
-    return isObject() ? managed()->asArrayObject() : 0;
+    Primitive v;
+    v.tag = Value::Empty_Type;
+    v.uint_32 = 0;
+    return v;
 }
 
-inline ErrorObject *Value::asErrorObject() const
+inline Value Value::fromManaged(Managed *m)
 {
-    return isObject() ? managed()->asErrorObject() : 0;
+    if (!m)
+        return QV4::Primitive::undefinedValue();
+    Value v;
+#if QT_POINTER_SIZE == 8
+    v.m = m;
+#else
+    v.tag = Managed_Type;
+    v.m = m;
+#endif
+    return v;
 }
 
-template<typename T>
-inline T *Value::as() const { Managed *m = isObject() ? managed() : 0; return m ? m->as<T>() : 0; }
-
-struct Q_QML_PRIVATE_EXPORT PersistentValuePrivate
+struct SafeValue : public Value
 {
-    PersistentValuePrivate(ReturnedValue v, ExecutionEngine *engine = 0, bool weak = false);
-    virtual ~PersistentValuePrivate();
-    SafeValue value;
-    uint refcount;
-    bool weak;
-    QV4::ExecutionEngine *engine;
-    PersistentValuePrivate **prev;
-    PersistentValuePrivate *next;
-
-    void init();
-    void removeFromList();
-    void ref() { ++refcount; }
-    void deref();
-    PersistentValuePrivate *detach(const ReturnedValue value, bool weak = false);
-
-    bool checkEngine(QV4::ExecutionEngine *otherEngine) {
-        if (!engine) {
-            Q_ASSERT(!value.isObject());
-            engine = otherEngine;
-        }
-        return (engine == otherEngine);
+    SafeValue &operator =(const ScopedValue &v);
+    template<typename T>
+    SafeValue &operator=(Returned<T> *t);
+    SafeValue &operator=(ReturnedValue v) {
+        val = v;
+        return *this;
     }
-};
-
-class Q_QML_EXPORT PersistentValue
-{
-public:
-    PersistentValue() : d(0) {}
-    PersistentValue(const PersistentValue &other);
-    PersistentValue &operator=(const PersistentValue &other);
-
-    PersistentValue(const ValueRef val);
-    PersistentValue(ReturnedValue val);
     template<typename T>
-    PersistentValue(Returned<T> *obj);
+    SafeValue &operator=(T *t) {
+        val = Value::fromManaged(t).val;
+        return *this;
+    }
+
     template<typename T>
-    PersistentValue(const Referenced<T> obj);
-    PersistentValue &operator=(const ValueRef other);
-    PersistentValue &operator =(ReturnedValue other);
+    SafeValue &operator=(const Scoped<T> &t);
+    SafeValue &operator=(const ValueRef v);
+    SafeValue &operator=(const Value &v) {
+        val = v.val;
+        return *this;
+    }
     template<typename T>
-    PersistentValue &operator=(Returned<T> *obj);
+    inline Returned<T> *as();
     template<typename T>
-    PersistentValue &operator=(const Referenced<T> obj);
-    ~PersistentValue();
+    inline Referenced<T> asRef();
+};
 
-    ReturnedValue value() const {
-        return (d ? d->value.asReturnedValue() : Primitive::undefinedValue().asReturnedValue());
+template <typename T>
+struct Safe : public SafeValue
+{
+    template<typename X>
+    Safe &operator =(X *x) {
+        val = Value::fromManaged(x).val;
     }
+    Safe &operator =(T *t);
+    Safe &operator =(const Scoped<T> &v);
+    Safe &operator =(const Referenced<T> &v);
+    Safe &operator =(Returned<T> *t);
 
-    ExecutionEngine *engine() {
-        if (!d)
-            return 0;
-        if (d->engine)
-            return d->engine;
-        Managed *m = d->value.asManaged();
-        return m ? m->engine() : 0;
-    }
+    Safe &operator =(const Safe<T> &t);
 
-    bool isUndefined() const { return !d || d->value.isUndefined(); }
-    bool isNullOrUndefined() const { return !d || d->value.isNullOrUndefined(); }
-    void clear() {
-        *this = PersistentValue();
-    }
+    bool operator!() const { return !managed(); }
+
+    T *operator->() { return static_cast<T *>(managed()); }
+    const T *operator->() const { return static_cast<T *>(managed()); }
+    T *getPointer() const { return static_cast<T *>(managed()); }
+    Returned<T> *ret() const;
 
-private:
-    friend struct ValueRef;
-    PersistentValuePrivate *d;
+    void mark(ExecutionEngine *e) { if (managed()) managed()->mark(e); }
 };
+typedef Safe<String> SafeString;
+typedef Safe<Object> SafeObject;
 
-class Q_QML_EXPORT WeakValue
+template<typename T>
+T *value_cast(const Value &v)
 {
-public:
-    WeakValue() : d(0) {}
-    WeakValue(const ValueRef val);
-    WeakValue(const WeakValue &other);
-    WeakValue(ReturnedValue val);
-    template<typename T>
-    WeakValue(Returned<T> *obj);
-    WeakValue &operator=(const WeakValue &other);
-    WeakValue &operator=(const ValueRef other);
-    WeakValue &operator =(const ReturnedValue &other);
-    template<typename T>
-    WeakValue &operator=(Returned<T> *obj);
-
-    ~WeakValue();
-
-    ReturnedValue value() const {
-        return (d ? d->value.asReturnedValue() : Primitive::undefinedValue().asReturnedValue());
-    }
-
-    ExecutionEngine *engine() {
-        if (!d)
-            return 0;
-        if (d->engine)
-            return d->engine;
-        Managed *m = d->value.asManaged();
-        return m ? m->engine() : 0;
-    }
+    return v.as<T>();
+}
 
-    bool isUndefined() const { return !d || d->value.isUndefined(); }
-    bool isNullOrUndefined() const { return !d || d->value.isNullOrUndefined(); }
-    void clear() {
-        *this = WeakValue();
-    }
+template<typename T>
+ReturnedValue value_convert(ExecutionContext *ctx, const Value &v);
 
-    void markOnce(ExecutionEngine *e);
 
-private:
-    friend struct ValueRef;
-    PersistentValuePrivate *d;
-};
 
-} // namespace QV4
+}
 
 QT_END_NAMESPACE
 
-#endif
+#endif // QV4VALUE_DEF_P_H
index 3715dbc8c4f491b6a7861fe0c7dc66812ec583bc..6c4a36503b9e8472e5a2ca8a3d27540eeb8330e0 100644 (file)
@@ -57,7 +57,7 @@
 #include <QtQml/qqmllist.h>
 #include <QtCore/qvariant.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4object_p.h>
 
 QT_BEGIN_NAMESPACE
index 9d6540ebe94717ba053e726e641b609d3f078f0c..030e45045f42d0bc53a5e4ae746a1ed1d474fbc8 100644 (file)
@@ -41,7 +41,7 @@
 
 #include "qv4vme_moth_p.h"
 #include "qv4instr_moth_p.h"
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4debugging_p.h>
 #include <private/qv4math_p.h>
 #include <private/qv4scopedvalue_p.h>
index bc56fe1f2d09b063bbb2d2658fc858f9d40b4eba..d0476a92d423f805b9240ee34955716a3b93196e 100644 (file)
@@ -54,7 +54,7 @@
 #include <private/qv4debugservice_p.h>
 #include "qqmlinfo.h"
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 
 #include <QtCore/qstringbuilder.h>
 #include <QtCore/qdebug.h>
index d3ef02a9ad429d911fe5599856a16279b1cb3b3d..1ca9c6ac12f4b12f8dc37d95bbe575bb977fbe5b 100644 (file)
@@ -46,7 +46,7 @@
 #include <private/qqmlcontext_p.h>
 
 #include <private/qv4engine_p.h>
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4objectproto_p.h>
 #include <private/qv4mm_p.h>
 #include <private/qv4function_p.h>
index bd56d4bcecdb664be782556ae9312334844060b6..0ecec93652ec5aa41b2d89bb23640cbdc69b5222 100644 (file)
@@ -56,7 +56,7 @@
 #include <QtCore/qglobal.h>
 #include <private/qtqmlglobal_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4object_p.h>
 #include <private/qqmlcontext_p.h>
 #include <private/qv4functionobject_p.h>
index c4b19394f056c4e4e668f5e957fd7428bbbcdce1..f29b54dda253cf509da4a8d71b624c385bb7a90d 100644 (file)
@@ -56,7 +56,7 @@
 #include <private/qtqmlglobal_p.h>
 #include <private/qobject_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 
 QT_BEGIN_NAMESPACE
 
index 499ade1ca5d2ee5ddf9dee3b5da03fc146317166..b7673bdb3795943683067c16a60c383073701750 100644 (file)
@@ -43,7 +43,7 @@
 
 #include <private/qqmlexpression_p.h>
 #include <private/qqmlcontextwrapper_p.h>
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4functionobject_p.h>
 #include <private/qv4script_p.h>
 #include <private/qv4errorobject_p.h>
index a8105d256e99ad23b2fc60ae5ae4e1594555109c..a7ce8b30bf4ededadd8ea31142a96fb64062565e 100644 (file)
@@ -58,7 +58,7 @@
 
 #include <QtQml/qqmllist.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4object_p.h>
 
 QT_BEGIN_NAMESPACE
index d026b952014b10b74b06395308bfb7b17ff2344c..0247cebdc592313becbc4b94a8e15e9b9ed43743 100644 (file)
@@ -50,7 +50,7 @@
 #include <private/qqmlaccessors_p.h>
 #include <private/qmetaobjectbuilder_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 
 #include <QtCore/qdebug.h>
 
index bc0cef9f4c334f2f236b8c43b3d077a27afadc25..a6741d3bd97ce03ef6d02dff3366d02949ef065c 100644 (file)
@@ -62,7 +62,7 @@
 #include <QtCore/qvarlengtharray.h>
 #include <QtCore/qvector.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 
 QT_BEGIN_NAMESPACE
 
index 02797220c59bbf3d1d36b35fb97e3e96262c5a6d..ab6f47e8deac9345b998a1b546c727a949dfe4ed 100644 (file)
@@ -69,7 +69,7 @@
 #include <private/qqmlbundle_p.h>
 #include <private/qflagpointer_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4script_p.h>
 
 QT_BEGIN_NAMESPACE
index eb1eee5096a5b2f53450ecb5c02ce3e215a760e4..355a6751a91a7acb76e8dbcc0911802768a32769 100644 (file)
@@ -56,7 +56,7 @@
 #include <QtCore/qglobal.h>
 #include <QtCore/qpointer.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4object_p.h>
 
 QT_BEGIN_NAMESPACE
index 256573966a03979c0c1ba293f33631a9e80cec08..d66dbbba0c502bb1affabd1cda54a9b6f75b62d6 100644 (file)
@@ -56,7 +56,7 @@
 #include <QtCore/qglobal.h>
 #include <private/qtqmlglobal_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4object_p.h>
 
 QT_BEGIN_NAMESPACE
index 77db107668020ca68947d6f362009237ef6c3d06..778559d0c4d108f30cf290773084333d7ef7db23 100644 (file)
@@ -71,7 +71,7 @@
 #include <private/qv8engine_p.h>
 #include <private/qflagpointer_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 
 QT_BEGIN_NAMESPACE
 
index 316d066097863a74e587aed29454bcc166c6338b..76327e3a690c274f2174484695e829a0ce72fbbb 100644 (file)
@@ -68,7 +68,7 @@
 #include <QtCore/qdatetime.h>
 #include <private/qsimd_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4dateobject_p.h>
 #include <private/qv4objectiterator_p.h>
 #include <private/qv4mm_p.h>
index e390ef56dd56d222707ccb4c5b3fcf32d1f5b6aa..1295e671f04df3b3f0486c32e7e0246a0ee81431 100644 (file)
@@ -68,7 +68,7 @@
 #include <private/qqmlpropertycache_p.h>
 
 #include <private/qv4qobjectwrapper_p.h>
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4object_p.h>
 #include <private/qv4identifier_p.h>
 
index f10f54038dd93ffc7979ece775bf08479f043c19..3bf83a1f669715b9645a33803391169f0a40c212 100644 (file)
@@ -52,7 +52,7 @@
 #include <private/qqmlincubator_p.h>
 #include <private/qqmlcompiler_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4functionobject_p.h>
 
 QT_BEGIN_NAMESPACE
index 5af33a34f85da4678482a02455ce92d85b6b2493..da34101c36e538db1ce04eec8f5595b97ca330f5 100644 (file)
@@ -62,7 +62,7 @@
 #include <private/qv8engine_p.h>
 #include <private/qv4serialize_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4functionobject_p.h>
 #include <private/qv4script_p.h>
 #include <private/qv4scopedvalue_p.h>
index 36c3623d8b70514582dcf325bc88684dd3c14246..8b79e33cc7ddd7fa6263b25f3cf201c9e910d4ba 100644 (file)
@@ -46,7 +46,7 @@
 #include <private/qqmlproperty_p.h>
 #include <private/qv8engine_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4functionobject_p.h>
 
 QT_BEGIN_NAMESPACE
index 763dd5251b581233c55372fd0b0cc3a6abdc5395..ed5c8d7bcb168513adfd7c8b7915390ca02f88dd 100644 (file)
@@ -54,7 +54,7 @@
 #include <QtCore/QBuffer>
 #include <QtCore/qdatetime.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4functionobject_p.h>
 #include <private/qv4scopedvalue_p.h>
 
index f636d5a619a3f16d5961e980d47e13b4169c8ae8..1d22a6b48336bea7555e32f60a1233e22b063057 100644 (file)
@@ -65,7 +65,7 @@
 #include <QtCore/qnumeric.h>
 #include <private/qquickwindow_p.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 #include <private/qv4functionobject_p.h>
 #include <private/qv4objectproto_p.h>
 #include <private/qv4scopedvalue_p.h>
index 6399da3dee2b84686579fe989fd0193d63082b38..4390ae62ccdf1a12c3d4228687c53e4c8dae043e 100644 (file)
@@ -55,7 +55,7 @@
 #include <private/qv8engine_p.h>
 #include <QtCore/QWaitCondition>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 
 //#define QQUICKCONTEXT2D_DEBUG //enable this for just DEBUG purpose!
 
index 32c271222dfb9305fd1ac9193489580bf5f4c022..578341861938a630c9460b3759f5c7ddecc5d0c2 100644 (file)
@@ -58,7 +58,7 @@
 #include "qquickitemchangelistener_p.h"
 #include <qqmlincubator.h>
 
-#include <private/qv4value_p.h>
+#include <private/qv4value_inl_p.h>
 
 QT_BEGIN_NAMESPACE