Review Request 119959: Do not create multiple chains/env files on update.

Milian Wolff mail at milianw.de
Fri Aug 29 21:51:27 UTC 2014



> On Aug. 28, 2014, 4:15 a.m., Sergey Kalinichev wrote:
> > Ok, just retested it. Yeah regarding code-completion it's so much better!
> > But I still see a lot of those: ClangParsingEnvironmentFile::needsUpdate: environment differs, require update: "/usr/include/*
> > messages when switching between files (e.g. working with clanghelpers.cpp then switch to clangparsejob.cpp work here then come back to clanghelpers.cpp), it takes some time to get code-completion/problems back - about 10-15 seconds for me.
> > I think it shouldn't be like that.
> 
> Milian Wolff wrote:
>     Yes, I agree. I'll push this changeset first and try to investigate the rest later.
>     
>     Cheers, thanks for testing!

I just reproduced the issue you describe. I'll try to find a small test case for it now in order to find the culprit and fix it.

bye


- Milian


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/119959/#review65392
-----------------------------------------------------------


On Aug. 28, 2014, 11:51 a.m., Milian Wolff wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/119959/
> -----------------------------------------------------------
> 
> (Updated Aug. 28, 2014, 11:51 a.m.)
> 
> 
> Review request for KDevelop and Sergey Kalinichev.
> 
> 
> Repository: kdev-clang
> 
> 
> Description
> -------
> 
> The implementation of ClangParsingEnvironmentFile::matchEnvironment
> was too restrictive. A "match" should just indicate that a given
> DUChain is valid for a given environment in principle, not whether
> its environment is equal (or so I think right now).
> 
> Otherwise, we end up creating multiple TopDUContexts with associated
> ClangEnvironmentFiles whenever the environment has changed and a
> reparse is triggered.
> 
> Properly update environment and modification revision of includes.
> 
> Otherwise these files will be parsed over and over again since
> neither their environment, nor their timestamp is updated properly.
> 
> This hopefully fixes the slowness during code completion.
> 
> 
> Diffs
> -----
> 
>   clangparsejob.cpp 578d3abbb84671113da43eab9f7bb0401c7f71e1 
>   clangsupport.cpp 7d091eb3873a973ae283dcdafb9551d0fd16d325 
>   duchain/clanghelpers.cpp 6db552dfde667335a145d99852efbb3a74985f50 
>   duchain/clangparsingenvironmentfile.cpp b7d903c9961beeecaca7438d7f5c96be5394387c 
>   tests/test_duchain.cpp d0146c92f8a7d878aaca8266d6c3f07b24a60701 
> 
> Diff: https://git.reviewboard.kde.org/r/119959/diff/
> 
> 
> Testing
> -------
> 
> The unit test now passes, but I could never reproduce this:
> 
> commit fccc9b4311abb8f858c18e80348df8d3e09b1ce3
> Author: Sergey Kalinichev <kalinichev.so.0 at gmail.com>
> Date:   Tue Aug 19 21:54:57 2014 +0400
> 
>     Implement ClangParsingEnvironmentFile::matchEnvironment
>     
>     Now code completion is so much faster!
> 
> so I don't know whether the code completion is now slower again? Anyhow, if that is the case we'd need a different fix anyways.
> 
> 
> Thanks,
> 
> Milian Wolff
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20140829/8fe5d46e/attachment.html>


More information about the KDevelop-devel mailing list