From a69ae2ccf2c59fc038fe5c9635914d7f3980c011 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Tue, 10 Feb 2004 18:17:42 +0000 Subject: [PATCH] Patch for Bogdan Gheorghe This patch adds a layer of separation between the indexer and the parser by running the parser in its own thread. This allows the indexer to finish all jobs regardless of the individual parser outcomes. Also fixed a potential EOF bug while reading stored indexes. --- core/org.eclipse.cdt.core/index/ChangeLog | 518 +++++++++--------- .../core/index/impl/BlocksIndexInput.java | 7 +- .../core/search/indexing/SourceIndexer.java | 35 +- 3 files changed, 304 insertions(+), 256 deletions(-) diff --git a/core/org.eclipse.cdt.core/index/ChangeLog b/core/org.eclipse.cdt.core/index/ChangeLog index 0e8a94740fa..625bd50f091 100644 --- a/core/org.eclipse.cdt.core/index/ChangeLog +++ b/core/org.eclipse.cdt.core/index/ChangeLog @@ -1,253 +1,267 @@ -2004-02-03 Alain Magloire - - PR 51106 - Patches from Thomas Fletcher dealing with the indexer. - - - Remove assumed throw/catch of an exception to be a regular occurance - and replace with explicit test and return for bounds access to the - particular array. - - - Consider references outside of the mapping range the same as no longer - valid mappings (ie -1 entries) and avoid array range exceptions. - - * index/org/eclipse/cdt/internal/core/index/impl/WordEntry.java - * index/org/eclipse/cdt/internal/core/index/impl/FileListBlock.java - -2004-01-26 John Camelon - Updated clients to use new Scanner logging service. - -2003-10-22 Bogdan Gheorghe - - Added updateDependencies() to the IndexManager to request - a new UpdateDependency job. - -2003-10-01 Bogdan Gheorghe - - Modified BlockIndexOutput.addInclude to properly flush an - include block once it's full. - - Flushing the CDT log after every merge - - Logging I/O Exceptions in AddFileToIndex - - Changed valid source file extensions in SourceIndexer to - use CModelManager file extensions - -2003-09-30 Bogdan Gheorghe - Changed logging for SourceIndexer to log file in cdt.core - -2003-09-25 Bogdan Gheorghe - Integrated the dependency service into the indexer. Changes - as follows: - - org.eclipse.cdt.internal.core.index.impl: - * IIndex - added getFileDependencies methods - * IIndexerOutput - modified to allow dep inputs into the index - * BlocksIndexInput - modified to allow the reading of the new index (which includes dep entries) - * BlocksIndexOutput - added facilities to write includes to the index - * GammaCompressedIndexBlock - modified with addIncludeEntry() and nextEntry() - * IncludeEntry - new file - * IncludeEntryHashedArray - new file - * Index - Added getFileDepenendencies to query includeEntries from the index - * IndexBlock - modified to reflect changes in GammaCompressedIndexBlock - * IndexerOutput - added new methods from IIndexerOutput - * IndexInput - modified to allow reading of includes from index files - * IndexSummary - modified to save/read new format which contains include info - * InMemoryIndex - modified InMemoryIndex to keep track of includes - * MergeFactory - modified MergeFactory to accomodate new index file format - * SimpleIndexInput - modified to use the new functions for includes in InMemoryIndex - * Util - Added a quickSort for includeEntry[] - - org.eclipse.cdt.internal.core.search.indexing: - * AbstractIndexer - modified to getResourceFile being indexed, added bestIncludePrefix - to find include table entries, addInclude() which accepts IASTInclusion node and adds it - to the index - * IIndexConstants - added includeRef constant - * IndexManager - got rid of all dependency table references - * SourceIndexer - modified to return resource being indexed - * SourceIndexerRequestor - Added inclusion handling code; stack for includes - - -2003-09-22 Bogdan Gheorghe - - Took out the old CTags Indexer. Modified IndexAllProject to get - the project path straight from the resource (bypassing the CModelManager). - Commented out the enable section in IndexManager. - - Modified - * org.eclipse.cdt.internal.core.search.indexing.IndexAllProject - * org.eclipse.cdt.internal.core.search.indexing.IndexManager - - Deleted - * org.eclipse.cdt.core.index.IndexModel - * org.eclipse.cdt.core.index.ITagEntry - * org.eclipse.cdt.core.index.TagFlags - * org.eclipse.cdt.internal.core.index.CTagsCmd - * org.eclipse.cdt.internal.core.index.CTagsEntry - * org.eclipse.cdt.internal.core.index.CTagsFileReader - * org.eclipse.cdt.internal.core.index.CTagsFileWriter - * org.eclipse.cdt.internal.core.index.CTagsHeader - * org.eclipse.cdt.internal.core.index.CTagsRunner - * org.eclipse.cdt.internal.core.index.IndexManager - * org.eclipse.cdt.internal.core.index.RequestList - -2003-09-16 Andrew Niefer - - add parameter references to index - - modify CharOperation.match to allow escaping wildcards (bug43063) - - modify AbstractIndexer.bestPrefix to handle wildcard escaping in name (bug43063) - -2003-09-13 Andrew Niefer - - add Typedefs to index as Types with suffix T (bug42902) - - added addTypedefReference to AbstractIndexer - - modified bestTypePrefix in AbstractIndexer - - added TYPEDEF_DECL, TYPEDEF_SUFFIX to IIndexConstants - - modified acceptTypedefReference in SourceIndexerRequestor - -2003-09-09 Andrew Niefer - Enumerator references - - Added createEnumeratorFullyQualifiedName in AbstractIndexer - - Added addEnumeratorReference in AbstractIndexer - - implemented acceptEnumeratorReference in SourceIndexerRequestor - -2003-09-08 Andrew Niefer - - Modified calls to ParserFactory to specify which language to use - -2003-09-05 Andrew Niefer - - Modified how AbstractIndexer creates the fully qualified name for an enumerator (spec 7.2-10) - -2003-08-26 Bogdan Gheorghe - - Removed header file extensions from being indexed (they - will be indexed via inclusion) - -2003-08-20 Bogdan Gheorghe - - Added debug tracing in AbstractIndexer - - Added additional file extensions to supported indexed files - - Changed the parser instantiation to pass in retrieved build - info - - Added function decl index entry based on enterFunctionBody - - Added method decl index entry based on enterMethodBody - - Added forward decl refs - -2003-08-14 Bogdan Gheorghe - - Added forward declarations to index - -2003-08-12 Bogdan Gheorghe - - Changed var prefix in AbstractIndexer to pass in fully - qualified names - -2003-08-11 Bogdan Gheorghe - - Added macro declarations to the index - - Added macro prefix to AbstractIndexer - -2003-08-07 Bogdan Gheorghe - - Added shutdown cleanup routine in IndexManager - -2003-07-28 Andrew Niefer - - added support for '?' wildcards in AbstractIndexer.bestPrefix - -2003-07-25 Bogdan Gheorghe - - Changed parser to COMPLETE mode - - Added functionRef, methodRef, typeRef, namespaceRef, fieldRef - - Modified: - * index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java - * index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java - * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java - * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java - - -2003-07-24 Andrew Niefer - - added TYPE_ALL, FUNCTION_ALL, METHOD_ALL, NAMESPACE_ALL, FIELD_ALL constants to IIndexConstants - - modified AbstractIndexer prefix functions to properly handle searching for all occurences - -2003-07-23 Andrew Niefer - Modified - *index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java - -changed so that the index prefixes contain the qualified names of the - elements in reverse order. - -Added functions: - bestVariablePrefix - bestNamespacePrefix - bestFieldPrefix - bestFunctionPrefix - bestMethodPrefix - -2003-07-21 Bogdan Gheorghe - Added additional declarations to index: enums, enumerators, namespace, - functions, vars, methods, fields, typedefs. - - Fixed IndexManager to prevent individually added files from - being added to the index if indexing is not enabled for the project - - Modified: - - * index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java - * index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java - * index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java - * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java - -2003-07-10 Bogdan Gheorghe - Added bestTypeDeclarationPrefix to AbstractIndexer to allow the - search engine to create a query string for the index. - Changed encoding in AbstractIndexer to encode fully qualified names. - - * index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java - -2003-07-03 Bogdan Gheorghe - Updated copyright notices. - -2003-06-25 Bogdan Gheorghe - Added new Indexer framework: - - * index/org/eclipse/cdt/internal/core/index/IDocument.java - * index/org/eclipse/cdt/internal/core/index/IEntryResult.java - * index/org/eclipse/cdt/internal/core/index/IIndex.java - * index/org/eclipse/cdt/internal/core/index/IIndexer.java - * index/org/eclipse/cdt/internal/core/index/IIndexerOutput.java - * index/org/eclipse/cdt/internal/core/index/IQueryResult.java - - * index/org/eclipse/cdt/internal/core/index/impl/Block.java - * index/org/eclipse/cdt/internal/core/index/impl/BlocksIndexInput.java - * index/org/eclipse/cdt/internal/core/index/impl/BlocksIndexOutput.java - * index/org/eclipse/cdt/internal/core/index/impl/CodeByteStream.java - * index/org/eclipse/cdt/internal/core/index/impl/EntryResult.java - * index/org/eclipse/cdt/internal/core/index/impl/Field.java - * index/org/eclipse/cdt/internal/core/index/impl/GammaCompressedIndexBlock.java - * index/org/eclipse/cdt/internal/core/index/impl/IFileDocument.java - * index/org/eclipse/cdt/internal/core/index/impl/IIndexConstants.java - * index/org/eclipse/cdt/internal/core/index/impl/Index.java - * index/org/eclipse/cdt/internal/core/index/impl/IndexBlock.java - * index/org/eclipse/cdt/internal/core/index/impl/IndexedFile.java - * index/org/eclipse/cdt/internal/core/index/impl/IndexedFileHashedArray.java - * index/org/eclipse/cdt/internal/core/index/impl/IndexerOutput.java - * index/org/eclipse/cdt/internal/core/index/impl/IndexInput.java - * index/org/eclipse/cdt/internal/core/index/impl/IndexOutput.java - * index/org/eclipse/cdt/internal/core/index/impl/IndexSummary.java - * index/org/eclipse/cdt/internal/core/index/impl/InMemoryIndex.java - * index/org/eclipse/cdt/internal/core/index/impl/Int.java - * index/org/eclipse/cdt/internal/core/index/impl/MergeFactory.java - * index/org/eclipse/cdt/internal/core/index/impl/PropertyDocument.java - * index/org/eclipse/cdt/internal/core/index/impl/SafeRandomAccessFile.java - * index/org/eclipse/cdt/internal/core/index/impl/SimpleIndexInput.java - * index/org/eclipse/cdt/internal/core/index/impl/Util.java - * index/org/eclipse/cdt/internal/core/index/impl/WordEntry.java - * index/org/eclipse/cdt/internal/core/index/impl/WordEntryHashedArray.java - - * index/org/eclipse/cdt/internal/core/search/CharOperation.java - * index/org/eclipse/cdt/internal/core/search/HashtableOfInt.java - * index/org/eclipse/cdt/internal/core/search/SimpleLookupTable.java - * index/org/eclipse/cdt/internal/core/search/Util.java - * index/org/eclipse/cdt/internal/core/search/message.properties - - * index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java - * index/org/eclipse/cdt/internal/core/search/indexing/AddCompilationUnitToIndex.java - * index/org/eclipse/cdt/internal/core/search/indexing/AddFileToIndex.java - * index/org/eclipse/cdt/internal/core/search/indexing/AddFolderToIndex.java - * index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java - * index/org/eclipse/cdt/internal/core/search/indexing/IndexAllProject.java - * index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java - * index/org/eclipse/cdt/internal/core/search/indexing/IndexRequest.java - * index/org/eclipse/cdt/internal/core/search/indexing/ReadWriteMonitor.java - * index/org/eclipse/cdt/internal/core/search/indexing/RemoveFolderFromIndex.java - * index/org/eclipse/cdt/internal/core/search/indexing/RemoveFromIndex.java - * index/org/eclipse/cdt/internal/core/search/indexing/SaveIndex.java - * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java - * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java - +2004-02-09 Bogdan Gheorghe + PR 51232 + + - Added a layer of separation between the parser and the indexer: we now + create a worker thread to run the parser in. This allows the indexer to + finish all scheduled jobs regardless of how the parser performs on + individual files (i.e. indexing no longer affected by parser failures) + + - Modified some of the stored index block reading routines to use separate + counters, thus avoiding potential EOF exceptions. + + * index/org/eclipse/cdt/internal/core/index/impl/BlocksIndexInput.java + * index/org/eclipse/cdt/internal/core/index/search/indexing/SourceIndexer.java + +2004-02-03 Alain Magloire + + PR 51106 + Patches from Thomas Fletcher dealing with the indexer. + + - Remove assumed throw/catch of an exception to be a regular occurance + and replace with explicit test and return for bounds access to the + particular array. + + - Consider references outside of the mapping range the same as no longer + valid mappings (ie -1 entries) and avoid array range exceptions. + + * index/org/eclipse/cdt/internal/core/index/impl/WordEntry.java + * index/org/eclipse/cdt/internal/core/index/impl/FileListBlock.java + +2004-01-26 John Camelon + Updated clients to use new Scanner logging service. + +2003-10-22 Bogdan Gheorghe + + Added updateDependencies() to the IndexManager to request + a new UpdateDependency job. + +2003-10-01 Bogdan Gheorghe + - Modified BlockIndexOutput.addInclude to properly flush an + include block once it's full. + - Flushing the CDT log after every merge + - Logging I/O Exceptions in AddFileToIndex + - Changed valid source file extensions in SourceIndexer to + use CModelManager file extensions + +2003-09-30 Bogdan Gheorghe + Changed logging for SourceIndexer to log file in cdt.core + +2003-09-25 Bogdan Gheorghe + Integrated the dependency service into the indexer. Changes + as follows: + + org.eclipse.cdt.internal.core.index.impl: + * IIndex - added getFileDependencies methods + * IIndexerOutput - modified to allow dep inputs into the index + * BlocksIndexInput - modified to allow the reading of the new index (which includes dep entries) + * BlocksIndexOutput - added facilities to write includes to the index + * GammaCompressedIndexBlock - modified with addIncludeEntry() and nextEntry() + * IncludeEntry - new file + * IncludeEntryHashedArray - new file + * Index - Added getFileDepenendencies to query includeEntries from the index + * IndexBlock - modified to reflect changes in GammaCompressedIndexBlock + * IndexerOutput - added new methods from IIndexerOutput + * IndexInput - modified to allow reading of includes from index files + * IndexSummary - modified to save/read new format which contains include info + * InMemoryIndex - modified InMemoryIndex to keep track of includes + * MergeFactory - modified MergeFactory to accomodate new index file format + * SimpleIndexInput - modified to use the new functions for includes in InMemoryIndex + * Util - Added a quickSort for includeEntry[] + + org.eclipse.cdt.internal.core.search.indexing: + * AbstractIndexer - modified to getResourceFile being indexed, added bestIncludePrefix + to find include table entries, addInclude() which accepts IASTInclusion node and adds it + to the index + * IIndexConstants - added includeRef constant + * IndexManager - got rid of all dependency table references + * SourceIndexer - modified to return resource being indexed + * SourceIndexerRequestor - Added inclusion handling code; stack for includes + + +2003-09-22 Bogdan Gheorghe + + Took out the old CTags Indexer. Modified IndexAllProject to get + the project path straight from the resource (bypassing the CModelManager). + Commented out the enable section in IndexManager. + + Modified + * org.eclipse.cdt.internal.core.search.indexing.IndexAllProject + * org.eclipse.cdt.internal.core.search.indexing.IndexManager + + Deleted + * org.eclipse.cdt.core.index.IndexModel + * org.eclipse.cdt.core.index.ITagEntry + * org.eclipse.cdt.core.index.TagFlags + * org.eclipse.cdt.internal.core.index.CTagsCmd + * org.eclipse.cdt.internal.core.index.CTagsEntry + * org.eclipse.cdt.internal.core.index.CTagsFileReader + * org.eclipse.cdt.internal.core.index.CTagsFileWriter + * org.eclipse.cdt.internal.core.index.CTagsHeader + * org.eclipse.cdt.internal.core.index.CTagsRunner + * org.eclipse.cdt.internal.core.index.IndexManager + * org.eclipse.cdt.internal.core.index.RequestList + +2003-09-16 Andrew Niefer + - add parameter references to index + - modify CharOperation.match to allow escaping wildcards (bug43063) + - modify AbstractIndexer.bestPrefix to handle wildcard escaping in name (bug43063) + +2003-09-13 Andrew Niefer + - add Typedefs to index as Types with suffix T (bug42902) + - added addTypedefReference to AbstractIndexer + - modified bestTypePrefix in AbstractIndexer + - added TYPEDEF_DECL, TYPEDEF_SUFFIX to IIndexConstants + - modified acceptTypedefReference in SourceIndexerRequestor + +2003-09-09 Andrew Niefer + Enumerator references + - Added createEnumeratorFullyQualifiedName in AbstractIndexer + - Added addEnumeratorReference in AbstractIndexer + - implemented acceptEnumeratorReference in SourceIndexerRequestor + +2003-09-08 Andrew Niefer + - Modified calls to ParserFactory to specify which language to use + +2003-09-05 Andrew Niefer + - Modified how AbstractIndexer creates the fully qualified name for an enumerator (spec 7.2-10) + +2003-08-26 Bogdan Gheorghe + - Removed header file extensions from being indexed (they + will be indexed via inclusion) + +2003-08-20 Bogdan Gheorghe + - Added debug tracing in AbstractIndexer + - Added additional file extensions to supported indexed files + - Changed the parser instantiation to pass in retrieved build + info + - Added function decl index entry based on enterFunctionBody + - Added method decl index entry based on enterMethodBody + - Added forward decl refs + +2003-08-14 Bogdan Gheorghe + - Added forward declarations to index + +2003-08-12 Bogdan Gheorghe + - Changed var prefix in AbstractIndexer to pass in fully + qualified names + +2003-08-11 Bogdan Gheorghe + - Added macro declarations to the index + - Added macro prefix to AbstractIndexer + +2003-08-07 Bogdan Gheorghe + - Added shutdown cleanup routine in IndexManager + +2003-07-28 Andrew Niefer + - added support for '?' wildcards in AbstractIndexer.bestPrefix + +2003-07-25 Bogdan Gheorghe + - Changed parser to COMPLETE mode + - Added functionRef, methodRef, typeRef, namespaceRef, fieldRef + + Modified: + * index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java + * index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java + * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java + * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java + + +2003-07-24 Andrew Niefer + - added TYPE_ALL, FUNCTION_ALL, METHOD_ALL, NAMESPACE_ALL, FIELD_ALL constants to IIndexConstants + - modified AbstractIndexer prefix functions to properly handle searching for all occurences + +2003-07-23 Andrew Niefer + Modified + *index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java + -changed so that the index prefixes contain the qualified names of the + elements in reverse order. + -Added functions: + bestVariablePrefix + bestNamespacePrefix + bestFieldPrefix + bestFunctionPrefix + bestMethodPrefix + +2003-07-21 Bogdan Gheorghe + Added additional declarations to index: enums, enumerators, namespace, + functions, vars, methods, fields, typedefs. + + Fixed IndexManager to prevent individually added files from + being added to the index if indexing is not enabled for the project + + Modified: + + * index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java + * index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java + * index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java + * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java + +2003-07-10 Bogdan Gheorghe + Added bestTypeDeclarationPrefix to AbstractIndexer to allow the + search engine to create a query string for the index. + Changed encoding in AbstractIndexer to encode fully qualified names. + + * index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java + +2003-07-03 Bogdan Gheorghe + Updated copyright notices. + +2003-06-25 Bogdan Gheorghe + Added new Indexer framework: + + * index/org/eclipse/cdt/internal/core/index/IDocument.java + * index/org/eclipse/cdt/internal/core/index/IEntryResult.java + * index/org/eclipse/cdt/internal/core/index/IIndex.java + * index/org/eclipse/cdt/internal/core/index/IIndexer.java + * index/org/eclipse/cdt/internal/core/index/IIndexerOutput.java + * index/org/eclipse/cdt/internal/core/index/IQueryResult.java + + * index/org/eclipse/cdt/internal/core/index/impl/Block.java + * index/org/eclipse/cdt/internal/core/index/impl/BlocksIndexInput.java + * index/org/eclipse/cdt/internal/core/index/impl/BlocksIndexOutput.java + * index/org/eclipse/cdt/internal/core/index/impl/CodeByteStream.java + * index/org/eclipse/cdt/internal/core/index/impl/EntryResult.java + * index/org/eclipse/cdt/internal/core/index/impl/Field.java + * index/org/eclipse/cdt/internal/core/index/impl/GammaCompressedIndexBlock.java + * index/org/eclipse/cdt/internal/core/index/impl/IFileDocument.java + * index/org/eclipse/cdt/internal/core/index/impl/IIndexConstants.java + * index/org/eclipse/cdt/internal/core/index/impl/Index.java + * index/org/eclipse/cdt/internal/core/index/impl/IndexBlock.java + * index/org/eclipse/cdt/internal/core/index/impl/IndexedFile.java + * index/org/eclipse/cdt/internal/core/index/impl/IndexedFileHashedArray.java + * index/org/eclipse/cdt/internal/core/index/impl/IndexerOutput.java + * index/org/eclipse/cdt/internal/core/index/impl/IndexInput.java + * index/org/eclipse/cdt/internal/core/index/impl/IndexOutput.java + * index/org/eclipse/cdt/internal/core/index/impl/IndexSummary.java + * index/org/eclipse/cdt/internal/core/index/impl/InMemoryIndex.java + * index/org/eclipse/cdt/internal/core/index/impl/Int.java + * index/org/eclipse/cdt/internal/core/index/impl/MergeFactory.java + * index/org/eclipse/cdt/internal/core/index/impl/PropertyDocument.java + * index/org/eclipse/cdt/internal/core/index/impl/SafeRandomAccessFile.java + * index/org/eclipse/cdt/internal/core/index/impl/SimpleIndexInput.java + * index/org/eclipse/cdt/internal/core/index/impl/Util.java + * index/org/eclipse/cdt/internal/core/index/impl/WordEntry.java + * index/org/eclipse/cdt/internal/core/index/impl/WordEntryHashedArray.java + + * index/org/eclipse/cdt/internal/core/search/CharOperation.java + * index/org/eclipse/cdt/internal/core/search/HashtableOfInt.java + * index/org/eclipse/cdt/internal/core/search/SimpleLookupTable.java + * index/org/eclipse/cdt/internal/core/search/Util.java + * index/org/eclipse/cdt/internal/core/search/message.properties + + * index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java + * index/org/eclipse/cdt/internal/core/search/indexing/AddCompilationUnitToIndex.java + * index/org/eclipse/cdt/internal/core/search/indexing/AddFileToIndex.java + * index/org/eclipse/cdt/internal/core/search/indexing/AddFolderToIndex.java + * index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java + * index/org/eclipse/cdt/internal/core/search/indexing/IndexAllProject.java + * index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java + * index/org/eclipse/cdt/internal/core/search/indexing/IndexRequest.java + * index/org/eclipse/cdt/internal/core/search/indexing/ReadWriteMonitor.java + * index/org/eclipse/cdt/internal/core/search/indexing/RemoveFolderFromIndex.java + * index/org/eclipse/cdt/internal/core/search/indexing/RemoveFromIndex.java + * index/org/eclipse/cdt/internal/core/search/indexing/SaveIndex.java + * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java + * index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java + \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/impl/BlocksIndexInput.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/impl/BlocksIndexInput.java index 7cebcc52297..6e39a668c13 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/impl/BlocksIndexInput.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/impl/BlocksIndexInput.java @@ -30,6 +30,7 @@ public class BlocksIndexInput extends IndexInput { protected FileListBlock currentFileListBlock; protected int currentFileListBlockNum; protected int currentIndexBlockNum; + protected int currentIncludeBlockNum; protected IndexBlock currentIndexBlock; protected IndexBlock currentIncludeIndexBlock; private RandomAccessFile raf; @@ -408,7 +409,7 @@ public class BlocksIndexInput extends IndexInput { //if end of the current block, we load the next one. boolean endOfBlock= !currentIncludeIndexBlock.nextEntry(currentIncludeEntry); if (endOfBlock) { - currentIncludeIndexBlock= getIndexBlock(++currentIndexBlockNum); + currentIncludeIndexBlock= getIndexBlock(++currentIncludeBlockNum); currentIncludeIndexBlock.nextEntry(currentWordEntry); } } @@ -418,8 +419,8 @@ public class BlocksIndexInput extends IndexInput { protected void setFirstInclude() throws IOException { includePosition= 1; if (getNumIncludes() > 0) { - currentIndexBlockNum= summary.getFirstIncludeBlockNum(); - currentIncludeIndexBlock= getIndexBlock(currentIndexBlockNum); + currentIncludeBlockNum= summary.getFirstIncludeBlockNum(); + currentIncludeIndexBlock= getIndexBlock(currentIncludeBlockNum); currentIncludeEntry= new IncludeEntry(0); currentIncludeIndexBlock.reset(); currentIncludeIndexBlock.nextEntry(currentIncludeEntry); diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java index 75cada09a3c..895a5d8fa15 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexer.java @@ -97,7 +97,18 @@ public class SourceIndexer extends AbstractIndexer { { } - boolean retVal = parser.parse(); + ParserRunner p = new ParserRunner(parser); + Thread t = new Thread(p, "CDT Indexer Parser Runner"); + t.start(); + + try{ + t.join(); + } + catch (InterruptedException e){ + org.eclipse.cdt.internal.core.model.Util.log(null, "Parser Runner InterruptedException - file: " + resourceFile.getFullPath(), ICLogConstants.CDT); + } + + boolean retVal = p.getResult(); if (!retVal) org.eclipse.cdt.internal.core.model.Util.log(null, "Failed to index " + resourceFile.getFullPath(), ICLogConstants.CDT); @@ -120,4 +131,26 @@ public class SourceIndexer extends AbstractIndexer { public IFile getResourceFile() { return resourceFile; } + + class ParserRunner implements Runnable { + IParser parser; + boolean retVal; + ParserRunner(IParser parser){ + this.parser = parser; + } + /* (non-Javadoc) + * @see java.lang.Runnable#run() + */ + public void run() { + try{ + retVal=parser.parse(); + } + catch (Exception e){ + org.eclipse.cdt.internal.core.model.Util.log(null, "Parser Runner Exception " + resourceFile.getFullPath() + " Message: " + e.getMessage(), ICLogConstants.CDT); + } + } + + boolean getResult(){ return retVal;} + + } }