QmlJS: Compute link in SemanticHightlighter thread instead of lazily.

It's used very often, so lazy computation (potentially in the gui
thread) was too expensive.

Reviewed-by: Kai Koehne
This commit is contained in:
Christian Kamm
2010-08-30 13:49:23 +02:00
parent 32bb7bffc0
commit f49a85953b
2 changed files with 9 additions and 9 deletions

View File

@@ -556,13 +556,6 @@ QList<AST::Node *> SemanticInfo::astPath(int cursorPosition) const
LookupContext::Ptr SemanticInfo::lookupContext(const QList<QmlJS::AST::Node *> &path) const
{
// create and link context if necessary
if (!m_context) {
Interpreter::Context *ctx = new Interpreter::Context;
Link link(ctx, document, snapshot, ModelManagerInterface::instance()->importPaths());
m_context = QSharedPointer<const QmlJS::Interpreter::Context>(ctx);
}
return LookupContext::create(document, snapshot, *m_context, path);
}
@@ -1896,6 +1889,10 @@ SemanticInfo SemanticHighlighter::semanticInfo(const Source &source)
semanticInfo.snapshot = snapshot;
semanticInfo.document = doc;
Interpreter::Context *ctx = new Interpreter::Context;
Link link(ctx, doc, snapshot, ModelManagerInterface::instance()->importPaths());
semanticInfo.m_context = QSharedPointer<const QmlJS::Interpreter::Context>(ctx);
QStringList importPaths;
if (m_modelManager)
importPaths = m_modelManager->importPaths();

View File

@@ -114,6 +114,8 @@ public: // attributes
QTextCursor end;
};
class SemanticHighlighter;
class SemanticInfo
{
public:
@@ -145,8 +147,9 @@ public: // attributes
QList<QmlJS::DiagnosticMessage> semanticMessages;
private:
// created lazily
mutable QSharedPointer<const QmlJS::Interpreter::Context> m_context;
QSharedPointer<const QmlJS::Interpreter::Context> m_context;
friend class SemanticHighlighter;
};
class SemanticHighlighter: public QThread