1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-01 06:05:24 +02:00

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.
This commit is contained in:
John Camelon 2004-02-10 18:17:42 +00:00
parent da13b999cd
commit a69ae2ccf2
3 changed files with 304 additions and 256 deletions

View file

@ -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

View file

@ -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);

View file

@ -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;}
}
}