aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmlcachegen/qmlcachegen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/qmlcachegen/qmlcachegen.cpp')
-rw-r--r--tools/qmlcachegen/qmlcachegen.cpp65
1 files changed, 22 insertions, 43 deletions
diff --git a/tools/qmlcachegen/qmlcachegen.cpp b/tools/qmlcachegen/qmlcachegen.cpp
index 6bc199ee6b..26297d3d9a 100644
--- a/tools/qmlcachegen/qmlcachegen.cpp
+++ b/tools/qmlcachegen/qmlcachegen.cpp
@@ -35,17 +35,7 @@
#include <QHashFunctions>
#include <private/qqmlirbuilder_p.h>
-#include <private/qv4isel_moth_p.h>
#include <private/qqmljsparser_p.h>
-#include <private/qv4jssimplifier_p.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace QV4 { namespace JIT {
-Q_QML_EXPORT QV4::EvalISelFactory *createISelForArchitecture(const QString &architecture);
-} }
-
-QT_END_NAMESPACE
struct Error
{
@@ -114,7 +104,7 @@ static void annotateListElements(QmlIR::Document *document)
}
}
-static bool compileQmlFile(const QString &inputFileName, const QString &outputFileName, QV4::EvalISelFactory *iselFactory, const QString &targetABI, Error *error)
+static bool compileQmlFile(const QString &inputFileName, const QString &outputFileName, const QString &targetABI, Error *error)
{
QmlIR::Document irDocument(/*debugMode*/false);
irDocument.jsModule.targetABI = targetABI;
@@ -149,7 +139,7 @@ static bool compileQmlFile(const QString &inputFileName, const QString &outputFi
annotateListElements(&irDocument);
{
- QmlIR::JSCodeGen v4CodeGen(/*empty input file name*/QString(), irDocument.code,
+ QmlIR::JSCodeGen v4CodeGen(irDocument.code,
&irDocument.jsGenerator, &irDocument.jsModule,
&irDocument.jsParserEngine, irDocument.program,
/*import cache*/0, &irDocument.jsGenerator.stringTable);
@@ -178,16 +168,14 @@ static bool compileQmlFile(const QString &inputFileName, const QString &outputFi
QmlIR::QmlUnitGenerator generator;
- {
- QQmlJavaScriptBindingExpressionSimplificationPass pass(irDocument.objects, &irDocument.jsModule, &irDocument.jsGenerator);
- pass.reduceTranslationBindings();
- }
+// {
+// QQmlJavaScriptBindingExpressionSimplificationPass pass(irDocument.objects, &irDocument.jsModule, &irDocument.jsGenerator);
+// pass.reduceTranslationBindings();
+// }
- QV4::ExecutableAllocator allocator;
- QScopedPointer<QV4::EvalInstructionSelection> isel(iselFactory->create(/*engine*/nullptr, &allocator, &irDocument.jsModule, &irDocument.jsGenerator));
// Disable lookups in non-standalone (aka QML) mode
- isel->setUseFastLookups(false);
- irDocument.javaScriptCompilationUnit = isel->compile(/*generate unit*/false);
+ v4CodeGen.setUseFastLookups(false);
+ irDocument.javaScriptCompilationUnit = v4CodeGen.generateCompilationUnit(/*generate unit*/false);
QV4::CompiledData::Unit *unit = generator.generate(irDocument);
unit->flags |= QV4::CompiledData::Unit::StaticData;
unit->flags |= QV4::CompiledData::Unit::PendingTypeCompilation;
@@ -201,7 +189,7 @@ static bool compileQmlFile(const QString &inputFileName, const QString &outputFi
return true;
}
-static bool compileJSFile(const QString &inputFileName, const QString &outputFileName, QV4::EvalISelFactory *iselFactory, const QString &targetABI, Error *error)
+static bool compileJSFile(const QString &inputFileName, const QString &outputFileName, const QString &targetABI, Error *error)
{
QmlIR::Document irDocument(/*debugMode*/false);
irDocument.jsModule.targetABI = targetABI;
@@ -256,11 +244,12 @@ static bool compileJSFile(const QString &inputFileName, const QString &outputFil
}
{
- QmlIR::JSCodeGen v4CodeGen(inputFileName, irDocument.code, &irDocument.jsGenerator,
+ irDocument.jsModule.fileName = inputFileName;
+ QmlIR::JSCodeGen v4CodeGen(irDocument.code, &irDocument.jsGenerator,
&irDocument.jsModule, &irDocument.jsParserEngine,
irDocument.program, /*import cache*/0,
&irDocument.jsGenerator.stringTable);
- v4CodeGen.generateFromProgram(/*empty input file name*/QString(), sourceCode, program, &irDocument.jsModule, QQmlJS::Codegen::GlobalCode);
+ v4CodeGen.generateFromProgram(inputFileName, sourceCode, program, &irDocument.jsModule, QQmlJS::GlobalCode);
QList<QQmlJS::DiagnosticMessage> jsErrors = v4CodeGen.errors();
if (!jsErrors.isEmpty()) {
for (const QQmlJS::DiagnosticMessage &e: qAsConst(jsErrors)) {
@@ -274,11 +263,9 @@ static bool compileJSFile(const QString &inputFileName, const QString &outputFil
QmlIR::QmlUnitGenerator generator;
- QV4::ExecutableAllocator allocator;
- QScopedPointer<QV4::EvalInstructionSelection> isel(iselFactory->create(/*engine*/nullptr, &allocator, &irDocument.jsModule, &irDocument.jsGenerator));
// Disable lookups in non-standalone (aka QML) mode
- isel->setUseFastLookups(false);
- irDocument.javaScriptCompilationUnit = isel->compile(/*generate unit*/false);
+ v4CodeGen.setUseFastLookups(false);
+ irDocument.javaScriptCompilationUnit = v4CodeGen.generateCompilationUnit(/*generate unit*/false);
QV4::CompiledData::Unit *unit = generator.generate(irDocument);
unit->flags |= QV4::CompiledData::Unit::StaticData;
irDocument.javaScriptCompilationUnit->data = unit;
@@ -330,17 +317,12 @@ int main(int argc, char **argv)
return EXIT_FAILURE;
}
- QScopedPointer<QV4::EvalISelFactory> isel;
- const QString targetArchitecture = parser.value(targetArchitectureOption);
-
- isel.reset(QV4::JIT::createISelForArchitecture(targetArchitecture));
-
- if (parser.isSet(checkIfSupportedOption)) {
- if (isel.isNull())
- return EXIT_FAILURE;
- else
- return EXIT_SUCCESS;
- }
+// if (parser.isSet(checkIfSupportedOption)) {
+// if (isel.isNull())
+// return EXIT_FAILURE;
+// else
+// return EXIT_SUCCESS;
+// }
const QStringList sources = parser.positionalArguments();
if (sources.isEmpty()){
@@ -351,9 +333,6 @@ int main(int argc, char **argv)
}
const QString inputFile = sources.first();
- if (!isel)
- isel.reset(new QV4::Moth::ISelFactory);
-
Error error;
QString outputFileName = inputFile + QLatin1Char('c');
@@ -363,12 +342,12 @@ int main(int argc, char **argv)
const QString targetABI = parser.value(targetABIOption);
if (inputFile.endsWith(QLatin1String(".qml"))) {
- if (!compileQmlFile(inputFile, outputFileName, isel.data(), targetABI, &error)) {
+ if (!compileQmlFile(inputFile, outputFileName, targetABI, &error)) {
error.augment(QLatin1String("Error compiling qml file: ")).print();
return EXIT_FAILURE;
}
} else if (inputFile.endsWith(QLatin1String(".js"))) {
- if (!compileJSFile(inputFile, outputFileName, isel.data(), targetABI, &error)) {
+ if (!compileJSFile(inputFile, outputFileName, targetABI, &error)) {
error.augment(QLatin1String("Error compiling qml file: ")).print();
return EXIT_FAILURE;
}