diff options
Diffstat (limited to 'src/qml/jsruntime/qv4global_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4global_p.h | 133 |
1 files changed, 12 insertions, 121 deletions
diff --git a/src/qml/jsruntime/qv4global_p.h b/src/qml/jsruntime/qv4global_p.h index 58bffdf2d1..e3fc0ac1b3 100644 --- a/src/qml/jsruntime/qv4global_p.h +++ b/src/qml/jsruntime/qv4global_p.h @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QV4GLOBAL_H #define QV4GLOBAL_H @@ -52,83 +16,15 @@ // #include <QtCore/qglobal.h> +#include <private/qv4compilerglobal_p.h> #include <QString> -#ifdef QT_NO_DEBUG -#define QML_NEARLY_ALWAYS_INLINE Q_ALWAYS_INLINE -#else -#define QML_NEARLY_ALWAYS_INLINE inline -#endif - #include <qtqmlglobal.h> #include <private/qtqmlglobal_p.h> -#ifdef QT_QML_BOOTSTRAPPED -#define V4_BOOTSTRAP -#endif - -#if defined(Q_CC_MSVC) -#include <float.h> -#include <math.h> - -namespace std { - -inline bool isinf(double d) { return !_finite(d) && !_isnan(d); } -inline bool isnan(double d) { return !!_isnan(d); } -inline bool isfinite(double d) { return _finite(d); } - -} // namespace std - -inline double trunc(double d) { return d > 0 ? floor(d) : ceil(d); } -#endif - -// Decide whether to enable or disable the JIT - -// White list architectures -// -// NOTE: This should match the logic in qv4targetplatform_p.h! - -#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) \ - && (defined(Q_OS_WIN) || defined(Q_OS_LINUX) || defined(Q_OS_QNX) || defined(Q_OS_MAC) || defined(Q_OS_FREEBSD)) -# define V4_ENABLE_JIT -#elif defined(Q_PROCESSOR_ARM_32) && (QT_POINTER_SIZE == 4) \ - && (defined(Q_OS_LINUX) || defined(Q_OS_QNX) || defined(Q_OS_FREEBSD) || defined(Q_OS_INTEGRITY)) -# if defined(thumb2) || defined(__thumb2__) || ((defined(__thumb) || defined(__thumb__)) && __TARGET_ARCH_THUMB-0 == 4) -# define V4_ENABLE_JIT -# elif defined(__ARM_ARCH_ISA_THUMB) && __ARM_ARCH_ISA_THUMB == 2 // clang 3.5 and later will set this if the core supports the Thumb-2 ISA. -# define V4_ENABLE_JIT -# endif -#elif defined(Q_PROCESSOR_ARM_64) && (QT_POINTER_SIZE == 8) -# if defined(Q_OS_LINUX) || defined(Q_OS_QNX) || defined(Q_OS_INTEGRITY) -# define V4_ENABLE_JIT -# endif -//#elif defined(Q_PROCESSOR_MIPS_32) && defined(Q_OS_LINUX) -//# define V4_ENABLE_JIT -#endif - -// check FPU with double precision on ARM platform -#if (defined(Q_PROCESSOR_ARM_64) || defined(Q_PROCESSOR_ARM_32)) && defined(V4_ENABLE_JIT) && defined(__ARM_FP) && (__ARM_FP <= 0x04) -# undef V4_ENABLE_JIT -#endif - -// Black list some platforms -#if defined(V4_ENABLE_JIT) -#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) -# undef V4_ENABLE_JIT -#endif -#endif - -// For debug purposes: add CONFIG+=force-compile-jit to qmake's command-line to always compile the JIT. -#if defined(V4_FORCE_COMPILE_JIT) && !defined(V4_ENABLE_JIT) -# define V4_ENABLE_JIT -#endif - // Do certain things depending on whether the JIT is enabled or disabled -#ifdef V4_ENABLE_JIT +#if QT_CONFIG(qml_jit) #define ENABLE_YARR_JIT 1 #define ENABLE_JIT 1 #define ENABLE_ASSEMBLER 1 @@ -184,10 +80,13 @@ namespace Heap { struct ArrayObject; struct DateObject; struct FunctionObject; + struct JavaScriptFunctionObject; struct ErrorObject; struct ArgumentsObject; struct QObjectWrapper; struct RegExpObject; + struct UrlObject; + struct UrlSearchParamsObject; struct RegExp; struct EvalFunction; @@ -206,6 +105,8 @@ namespace Heap { } struct CppStackFrame; +struct JSTypesStackFrame; +struct MetaTypesStackFrame; class MemoryManager; class ExecutableAllocator; struct PropertyKey; @@ -255,11 +156,6 @@ struct SetMapObject; struct PromiseObject; struct PromiseCapability; -// ReturnedValue is used to return values from runtime methods -// the type has to be a primitive type (no struct or union), so that the compiler -// will return it in a register on all platforms. -// It will be returned in rax on x64, [eax,edx] on x86 and [r0,r1] on arm -typedef quint64 ReturnedValue; struct CallData; struct Scope; struct ScopedValue; @@ -296,6 +192,8 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(PropertyFlags) struct PropertyAttributes { + QT_WARNING_PUSH + QT_WARNING_DISABLE_MSVC(4201) // nonstandard extension used: nameless struct/union union { uchar m_all; struct { @@ -313,6 +211,7 @@ struct PropertyAttributes uchar configurable_set : 1; }; }; + QT_WARNING_POP enum Type { Data = 0, @@ -370,7 +269,6 @@ struct PropertyAttributes void clear() { m_all = 0; } bool isEmpty() const { return !m_all; } - uint flags() const { return m_flags; } uint all() const { return m_all; } bool operator==(PropertyAttributes other) { @@ -389,13 +287,6 @@ struct Q_QML_EXPORT StackFrame { }; typedef QVector<StackFrame> StackTrace; -enum class ObjectLiteralArgument { - Value, - Method, - Getter, - Setter -}; - namespace JIT { enum class CallResultDestination { |