diff options
Diffstat (limited to 'src/qml/compiler/qv4compiler.cpp')
-rw-r--r-- | src/qml/compiler/qv4compiler.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/qml/compiler/qv4compiler.cpp b/src/qml/compiler/qv4compiler.cpp index d7c7563315..594ea32b51 100644 --- a/src/qml/compiler/qv4compiler.cpp +++ b/src/qml/compiler/qv4compiler.cpp @@ -260,6 +260,9 @@ QV4::CompiledData::Unit *QV4::Compiler::JSUnitGenerator::generateUnit(GeneratorO registerString(entry.importName); registerString(entry.localName); } + + for (const QString &request: module->moduleRequests) + registerString(request); } Q_ALLOCA_VAR(quint32_le, blockClassAndFunctionOffsets, (module->functions.size() + module->classes.size() + module->blocks.size()) * sizeof(quint32_le)); @@ -353,6 +356,14 @@ QV4::CompiledData::Unit *QV4::Compiler::JSUnitGenerator::generateUnit(GeneratorO } } + { + quint32_le *moduleRequestEntryToWrite = reinterpret_cast<quint32_le *>(dataPtr + unit->offsetToModuleRequestTable); + for (const QString &moduleRequest: module->moduleRequests) { + *moduleRequestEntryToWrite = getStringId(moduleRequest); + moduleRequestEntryToWrite++; + } + } + // write strings and string table if (option == GenerateWithStringTable) stringTable.serialize(unit); @@ -610,6 +621,12 @@ QV4::CompiledData::Unit QV4::Compiler::JSUnitGenerator::generateHeader(QV4::Comp nextOffset += unit.importEntryTableSize * sizeof(CompiledData::ImportEntry); nextOffset = (nextOffset + 7) & ~quint32(0x7); + + unit.moduleRequestTableSize = module->moduleRequests.count(); + unit.offsetToModuleRequestTable = nextOffset; + nextOffset += unit.moduleRequestTableSize * sizeof(uint); + nextOffset = (nextOffset + 7) & ~quint32(0x7); + quint32 functionSize = 0; for (int i = 0; i < module->functions.size(); ++i) { Context *f = module->functions.at(i); |