Move ScopedCallData and ScopedStackFrame into a separate file
Change-Id: I9ae42aa7a811aa93fe0950725e9d253a0c5e8dba Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
This commit is contained in:
parent
85697da6e1
commit
aa8f956e8d
|
@ -58,6 +58,7 @@
|
|||
#include <private/qv4functionobject_p.h>
|
||||
#include <private/qv4objectproto_p.h>
|
||||
#include <private/qv4scopedvalue_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
#include <private/qv4objectiterator_p.h>
|
||||
|
||||
static void initResources()
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
#include <private/qv4qmlcontext_p.h>
|
||||
#include <private/qv4qobjectwrapper_p.h>
|
||||
#include <private/qqmldebugservice_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
|
||||
#include <QtQml/qqmlengine.h>
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
#include "qv4errorobject_p.h"
|
||||
#include "private/qv8engine_p.h"
|
||||
#include <private/qv4mm_p.h>
|
||||
#include <private/qv4scopedvalue_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
#include <private/qv4qobjectwrapper_p.h>
|
||||
|
||||
/*!
|
||||
|
@ -657,7 +657,7 @@ QJSValue QJSValue::call(const QJSValueList &args)
|
|||
Q_ASSERT(engine);
|
||||
|
||||
Scope scope(engine);
|
||||
ScopedCallData callData(scope, args.length());
|
||||
ScopedCallData callData(scope, f, args.length());
|
||||
callData->thisObject = engine->globalObject;
|
||||
for (int i = 0; i < args.size(); ++i) {
|
||||
if (!QJSValuePrivate::checkEngine(engine, args.at(i))) {
|
||||
|
@ -667,7 +667,7 @@ QJSValue QJSValue::call(const QJSValueList &args)
|
|||
callData->args[i] = QJSValuePrivate::convertedToValue(engine, args.at(i));
|
||||
}
|
||||
|
||||
ScopedValue result(scope, f->call(callData));
|
||||
ScopedValue result(scope, callData.call());
|
||||
if (engine->hasException)
|
||||
result = engine->catchException();
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@ HEADERS += \
|
|||
$$PWD/qv4identifiertable_p.h \
|
||||
$$PWD/qv4managed_p.h \
|
||||
$$PWD/qv4internalclass_p.h \
|
||||
$$PWD/qv4jscall_p.h \
|
||||
$$PWD/qv4sparsearray_p.h \
|
||||
$$PWD/qv4arraydata_p.h \
|
||||
$$PWD/qv4arrayobject_p.h \
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include <qv4scopedvalue_p.h>
|
||||
#include <qv4string_p.h>
|
||||
#include <qv4function_p.h>
|
||||
#include <qv4jscall_p.h>
|
||||
|
||||
using namespace QV4;
|
||||
|
||||
|
@ -138,10 +139,10 @@ bool ArgumentsObject::defineOwnProperty(ExecutionEngine *engine, uint index, con
|
|||
if (isMapped && attrs.isData()) {
|
||||
Q_ASSERT(arrayData());
|
||||
ScopedFunctionObject setter(scope, map->setter());
|
||||
ScopedCallData callData(scope, 1);
|
||||
ScopedCallData callData(scope, setter, 1);
|
||||
callData->thisObject = this->asReturnedValue();
|
||||
callData->args[0] = desc->value;
|
||||
setter->call(callData);
|
||||
callData.call();
|
||||
|
||||
if (attrs.isWritable()) {
|
||||
setArrayAttributes(index, mapAttrs);
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include "qv4typedarray_p.h"
|
||||
#include "qv4dataview_p.h"
|
||||
#include "qv4string_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
|
||||
using namespace QV4;
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "qv4runtime_p.h"
|
||||
#include "qv4argumentsobject_p.h"
|
||||
#include "qv4string_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
|
||||
using namespace QV4;
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
#include "qv4arrayobject_p.h"
|
||||
#include "qv4sparsearray_p.h"
|
||||
#include "qv4objectproto_p.h"
|
||||
#include "qv4scopedvalue_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
#include "qv4argumentsobject_p.h"
|
||||
#include "qv4runtime_p.h"
|
||||
#include "qv4string_p.h"
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "qv4scopedvalue_p.h"
|
||||
#include "qv4runtime_p.h"
|
||||
#include "qv4string_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
|
||||
#include <QtCore/QDebug>
|
||||
#include <QtCore/QDateTime>
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
|
||||
#include "qv4arrayobject_p.h"
|
||||
#include "qv4scopedvalue_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
#include "qv4argumentsobject_p.h"
|
||||
|
||||
#include <private/qqmljsengine_p.h>
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
#include "qv4script_p.h"
|
||||
#include "qv4scopedvalue_p.h"
|
||||
#include "qv4string_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
|
||||
#include <private/qqmljsengine_p.h>
|
||||
#include <private/qqmljslexer_p.h>
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
|
||||
#include "qv4include_p.h"
|
||||
#include "qv4scopedvalue_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
|
||||
#include <QtQml/qjsengine.h>
|
||||
#if QT_CONFIG(qml_network)
|
||||
|
|
|
@ -0,0 +1,118 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 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$
|
||||
**
|
||||
****************************************************************************/
|
||||
#ifndef QV4JSCALL_H
|
||||
#define QV4JSCALL_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include "qv4object_p.h"
|
||||
#include "qv4function_p.h"
|
||||
#include "qv4functionobject_p.h"
|
||||
#include "qv4context_p.h"
|
||||
#include "qv4scopedvalue_p.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
namespace QV4 {
|
||||
|
||||
struct ScopedCallData {
|
||||
ScopedCallData(const Scope &scope, int argc = 0)
|
||||
{
|
||||
int size = int(offsetof(QV4::CallData, args)/sizeof(QV4::Value)) + qMax(argc , int(QV4::Global::ReservedArgumentCount));
|
||||
ptr = reinterpret_cast<CallData *>(scope.alloc(size));
|
||||
ptr->tag = quint32(QV4::Value::ValueTypeInternal::Integer);
|
||||
ptr->argc = argc;
|
||||
}
|
||||
|
||||
ScopedCallData(const Scope &scope, const FunctionObject *function, int argc = 0)
|
||||
{
|
||||
int size = int(offsetof(QV4::CallData, args)/sizeof(QV4::Value)) + qMax(argc , int(QV4::Global::ReservedArgumentCount));
|
||||
ptr = reinterpret_cast<CallData *>(scope.alloc(size));
|
||||
ptr->tag = quint32(QV4::Value::ValueTypeInternal::Integer);
|
||||
ptr->argc = argc;
|
||||
ptr->function = *function;
|
||||
}
|
||||
|
||||
CallData *operator->() {
|
||||
return ptr;
|
||||
}
|
||||
|
||||
operator CallData *() const {
|
||||
return ptr;
|
||||
}
|
||||
|
||||
ReturnedValue call() const {
|
||||
return static_cast<FunctionObject &>(ptr->function).call(ptr);
|
||||
}
|
||||
|
||||
CallData *ptr;
|
||||
};
|
||||
|
||||
struct ScopedStackFrame {
|
||||
Scope &scope;
|
||||
CppStackFrame frame;
|
||||
|
||||
ScopedStackFrame(Scope &scope, Heap::ExecutionContext *context)
|
||||
: scope(scope)
|
||||
{
|
||||
frame.parent = scope.engine->currentStackFrame;
|
||||
if (!context)
|
||||
return;
|
||||
frame.jsFrame = reinterpret_cast<CallData *>(scope.alloc(sizeof(CallData)/sizeof(Value)));
|
||||
frame.jsFrame->context = context;
|
||||
frame.v4Function = frame.parent ? frame.parent->v4Function : 0;
|
||||
scope.engine->currentStackFrame = &frame;
|
||||
}
|
||||
~ScopedStackFrame() {
|
||||
scope.engine->currentStackFrame = frame.parent;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
|
@ -46,6 +46,7 @@
|
|||
#include <qv4runtime_p.h>
|
||||
#include <qv4variantobject_p.h>
|
||||
#include "qv4string_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
|
||||
#include <qstack.h>
|
||||
#include <qstringlist.h>
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
****************************************************************************/
|
||||
#include "qv4lookup_p.h"
|
||||
#include "qv4functionobject_p.h"
|
||||
#include "qv4scopedvalue_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
#include "qv4string_p.h"
|
||||
#include <private/qv4identifiertable_p.h>
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
#include "qv4identifier_p.h"
|
||||
#include "qv4string_p.h"
|
||||
#include "qv4identifiertable_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include "qv4runtime_p.h"
|
||||
#include "qv4objectiterator_p.h"
|
||||
#include "qv4string_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
|
||||
#include <QtCore/QDateTime>
|
||||
#include <QtCore/QStringList>
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
#include <private/qv4regexpobject_p.h>
|
||||
#include <private/qv4dateobject_p.h>
|
||||
#include <private/qv4scopedvalue_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
#include <private/qv4mm_p.h>
|
||||
#include <private/qqmlscriptstring_p.h>
|
||||
#include <private/qv4compileddata_p.h>
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "qv4stringobject_p.h"
|
||||
#include <private/qv4mm_p.h>
|
||||
#include "qv4scopedvalue_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
|
||||
#include <private/qqmljsengine_p.h>
|
||||
#include <private/qqmljslexer_p.h>
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
#include "qv4numberobject_p.h"
|
||||
#include "private/qlocale_tools_p.h"
|
||||
#include "qv4scopedvalue_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
#include <private/qv4qmlcontext_p.h>
|
||||
#include <private/qqmltypewrapper_p.h>
|
||||
#include <private/qqmlengine_p.h>
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
|
||||
#include "qv4engine_p.h"
|
||||
#include "qv4value_p.h"
|
||||
#include "qv4persistent_p.h"
|
||||
#include "qv4property_p.h"
|
||||
|
||||
#ifdef V4_USE_VALGRIND
|
||||
|
@ -351,46 +350,6 @@ struct Scoped
|
|||
Value *ptr;
|
||||
};
|
||||
|
||||
struct ScopedCallData {
|
||||
ScopedCallData(const Scope &scope, int argc = 0)
|
||||
{
|
||||
int size = int(offsetof(QV4::CallData, args)/sizeof(QV4::Value)) + qMax(argc , int(QV4::Global::ReservedArgumentCount));
|
||||
ptr = reinterpret_cast<CallData *>(scope.alloc(size));
|
||||
ptr->tag = quint32(QV4::Value::ValueTypeInternal::Integer);
|
||||
ptr->argc = argc;
|
||||
}
|
||||
|
||||
CallData *operator->() {
|
||||
return ptr;
|
||||
}
|
||||
|
||||
operator CallData *() const {
|
||||
return ptr;
|
||||
}
|
||||
|
||||
CallData *ptr;
|
||||
};
|
||||
|
||||
struct ScopedStackFrame {
|
||||
Scope &scope;
|
||||
CppStackFrame frame;
|
||||
|
||||
ScopedStackFrame(Scope &scope, Heap::ExecutionContext *context)
|
||||
: scope(scope)
|
||||
{
|
||||
frame.parent = scope.engine->currentStackFrame;
|
||||
if (!context)
|
||||
return;
|
||||
frame.jsFrame = reinterpret_cast<CallData *>(scope.alloc(sizeof(CallData)/sizeof(Value)));
|
||||
frame.jsFrame->context = context;
|
||||
frame.v4Function = frame.parent ? frame.parent->v4Function : 0;
|
||||
scope.engine->currentStackFrame = &frame;
|
||||
}
|
||||
~ScopedStackFrame() {
|
||||
scope.engine->currentStackFrame = frame.parent;
|
||||
}
|
||||
};
|
||||
|
||||
inline Value &Value::operator =(const ScopedValue &v)
|
||||
{
|
||||
_val = v.ptr->rawValue();
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include "qv4debugging_p.h"
|
||||
#include "qv4profiling_p.h"
|
||||
#include "qv4scopedvalue_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
|
||||
#include <private/qqmljsengine_p.h>
|
||||
#include <private/qqmljslexer_p.h>
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include <private/qv4arrayobject_p.h>
|
||||
#include <private/qqmlengine_p.h>
|
||||
#include <private/qv4scopedvalue_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
#include "qv4runtime_p.h"
|
||||
#include "qv4objectiterator_p.h"
|
||||
#include <private/qqmlvaluetypewrapper_p.h>
|
||||
|
|
|
@ -45,15 +45,11 @@
|
|||
#include <private/qv4mm_p.h>
|
||||
#include "qv4scopedvalue_p.h"
|
||||
#include "qv4alloca_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
#include <QtCore/QDateTime>
|
||||
#include <QtCore/QDebug>
|
||||
#include <QtCore/QStringList>
|
||||
|
||||
#include <private/qqmljsengine_p.h>
|
||||
#include <private/qqmljslexer_p.h>
|
||||
#include <private/qqmljsparser_p.h>
|
||||
#include <private/qqmljsast_p.h>
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#ifndef Q_OS_WIN
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "qv4typedarray_p.h"
|
||||
#include "qv4arraybuffer_p.h"
|
||||
#include "qv4string_p.h"
|
||||
#include "qv4jscall_p.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
|
||||
#include <private/qjsvalue_p.h>
|
||||
#include <private/qv4value_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
#include <private/qv4qobjectwrapper_p.h>
|
||||
|
||||
#include <QtCore/qdebug.h>
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
#include <private/qv4scopedvalue_p.h>
|
||||
#include <private/qv4objectiterator_p.h>
|
||||
#include <private/qv4qobjectwrapper_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
|
||||
#include <QDir>
|
||||
#include <QStack>
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
#include <private/qqmlengine_p.h>
|
||||
#include <private/qqmljavascriptexpression_p.h>
|
||||
#include <private/qv4value_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
#include <private/qv4qobjectwrapper_p.h>
|
||||
|
||||
#include <QQmlError>
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include <private/qv4script_p.h>
|
||||
#include <private/qv4errorobject_p.h>
|
||||
#include <private/qv4scopedvalue_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
#include <private/qqmlglobal_p.h>
|
||||
#include <private/qv4qobjectwrapper_p.h>
|
||||
#include <private/qqmlbuiltinfunctions_p.h>
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
#include <private/qv4variantobject_p.h>
|
||||
#include <private/qv4functionobject_p.h>
|
||||
#include <private/qv4scopedvalue_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
#include <private/qv4qobjectwrapper_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
#include <private/qv4engine_p.h>
|
||||
#include <private/qv4functionobject_p.h>
|
||||
#include <private/qv4scopedvalue_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
|
||||
#include <QtCore/qobject.h>
|
||||
#include <QtQml/qjsvalue.h>
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
#include <private/qv4functionobject_p.h>
|
||||
#include <private/qv4script_p.h>
|
||||
#include <private/qv4scopedvalue_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
|
|
@ -57,6 +57,7 @@
|
|||
#include <private/qv4value_p.h>
|
||||
#include <private/qv4functionobject_p.h>
|
||||
#include <private/qv4scopedvalue_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
#include <private/qv4qobjectwrapper_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "../../shared/util.h"
|
||||
#include <private/qv4functionobject_p.h>
|
||||
#include <private/qv4scopedvalue_p.h>
|
||||
#include <private/qv4jscall_p.h>
|
||||
#include <private/qv4alloca_p.h>
|
||||
#include <private/qv4runtime_p.h>
|
||||
#include <private/qv4object_p.h>
|
||||
|
|
Loading…
Reference in New Issue