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.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/qmlcachegen/qmlcachegen.cpp b/tools/qmlcachegen/qmlcachegen.cpp
index d16795f9d5..37a2298717 100644
--- a/tools/qmlcachegen/qmlcachegen.cpp
+++ b/tools/qmlcachegen/qmlcachegen.cpp
@@ -101,6 +101,11 @@ int main(int argc, char **argv)
QCommandLineOption validateBasicBlocksOption("validate-basic-blocks"_L1, QCoreApplication::translate("main", "Performs checks on the basic blocks of a function compiled ahead of time to validate its structure and coherence"));
parser.addOption(validateBasicBlocksOption);
+ QCommandLineOption dumpAotStatsOption("dump-aot-stats"_L1, QCoreApplication::translate("main", "Dumps statistics about ahead-of-time compilation of bindings and functions"));
+ parser.addOption(dumpAotStatsOption);
+ QCommandLineOption moduleIdOption("module-id"_L1, QCoreApplication::translate("main", "Identifies the module of the qml file being compiled for aot stats"), QCoreApplication::translate("main", "id"));
+ parser.addOption(moduleIdOption);
+
QCommandLineOption outputFileOption("o"_L1, QCoreApplication::translate("main", "Output file name"), QCoreApplication::translate("main", "file name"));
parser.addOption(outputFileOption);
@@ -135,6 +140,11 @@ int main(int argc, char **argv)
if (target == GenerateLoader && parser.isSet(resourceNameOption))
target = GenerateLoaderStandAlone;
+ if (parser.isSet(dumpAotStatsOption) && !parser.isSet(moduleIdOption)) {
+ fprintf(stderr, "--dump-aot-stats set without setting --module-id");
+ return EXIT_FAILURE;
+ }
+
const QStringList sources = parser.positionalArguments();
if (sources.isEmpty()){
parser.showHelp();
@@ -261,6 +271,11 @@ int main(int argc, char **argv)
&importer, u':' + inputResourcePath,
QQmlJSUtils::cleanPaths(parser.values(importsOption)), &logger);
+ if (parser.isSet(dumpAotStatsOption)) {
+ QQmlJS::QQmlJSAotCompilerStats::setRecordAotStats(true);
+ QQmlJS::QQmlJSAotCompilerStats::setModuleId(parser.value(moduleIdOption));
+ }
+
if (parser.isSet(validateBasicBlocksOption))
cppCodeGen.m_flags.setFlag(QQmlJSAotCompiler::ValidateBasicBlocks);
@@ -279,6 +294,9 @@ int main(int argc, char **argv)
if (parser.isSet(warningsAreErrorsOption))
return EXIT_FAILURE;
}
+
+ if (parser.isSet(dumpAotStatsOption))
+ QQmlJS::QQmlJSAotCompilerStats::instance()->saveToDisk(outputFileName + u".aotstats"_s);
}
} else if (inputFile.endsWith(".js"_L1) || inputFile.endsWith(".mjs"_L1)) {
QQmlJSCompileError error;