Revision 837529

Go back to digest for 27th July 2008

Features in Development Tools

David Nolden committed changes in /trunk/KDE/kdevplatform:

Big Milestone: Working persistent DUChain
Top-contexts and all their data are now stored to disk, for now 1 file each.
The environment-information for all top-contexts is stored in a separate repository, and is used to look up whether there is a matching top-context for the given environment.

If there is one, it's loaded from disk. Each top-context has a unique index assigned. The same of course for declarations and contexts. When a context/declaration/top-context is requested that is in a top-context that currently isn't loaded, it's loaded from disk. mmap isn't used yet, but it's already very efficient the way it is now.

IdentifiedFile was completely removed, since it's redundant now that we assign indices to top-contexts.
The item-repository registry can now automatically store&load arbitrary static counters, like the one for top-context or anonymous declaration ids.

Large changes were required all over the place, like changing/implementing many copy-constructors, adressing data by indices, etc.

Some bugs were fixed, some new ones were probably introduced. The good thing is: Itseems to work very well in the state I'm committing.

What's not done yet:
- Automatic unloading of top-contexts/repository parts to save memory, so you stillhave to restart KDevelop time by time

Also there's a regression that comes from the document integration: Code-highlighting and reparsing currently doesn't work on files that are automatically opened with KDevelop. Re-open the document to get it working.

If you have problems do "rm -R ~/.kdevduchain" and send a mail.

File Changes

Modified 63 files
  • /trunk/KDE/kdevplatform
  •   /util/kdevvarlengtharray.h
  •   /language/duchain/aliasdeclaration.cpp
  •   /language/duchain/aliasdeclaration.h
  •   /language/duchain/appendedlist.h
  •   /language/duchain/classfunctiondeclaration.cpp
  •   /language/duchain/classfunctiondeclaration.h
  •   /language/duchain/classmemberdeclaration.cpp
  •   /language/duchain/classmemberdeclaration.h
  •   /language/duchain/declaration.cpp
  •   /language/duchain/declaration.h
  •   /language/duchain/declarationdata.h
  •   /language/duchain/duchain.cpp
  •   /language/duchain/duchain.h
  •   /language/duchain/duchainbase.cpp
  •   /language/duchain/duchainbase.h
  •   /language/duchain/duchainregister.cpp
  •   /language/duchain/duchainregister.h
  •   /language/duchain/duchainutils.cpp
  •   /language/duchain/ducontext.cpp
  •   /language/duchain/ducontext.h
  •   /language/duchain/ducontextdata.h
  •   /language/duchain/dumpchain.cpp
  •   /language/duchain/dumpdotgraph.cpp
  •   /language/duchain/forwarddeclaration.cpp
  •   /language/duchain/forwarddeclaration.h
  •   /language/duchain/functiondeclaration.cpp
  •   /language/duchain/functiondeclaration.h
  •   /language/duchain/identifier.cpp
  •   /language/duchain/identifier.h
  •   /language/duchain/namespacealiasdeclaration.cpp
  •   /language/duchain/namespacealiasdeclaration.h
  •   /language/duchain/parsingenvironment.cpp
  •   /language/duchain/parsingenvironment.h
  •   /language/duchain/smartconverter.cpp
  •   /language/duchain/symboltable.cpp
  •   /language/duchain/topducontext.cpp
  •   /language/duchain/topducontext.h
  •   /language/duchain/topducontextdata.h
  •   /language/duchain/topducontextdynamicdata.cpp
  •   /language/duchain/topducontextdynamicdata.h
  •   /language/editor/documentrangeobject.cpp
  •   /language/editor/documentrangeobject.h
  •   /language/editor/editorintegrator.cpp
  •   /language/editor/editorintegrator.h
  •   /language/editor/editorintegratorstatic.cpp
  •   /language/editor/editorintegratorstatic.h
  •   /language/interfaces/iquickopen.h
  •   /language/interfaces/quickopendataprovider.h
  •   /plugins/classbrowser/classmodel.cpp
  •   /plugins/contextbrowser/contextbrowser.cpp
  •   /plugins/duchainviewer/duchainmodel.cpp
  •   /plugins/problemreporter/problemwidget.cpp
  •   /plugins/quickopen/projectfilequickopen.cpp
  •   /plugins/quickopen/projectfilequickopen.h
  •   /plugins/quickopen/projectitemquickopen.cpp
  •   /plugins/quickopen/quickopenmodel.cpp
  •   /plugins/quickopen/quickopenmodel.h
  •   /plugins/quickopen/quickopenplugin.cpp
  •   /plugins/quickopen/quickopenplugin.h
  •   /language/duchain/builders/abstractcontextbuilder.h
  •   /language/duchain/builders/abstractusebuilder.h
  •   /language/duchain/repositories/itemrepository.cpp
  •   /language/duchain/repositories/itemrepository.h
63 files changed in total