aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4compileddata_p.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-08-14 10:17:31 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2013-08-15 09:08:35 +0200
commit131964a3b5ac0cb6de5f1d306035003751da907a (patch)
tree8da48d516a73142c8317523890ba4f877f90fe03 /src/qml/compiler/qv4compileddata_p.h
parent22e4061e14e10fb825a5971437de0af52c491aa2 (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.h44
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