result = i->result();
} else {
+ QScopedPointer<QV4::Script> script;
- QFile f(localFile);
+ if (const QQmlPrivate::CachedQmlUnit *cachedUnit = QQmlMetaType::findCachedCompilationUnit(url)) {
+ QV4::CompiledData::CompilationUnit *jsUnit = cachedUnit->createCompilationUnit();
- script.reset(new QV4::Script(v4, qmlcontextobject, jsUnit));
++ script.reset(new QV4::Script(scope.engine, qmlcontextobject, jsUnit));
+ } else {
+ QFile f(localFile);
- if (f.open(QIODevice::ReadOnly)) {
- QByteArray data = f.readAll();
- QString code = QString::fromUtf8(data);
- QmlIR::Document::removeScriptPragmas(code);
+ if (f.open(QIODevice::ReadOnly)) {
+ QByteArray data = f.readAll();
+ QString code = QString::fromUtf8(data);
+ QmlIR::Document::removeScriptPragmas(code);
- QV4::Script script(scope.engine, qmlcontextobject, code, url.toString());
- script.reset(new QV4::Script(v4, qmlcontextobject, code, url.toString()));
++ script.reset(new QV4::Script(scope.engine, qmlcontextobject, code, url.toString()));
+ }
+ }
- QV4::ExecutionContext *ctx = v4->currentContext();
+ if (!script.isNull()) {
- script.parse();
+ QV4::ExecutionContext *ctx = scope.engine->currentContext();
- if (!v4->hasException)
+ script->parse();
- script.run();
+ if (!scope.engine->hasException)
- if (v4->hasException) {
+ script->run();
+ if (scope.engine->hasException) {
QV4::ScopedValue ex(scope, ctx->catchException());
- result = resultValue(v4, Exception);
- result->asObject()->put(QV4::ScopedString(scope, v4->newString(QStringLiteral("exception"))), ex);
+ result = resultValue(scope.engine, Exception);
+ result->asObject()->put(scope.engine->newString(QStringLiteral("exception"))->getPointer(), ex);
} else {
- result = resultValue(v4, Ok);
+ result = resultValue(scope.engine, Ok);
}
} else {
- result = resultValue(v4, NetworkError);
+ result = resultValue(scope.engine, NetworkError);
}
callback(callbackFunction, result);