diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2014-03-18 18:21:18 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-19 08:32:33 +0100 |
commit | 89218c6d0eeec66025c62bb2e063ea067426445a (patch) | |
tree | 1a56c5da6120b9b9176e4d519440604c5336cbdb /src/qml/jsruntime | |
parent | c33a79f0a0de8f01b3a43335778e246e1f02598e (diff) |
Clean up script imports
Move the .pragma and .import script extraction out of qqmlscript and
into qqmlirbuilder, where it can populate a QQmlIR::Document. Changed
the script part of the type loader to use that, which also allowed
eliminating the m_source member and m_metaData.
Change-Id: Icc64d219fff5666679a02e6afda73f7edfca132b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/jsruntime')
-rw-r--r-- | src/qml/jsruntime/qv4script.cpp | 11 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4script_p.h | 2 |
2 files changed, 5 insertions, 8 deletions
diff --git a/src/qml/jsruntime/qv4script.cpp b/src/qml/jsruntime/qv4script.cpp index ebcc8bbefa..fc02e04e79 100644 --- a/src/qml/jsruntime/qv4script.cpp +++ b/src/qml/jsruntime/qv4script.cpp @@ -307,13 +307,11 @@ Function *Script::function() return vmFunction; } -CompiledData::CompilationUnit *Script::precompile(ExecutionEngine *engine, const QUrl &url, const QString &source, QList<QQmlError> *reportedErrors) +QV4::CompiledData::CompilationUnit *Script::precompile(IR::Module *module, Compiler::JSUnitGenerator *unitGenerator, ExecutionEngine *engine, const QUrl &url, const QString &source, QList<QQmlError> *reportedErrors) { using namespace QQmlJS; using namespace QQmlJS::AST; - IR::Module module(engine->debugger != 0); - QQmlJS::Engine ee; QQmlJS::Lexer lexer(&ee); lexer.setCode(source, /*line*/1, /*qml mode*/true); @@ -351,7 +349,7 @@ CompiledData::CompilationUnit *Script::precompile(ExecutionEngine *engine, const } QQmlJS::Codegen cg(/*strict mode*/false); - cg.generateFromProgram(url.toString(), source, program, &module, QQmlJS::Codegen::EvalCode); + cg.generateFromProgram(url.toString(), source, program, module, QQmlJS::Codegen::EvalCode); errors = cg.errors(); if (!errors.isEmpty()) { if (reportedErrors) @@ -359,10 +357,9 @@ CompiledData::CompilationUnit *Script::precompile(ExecutionEngine *engine, const return 0; } - Compiler::JSUnitGenerator jsGenerator(&module); - QScopedPointer<EvalInstructionSelection> isel(engine->iselFactory->create(QQmlEnginePrivate::get(engine), engine->executableAllocator, &module, &jsGenerator)); + QScopedPointer<EvalInstructionSelection> isel(engine->iselFactory->create(QQmlEnginePrivate::get(engine), engine->executableAllocator, module, unitGenerator)); isel->setUseFastLookups(false); - return isel->compile(); + return isel->compile(/*generate unit data*/false); } ReturnedValue Script::qmlBinding() diff --git a/src/qml/jsruntime/qv4script_p.h b/src/qml/jsruntime/qv4script_p.h index 8afdb6126f..ec06565ddc 100644 --- a/src/qml/jsruntime/qv4script_p.h +++ b/src/qml/jsruntime/qv4script_p.h @@ -100,7 +100,7 @@ struct Q_QML_EXPORT Script { Function *function(); - static CompiledData::CompilationUnit *precompile(ExecutionEngine *engine, const QUrl &url, const QString &source, QList<QQmlError> *reportedErrors = 0); + static QV4::CompiledData::CompilationUnit *precompile(IR::Module *module, Compiler::JSUnitGenerator *unitGenerator, ExecutionEngine *engine, const QUrl &url, const QString &source, QList<QQmlError> *reportedErrors = 0); static ReturnedValue evaluate(ExecutionEngine *engine, const QString &script, ObjectRef scopeObject); }; |