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