aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4unwindhelper_dw2_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsruntime/qv4unwindhelper_dw2_p.h')
-rw-r--r--src/qml/jsruntime/qv4unwindhelper_dw2_p.h191
1 files changed, 0 insertions, 191 deletions
diff --git a/src/qml/jsruntime/qv4unwindhelper_dw2_p.h b/src/qml/jsruntime/qv4unwindhelper_dw2_p.h
deleted file mode 100644
index 03533ba526..0000000000
--- a/src/qml/jsruntime/qv4unwindhelper_dw2_p.h
+++ /dev/null
@@ -1,191 +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 QV4UNWINDHELPER_PDW2_H
-#define QV4UNWINDHELPER_PDW2_H
-
-#include "qv4unwindhelper_p.h"
-#include "qv4functionobject_p.h"
-#include "qv4function_p.h"
-#include <wtf/Platform.h>
-#include <wtf/PageAllocation.h>
-#include <ExecutableAllocator.h>
-#include <private/qv4isel_masm_p.h>
-
-#include <QMap>
-#include <QMutex>
-
-QT_BEGIN_NAMESPACE
-
-namespace QV4 {
-
-namespace {
-#if CPU(X86_64)
-// Generated by fdegen
-static const unsigned char cie_fde_data[] = {
- 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x1, 0x0, 0x8, 0x78, 0x10, 0xc, 0x7, 0x8,
- 0x90, 0x1, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0,
- 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0, 0x41, 0x13, 0x7e, 0x86,
- 0x2, 0x43, 0xd, 0x6, 0x8c, 0x3, 0x8e, 0x4,
- 0x0, 0x0, 0x0, 0x0
-};
-static const int fde_offset = 20;
-static const int initial_location_offset = 28;
-static const int address_range_offset = 36;
-#elif CPU(X86)
-static const unsigned char cie_fde_data[] = {
- 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x1, 0x0, 0x4, 0x7c, 0x8, 0xc, 0x4, 0x4,
- 0x88, 0x1, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0,
- 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0, 0x41, 0x13, 0x7e, 0x85,
- 0x2, 0x43, 0xd, 0x5, 0x86, 0x3, 0x87, 0x4,
- 0x0, 0x0, 0x0, 0x0,
-};
-static const int fde_offset = 20;
-static const int initial_location_offset = 28;
-static const int address_range_offset = 32;
-#endif
-
-void writeIntPtrValue(unsigned char *addr, qintptr val)
-{
- addr[0] = (val >> 0) & 0xff;
- addr[1] = (val >> 8) & 0xff;
- addr[2] = (val >> 16) & 0xff;
- addr[3] = (val >> 24) & 0xff;
-#if QT_POINTER_SIZE == 8
- addr[4] = (val >> 32) & 0xff;
- addr[5] = (val >> 40) & 0xff;
- addr[6] = (val >> 48) & 0xff;
- addr[7] = (val >> 56) & 0xff;
-#endif
-}
-} // anonymous namespace
-
-extern "C" void __register_frame(void *fde);
-extern "C" void __deregister_frame(void *fde);
-
-struct UnwindInfo : public ExecutableAllocator::PlatformUnwindInfo
-{
- UnwindInfo(const QByteArray &cieFde);
- virtual ~UnwindInfo();
- QByteArray data;
-};
-
-UnwindInfo::UnwindInfo(const QByteArray &cieFde)
- : data(cieFde)
-{
- __register_frame(data.data() + fde_offset);
-}
-
-UnwindInfo::~UnwindInfo()
-{
- __deregister_frame(data.data() + fde_offset);
-}
-
-static void ensureUnwindInfo(Function *f)
-{
- if (!f->codePtr)
- return; // Not a JIT generated function
-
- ExecutableAllocator::ChunkOfPages *chunk = f->compilationUnit->chunkForFunction(f->compiledFunction->index);
- if (!chunk)
- return;
-
- // Already registered?
- if (chunk->unwindInfo)
- return;
-
- QByteArray info;
- info.resize(sizeof(cie_fde_data));
-
- unsigned char *cie_and_fde = reinterpret_cast<unsigned char *>(info.data());
- memcpy(cie_and_fde, cie_fde_data, sizeof(cie_fde_data));
-
- qintptr ptr = static_cast<char *>(chunk->pages->base()) - static_cast<char *>(0);
- writeIntPtrValue(cie_and_fde + initial_location_offset, ptr);
-
- writeIntPtrValue(cie_and_fde + address_range_offset, chunk->pages->size());
-
- chunk->unwindInfo = new UnwindInfo(info);
-}
-
-void UnwindHelper::prepareForUnwind(ExecutionContext *context)
-{
- for (ExecutionContext *ctx = context; ctx; ctx = ctx->parent) {
- if (CallContext *callCtx = ctx->asCallContext())
- if (FunctionObject *fobj = callCtx->function)
- if (Function *fun = fobj->function)
- ensureUnwindInfo(fun);
- for (ExecutionContext::EvalCode *code = ctx->currentEvalCode;
- code; code = code->next)
- ensureUnwindInfo(code->function);
- }
-
- if (context->engine->globalCode)
- ensureUnwindInfo(context->engine->globalCode);
-}
-
-void UnwindHelper::registerFunction(Function *)
-{
-}
-
-void UnwindHelper::registerFunctions(const QVector<Function *>&)
-{
-}
-
-void UnwindHelper::deregisterFunction(Function *)
-{
-}
-
-void UnwindHelper::deregisterFunctions(const QVector<Function *> &)
-{
-}
-
-}
-
-QT_END_NAMESPACE
-
-#endif // QV4UNWINDHELPER_PDW2_H