Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] patch to speed up CSelectionTestsCTagsIndexer/CPPSelectionTestsCTagsIndexer


This patch gets rid of the work around added to CoreModel with the last patch.  It was required in order to get C(PP)SelectionTests*Indexer working but the better way to do this is to create a scanner config for the projects for those tests.

This patch also improves the speeds of CSelectionTestsCTagsIndexer and CPPSelectionTestsCTagsIndexer by adding CTagsIndexer#notifyListeners(IndexDelta) to Index.java.

Devin Steffler
IBM's Eclipse CDT
Ottawa (Palladium), Ontario, Canada


Index: index/org/eclipse/cdt/internal/core/index/cindexstorage/Index.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/Index.java,v
retrieving revision 1.6
diff -u -r1.6 Index.java
--- index/org/eclipse/cdt/internal/core/index/cindexstorage/Index.java	16 May 2005 14:44:01 -0000	1.6
+++ index/org/eclipse/cdt/internal/core/index/cindexstorage/Index.java	31 May 2005 18:06:37 -0000
@@ -32,6 +32,7 @@
 import org.eclipse.cdt.internal.core.index.cindexstorage.io.IndexOutput;
 import org.eclipse.cdt.internal.core.index.cindexstorage.io.MergeFactory;
 import org.eclipse.cdt.internal.core.index.cindexstorage.io.SimpleIndexInput;
+import org.eclipse.cdt.internal.core.index.ctagsindexer.CTagsIndexer;
 import org.eclipse.cdt.internal.core.index.impl.IndexDelta;
 import org.eclipse.cdt.internal.core.index.impl.Int;
 import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
@@ -315,6 +316,9 @@
 			if (indexer instanceof SourceIndexer){
 				IndexDelta indexDelta = new IndexDelta(null,null,IIndexDelta.MERGE_DELTA);
 				((SourceIndexer) indexer).notifyListeners(indexDelta);
+			} else if (indexer instanceof CTagsIndexer) {
+				IndexDelta indexDelta = new IndexDelta(null,null,IIndexDelta.MERGE_DELTA);
+				((CTagsIndexer) indexer).notifyListeners(indexDelta);
 			}
 		}
 	}
