aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4compiler.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-08-14 15:44:53 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2013-08-15 09:08:44 +0200
commit0d1e37e9f50b644c88578aee82859990e7378caf (patch)
tree29a142a092f69886ff87f98d8020049cb85a2e16 /src/qml/compiler/qv4compiler.cpp
parent5f3ef18bf8c3e0e3ba1c80bcdeaece46cbb45c06 (diff)
Fix writing the function offset table and initialize the pointer to the compiled function in the runtime function
Change-Id: I9aed9f394fedc4a4ea334f6ab1b72fe749c64c72 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/compiler/qv4compiler.cpp')
-rw-r--r--src/qml/compiler/qv4compiler.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/qml/compiler/qv4compiler.cpp b/src/qml/compiler/qv4compiler.cpp
index 6bda11552e..7164e21a7a 100644
--- a/src/qml/compiler/qv4compiler.cpp
+++ b/src/qml/compiler/qv4compiler.cpp
@@ -118,11 +118,12 @@ QV4::CompiledData::Unit *QV4::Compiler::JSUnitGenerator::generateUnit()
string += QV4::CompiledData::String::calculateSize(qstr);
}
- // pointer to the entry function
- uint *functionTable = (uint *)data + unit->offsetToFunctionTable;
+ uint *functionTable = (uint *)(data + unit->offsetToFunctionTable);
+ for (uint i = 0; i < irModule->functions.size(); ++i)
+ functionTable[i] = functionOffsets.value(irModule->functions.at(i));
+
char *f = data + unitSize + stringDataSize;
writeFunction(f, irModule->rootFunction);
- ++functionTable;
f += QV4::CompiledData::Function::calculateSize(irModule->rootFunction);
unit->indexOfRootFunction = 0;
@@ -132,7 +133,6 @@ QV4::CompiledData::Unit *QV4::Compiler::JSUnitGenerator::generateUnit()
continue;
writeFunction(f, function);
- ++functionTable;
f += QV4::CompiledData::Function::calculateSize(function);
}