diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2013-08-14 10:17:31 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2013-08-15 09:08:35 +0200 |
commit | 131964a3b5ac0cb6de5f1d306035003751da907a (patch) | |
tree | 8da48d516a73142c8317523890ba4f877f90fe03 /src/qml/compiler/qv4compileddata_p.h | |
parent | 22e4061e14e10fb825a5971437de0af52c491aa2 (diff) |
Initial version of generator for new data structures
Change-Id: I172a504f8b4f8284967a4a02e207bf4c0a04c2a4
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/compiler/qv4compileddata_p.h')
-rw-r--r-- | src/qml/compiler/qv4compileddata_p.h | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/src/qml/compiler/qv4compileddata_p.h b/src/qml/compiler/qv4compileddata_p.h index 9fcae5fdbe..47e4e48957 100644 --- a/src/qml/compiler/qv4compileddata_p.h +++ b/src/qml/compiler/qv4compileddata_p.h @@ -42,9 +42,18 @@ #define QV4COMPILEDDATA_P_H #include <QtCore/qstring.h> +#include <QVector> +#include <QStringList> +#include <private/qv4value_def_p.h> QT_BEGIN_NAMESPACE +namespace QQmlJS { +namespace V4IR { +struct Function; +} +} + namespace QV4 { struct ExecutionContext; @@ -53,7 +62,7 @@ namespace CompiledData { static const char magic_str[] = "qv4cdata"; -struct Header +struct Unit { char magic[8]; qint16 architecture; @@ -64,12 +73,18 @@ struct Header IsQml = 0x2 }; quint32 flags; + uint stringTableSize; + uint offsetToStringTable; + uint functionTableSize; + uint offsetToFunctionTable; + + static int calculateSize(uint nStrings, uint nFunctions) { return (sizeof(Unit) + (nStrings + nFunctions) * sizeof(uint) + 7) & ~7; } }; struct Function { - Value (*code)(ExecutionContext *, const uchar *); - quint32 offsetToName; + QV4::Value (*code)(ExecutionContext *, const uchar *); + quint32 nameIndex; qint64 flags; // strict, etc. quint32 nFormals; quint32 formalsOffset; @@ -77,10 +92,15 @@ struct Function quint32 localsOffset; quint32 nInnerFunctions; quint32 innerFunctionsOffset; -// quint32 offsetForFormals[nFormals] -// quint32 offsetForLocals[nLocals] +// quint32 formalsIndex[nFormals] +// quint32 localsIndex[nLocals] // quint32 offsetForInnerFunctions[nInnerFunctions] // Function[nInnerFunctions] + + static int calculateSize(int nFormals, int nLocals, int nInnerfunctions) { + return (sizeof(Function) + (nFormals + nLocals + nInnerfunctions) * sizeof(quint32) + 7) & ~0x7; + } + static int calculateSize(QQmlJS::V4IR::Function *f); }; struct String @@ -89,14 +109,10 @@ struct String quint32 flags; // isArrayIndex QArrayData str; // uint16 strdata[] -}; - -struct JSUnit -{ - Header header; - Function entry; - // String stringTable; + static int calculateSize(const QString &str) { + return (sizeof(String) + (str.length() + 1) * sizeof(quint16) + 7) & ~0x7; + } }; @@ -171,7 +187,7 @@ struct Imports struct QmlUnit { - Header header; + Unit header; int offsetToTypeName; Imports imports; Object object; @@ -186,7 +202,7 @@ struct QmlUnit struct CompilationUnit { virtual ~CompilationUnit(); - Header *data; + Unit *data; // ### runtime data // pointer to qml data for QML unit |