aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarativecompileddata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml/qdeclarativecompileddata.cpp')
-rw-r--r--src/declarative/qml/qdeclarativecompileddata.cpp33
1 files changed, 31 insertions, 2 deletions
diff --git a/src/declarative/qml/qdeclarativecompileddata.cpp b/src/declarative/qml/qdeclarativecompileddata.cpp
index ce57ccb33b..1f5d11141d 100644
--- a/src/declarative/qml/qdeclarativecompileddata.cpp
+++ b/src/declarative/qml/qdeclarativecompileddata.cpp
@@ -248,11 +248,40 @@ void QDeclarativeCompiledData::dumpInstructions()
qWarning() << name;
qWarning().nospace() << "Index\tOperation\t\tData1\tData2\tData3\tComments";
qWarning().nospace() << "-------------------------------------------------------------------------------";
- for (int ii = 0; ii < bytecode.count(); ++ii) {
- dump(&bytecode[ii], ii);
+
+ const char *instructionStream = bytecode.constData();
+ const char *endInstructionStream = bytecode.constData() + bytecode.size();
+
+ int instructionCount = 0;
+ while (instructionStream < endInstructionStream) {
+ QDeclarativeInstruction *instr = (QDeclarativeInstruction *)instructionStream;
+ dump(instr, instructionCount);
+ instructionStream += instr->size();
+ instructionCount++;
}
+
qWarning().nospace() << "-------------------------------------------------------------------------------";
}
+int QDeclarativeCompiledData::addInstruction(const QDeclarativeInstruction &instr)
+{
+ int ptrOffset = bytecode.size();
+ int size = instr.size();
+ bytecode.resize(bytecode.size() + size);
+ char *data = bytecode.data() + ptrOffset;
+ qMemCopy(data, &instr, size);
+
+ return ptrOffset;
+}
+
+int QDeclarativeCompiledData::nextInstructionIndex()
+{
+ return bytecode.size();
+}
+
+QDeclarativeInstruction *QDeclarativeCompiledData::instruction(int index)
+{
+ return (QDeclarativeInstruction *)(bytecode.constData() + index);
+}
QT_END_NAMESPACE