Index: model/org/eclipse/cdt/core/model/CoreModel.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java,v
retrieving revision 1.59
diff -u -r1.59 CoreModel.java
--- model/org/eclipse/cdt/core/model/CoreModel.java	31 May 2005 15:44:40 -0000	1.59
+++ model/org/eclipse/cdt/core/model/CoreModel.java	31 May 2005 18:06:37 -0000
@@ -1098,7 +1098,7 @@
 
 	public static boolean isScannerInformationEmpty(IResource resource) {
 		final int PATH_ENTRY_MASK = IPathEntry.CDT_INCLUDE | IPathEntry.CDT_MACRO |
-									IPathEntry.CDT_INCLUDE_FILE | IPathEntry.CDT_MACRO_FILE | IPathEntry.CDT_SOURCE;
+									IPathEntry.CDT_INCLUDE_FILE | IPathEntry.CDT_MACRO_FILE;
 		boolean rc = true;
 		IPath resPath = resource.getFullPath();
 		IProject project = resource.getProject();
Index: plugin.xml
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.ui.tests/plugin.xml,v
retrieving revision 1.34
diff -u -r1.34 plugin.xml
--- plugin.xml	29 Mar 2005 21:40:34 -0000	1.34
+++ plugin.xml	31 May 2005 18:06:48 -0000
@@ -30,6 +30,7 @@
       <import plugin="org.eclipse.compare"/>
       <import plugin="org.eclipse.ui.console"/>
       <import plugin="org.eclipse.core.expressions"/>
+      <import plugin="org.eclipse.cdt.make.core"/>
    </requires>
 
    <extension
Index: ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsCTagsIndexer.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsCTagsIndexer.java,v
retrieving revision 1.1
diff -u -r1.1 CPPSelectionTestsCTagsIndexer.java
--- ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsCTagsIndexer.java	31 May 2005 15:44:38 -0000	1.1
+++ ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsCTagsIndexer.java	31 May 2005 18:06:48 -0000
@@ -16,6 +16,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.eclipse.cdt.core.CCProjectNature;
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.dom.ast.IASTName;
 import org.eclipse.cdt.core.dom.ast.IASTNode;
@@ -26,8 +27,13 @@
 import org.eclipse.cdt.internal.core.index.ctagsindexer.CTagsIndexer;
 import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
 import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
+import org.eclipse.cdt.make.core.MakeProjectNature;
+import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
+import org.eclipse.cdt.make.internal.core.scannerconfig2.PerProjectSICollector;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.NullProgressMonitor;
@@ -70,8 +76,12 @@
 		//Enable indexing on test project
 		project.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
 		
-		if (project==null)
-			fail("Unable to create project");	 //$NON-NLS-1$
+		if (project==null) fail("Unable to create project");	 //$NON-NLS-1$
+		IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(project.getName());
+		CCProjectNature.addCCNature(project,monitor); 
+		MakeProjectNature.addNature(project, new NullProgressMonitor());
+		ScannerConfigNature.addScannerConfigNature(project);
+		PerProjectSICollector.calculateCompilerBuiltins(project);
 		
 		indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
 		
Index: ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsDOMIndexer.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsDOMIndexer.java,v
retrieving revision 1.1
diff -u -r1.1 CPPSelectionTestsDOMIndexer.java
--- ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsDOMIndexer.java	31 May 2005 15:44:38 -0000	1.1
+++ ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsDOMIndexer.java	31 May 2005 18:06:48 -0000
@@ -18,6 +18,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.eclipse.cdt.core.CCProjectNature;
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.dom.ast.IASTName;
 import org.eclipse.cdt.core.dom.ast.IASTNode;
@@ -27,8 +28,13 @@
 import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
 import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
 import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
+import org.eclipse.cdt.make.core.MakeProjectNature;
+import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
+import org.eclipse.cdt.make.internal.core.scannerconfig2.PerProjectSICollector;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.NullProgressMonitor;
@@ -69,8 +75,12 @@
 		//Enable indexing on test project
 		project.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
 		
-		if (project==null)
-			fail("Unable to create project");	 //$NON-NLS-1$
+		if (project==null) fail("Unable to create project");	 //$NON-NLS-1$
+		IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(project.getName());
+		CCProjectNature.addCCNature(project,monitor); 
+		MakeProjectNature.addNature(project, new NullProgressMonitor());
+		ScannerConfigNature.addScannerConfigNature(project);
+		PerProjectSICollector.calculateCompilerBuiltins(project);
 		
 		indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
 
Index: ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsCTagsIndexer.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsCTagsIndexer.java,v
retrieving revision 1.1
diff -u -r1.1 CSelectionTestsCTagsIndexer.java
--- ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsCTagsIndexer.java	31 May 2005 15:44:38 -0000	1.1
+++ ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsCTagsIndexer.java	31 May 2005 18:06:49 -0000
@@ -26,8 +26,14 @@
 import org.eclipse.cdt.internal.core.index.ctagsindexer.CTagsIndexer;
 import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
 import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
+import org.eclipse.cdt.make.core.MakeProjectNature;
+import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
+import org.eclipse.cdt.make.internal.core.scannerconfig2.PerProjectSICollector;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.NullProgressMonitor;
@@ -71,10 +77,13 @@
 		
 		//Enable indexing on test project
 		project.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
-		
-		if (project==null)
-			fail("Unable to create project");	 //$NON-NLS-1$
-		
+
+		if (project==null) fail("Unable to create project");	 //$NON-NLS-1$
+		IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(project.getName());
+		MakeProjectNature.addNature(project, new NullProgressMonitor());
+		ScannerConfigNature.addScannerConfigNature(project);
+		PerProjectSICollector.calculateCompilerBuiltins(project);
+
 		indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
 		
 		resetIndexer(sourceIndexerID); // set indexer
Index: ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsDOMIndexer.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsDOMIndexer.java,v
retrieving revision 1.1
diff -u -r1.1 CSelectionTestsDOMIndexer.java
--- ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsDOMIndexer.java	31 May 2005 15:44:38 -0000	1.1
+++ ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsDOMIndexer.java	31 May 2005 18:06:49 -0000
@@ -25,8 +25,13 @@
 import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
 import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
 import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
+import org.eclipse.cdt.make.core.MakeProjectNature;
+import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
+import org.eclipse.cdt.make.internal.core.scannerconfig2.PerProjectSICollector;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.NullProgressMonitor;
@@ -66,9 +71,12 @@
 		
 		//Enable indexing on test project
 		project.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
-		
-		if (project==null)
-			fail("Unable to create project");	 //$NON-NLS-1$
+
+		if (project==null) fail("Unable to create project");	 //$NON-NLS-1$
+		IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(project.getName());
+		MakeProjectNature.addNature(project, new NullProgressMonitor());
+		ScannerConfigNature.addScannerConfigNature(project);
+		PerProjectSICollector.calculateCompilerBuiltins(project);
 		
 		indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
 

Back to the top