diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/FunctionEntry.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/FunctionEntry.java index f863f649ec6..a6737b49fd7 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/FunctionEntry.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/FunctionEntry.java @@ -40,4 +40,12 @@ public class FunctionEntry extends NamedEntry implements IFunctionEntry { output.addIndexEntry(this); } + /* BugZilla ID#124618 */ + public void setFunctionEntry(int meta_kind, int entry_type, char[][] fullName, int modifiers, int fileNumber) { + setNamedEntry(meta_kind, entry_type, fullName, modifiers, fileNumber); + // since we reuse FunctionEntry instance, + // the following vars should be cleared. + this.signature = null; + this.returnString = null; + } } diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/NamedEntry.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/NamedEntry.java index e52352d444c..e647f7e375a 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/NamedEntry.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/NamedEntry.java @@ -39,4 +39,11 @@ public class NamedEntry extends CIndexStorageEntry implements INamedEntry { output.addIndexEntry(this); } + /* BugZilla ID#124618 */ + public void setNamedEntry(int meta_kind, int entry_type, char[][] fullName, int modifiers, int fileNumber) { + this.entry_type = entry_type; + this.fileNumber = fileNumber; + this.fullName = fullName; + this.modifiers = modifiers; + } } diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/TypeEntry.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/TypeEntry.java index e5fe8ddc2ec..047692a6b81 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/TypeEntry.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/TypeEntry.java @@ -47,4 +47,16 @@ public class TypeEntry extends NamedEntry implements ITypeEntry { this.friends = friends; } + /* BugZilla ID#124618 */ + public void setTypeEntry(int type_kind, int entry_type, char[][] fullName, int modifiers, int fileNumber) { + this.entry_type = entry_type; + this.fileNumber = fileNumber; + this.fullName = fullName; + this.modifiers = modifiers; + this.type_kind = type_kind; + // since we reuse TypeEntry instance, + // the following vars should be cleared. + this.baseTypes = null; + this.friends = null; + } } diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CGenerateIndexVisitor.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CGenerateIndexVisitor.java index 72e6f217375..635780c14f0 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CGenerateIndexVisitor.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CGenerateIndexVisitor.java @@ -37,7 +37,12 @@ import org.eclipse.cdt.internal.core.index.TypeEntry; import org.eclipse.cdt.internal.core.model.Util; public class CGenerateIndexVisitor extends CASTVisitor { - private DOMSourceIndexerRunner indexer; + private DOMSourceIndexerRunner indexer; + + private FunctionEntry commonFunctionEntry; + private TypeEntry commonTypeEntry; + private NamedEntry commonNamedEntry; + { shouldVisitNames = true; shouldVisitDeclarations = true; @@ -58,6 +63,16 @@ public class CGenerateIndexVisitor extends CASTVisitor { public CGenerateIndexVisitor(DOMSourceIndexerRunner indexer) { super(); this.indexer = indexer; + // reuse of XXXEntry object allows to reduce memory consumption + char[][] dummy = new char[][] { null }; + commonFunctionEntry = new FunctionEntry(IIndex.FUNCTION, 0, dummy, 0, 0); + commonTypeEntry = new TypeEntry (0, 0, dummy, 0, 0); + commonNamedEntry = new NamedEntry(0, 0, dummy, 0, 0); + } + + /* BugZilla ID#124618 */ + public void setCGenerateIndexVisitor(DOMSourceIndexerRunner indexer) { + this.indexer = indexer; } /* (non-Javadoc) @@ -187,10 +202,10 @@ public class CGenerateIndexVisitor extends CASTVisitor { } // guard against cpp entities in c project if (iEntryType != 0) { - TypeEntry indexEntry = new TypeEntry(iEntryType, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonTypeEntry.setTypeEntry(iEntryType, entryKind, qualifiedName, modifiers, fileNumber); + commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - indexEntry.serialize(indexer.getOutput()); + commonTypeEntry.serialize(indexer.getOutput()); } } else if (binding instanceof IEnumeration){ @@ -198,32 +213,32 @@ public class CGenerateIndexVisitor extends CASTVisitor { if (entryKind != IIndex.REFERENCE) { modifiers = IndexVisitorUtil.getModifiers(name, binding); } - TypeEntry indexEntry = new TypeEntry(IIndex.TYPE_ENUM, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonTypeEntry.setTypeEntry(IIndex.TYPE_ENUM, entryKind, qualifiedName, modifiers, fileNumber); + commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - indexEntry.serialize(indexer.getOutput()); + commonTypeEntry.serialize(indexer.getOutput()); } else if (binding instanceof ITypedef) { - TypeEntry indexEntry = new TypeEntry(IIndex.TYPE_TYPEDEF, entryKind, qualifiedName, 0, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonTypeEntry.setTypeEntry(IIndex.TYPE_TYPEDEF, entryKind, qualifiedName, 0, fileNumber); + commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - indexEntry.serialize(indexer.getOutput()); + commonTypeEntry.serialize(indexer.getOutput()); } else if (binding instanceof IEnumerator) { - NamedEntry indexEntry = new NamedEntry(IIndex.ENUMTOR, entryKind, qualifiedName, 0, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonNamedEntry.setNamedEntry(IIndex.ENUMTOR, entryKind, qualifiedName, 0, fileNumber); + commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - indexEntry.serialize(indexer.getOutput()); + commonNamedEntry.serialize(indexer.getOutput()); } else if (binding instanceof IField) { int modifiers = 0; if (entryKind != IIndex.REFERENCE) { modifiers = IndexVisitorUtil.getModifiers(name, binding); } - NamedEntry indexEntry = new NamedEntry(IIndex.FIELD, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonNamedEntry.setNamedEntry(IIndex.FIELD, entryKind, qualifiedName, modifiers, fileNumber); + commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - indexEntry.serialize(indexer.getOutput()); + commonNamedEntry.serialize(indexer.getOutput()); } else if (binding instanceof IVariable && !(binding instanceof IParameter)) { @@ -234,10 +249,10 @@ public class CGenerateIndexVisitor extends CASTVisitor { if (entryKind != IIndex.REFERENCE) { modifiers = IndexVisitorUtil.getModifiers(name, binding); } - NamedEntry indexEntry = new NamedEntry(IIndex.VAR, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonNamedEntry.setNamedEntry(IIndex.VAR, entryKind, qualifiedName, modifiers, fileNumber); + commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - indexEntry.serialize(indexer.getOutput()); + commonNamedEntry.serialize(indexer.getOutput()); } } else if (binding instanceof IFunction) { @@ -245,12 +260,12 @@ public class CGenerateIndexVisitor extends CASTVisitor { if (entryKind != IIndex.REFERENCE) { modifiers = IndexVisitorUtil.getModifiers(name, binding); } - FunctionEntry indexEntry = new FunctionEntry(IIndex.FUNCTION, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - indexEntry.setSignature(IndexVisitorUtil.getParameters((IFunction) binding)); - indexEntry.setReturnType(IndexVisitorUtil.getReturnType((IFunction) binding)); + commonFunctionEntry.setFunctionEntry(IIndex.FUNCTION, entryKind, qualifiedName, modifiers, fileNumber); + commonFunctionEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonFunctionEntry.setSignature(IndexVisitorUtil.getParameters((IFunction) binding)); + commonFunctionEntry.setReturnType(IndexVisitorUtil.getReturnType((IFunction) binding)); - indexEntry.serialize(indexer.getOutput()); + commonFunctionEntry.serialize(indexer.getOutput()); } } diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CPPGenerateIndexVisitor.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CPPGenerateIndexVisitor.java index 243577cf260..57a423920f1 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CPPGenerateIndexVisitor.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CPPGenerateIndexVisitor.java @@ -59,6 +59,9 @@ import org.eclipse.cdt.internal.core.model.Util; public class CPPGenerateIndexVisitor extends CPPASTVisitor { private DOMSourceIndexerRunner indexer; + private FunctionEntry commonFunctionEntry; + private TypeEntry commonTypeEntry; + private NamedEntry commonNamedEntry; { shouldVisitNames = true; shouldVisitDeclarations = true; @@ -81,8 +84,19 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor { public CPPGenerateIndexVisitor(DOMSourceIndexerRunner indexer) { super(); this.indexer = indexer; + // reuse of XXXEntry object allows to reduce memory consumption + char[][] dummy = new char[0][0]; + commonFunctionEntry = new FunctionEntry(IIndex.FUNCTION, 0, dummy, 0, 0); + commonTypeEntry = new TypeEntry (0, 0, dummy, 0, 0); + commonNamedEntry = new NamedEntry(0, 0, dummy, 0, 0); } + /* BugZilla ID#124618 */ + public void setCPPGenerateIndexVisitor(DOMSourceIndexerRunner indexer) { + this.indexer = indexer; + } + + /* (non-Javadoc) * @see org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor#visit(org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition) */ @@ -228,52 +242,52 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor { if (entryKind != IIndex.REFERENCE) { modifiers = IndexVisitorUtil.getModifiers(name, binding); } - TypeEntry indexEntry = new TypeEntry(iEntryType, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonTypeEntry.setTypeEntry(iEntryType, entryKind, qualifiedName, modifiers, fileNumber); + commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); if (entryKind == IIndex.DEFINITION && binding instanceof ICPPClassType) { - addDerivedDeclarations(name, (ICPPClassType)binding, indexEntry, fileNumber); - addFriendDeclarations(name, (ICPPClassType)binding, indexEntry, fileNumber); + addDerivedDeclarations(name, (ICPPClassType)binding, commonTypeEntry, fileNumber); + addFriendDeclarations(name, (ICPPClassType)binding, commonTypeEntry, fileNumber); } - serialize(indexEntry); + serialize(commonTypeEntry); } else if (binding instanceof IEnumeration) { int modifiers = 0; if (entryKind != IIndex.REFERENCE) { modifiers = IndexVisitorUtil.getModifiers(name, binding); } - TypeEntry indexEntry = new TypeEntry(IIndex.TYPE_ENUM, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonTypeEntry.setTypeEntry(IIndex.TYPE_ENUM, entryKind, qualifiedName, modifiers, fileNumber); + commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - serialize(indexEntry); + serialize(commonTypeEntry); } else if (binding instanceof ITypedef) { - TypeEntry indexEntry = new TypeEntry(IIndex.TYPE_TYPEDEF, entryKind, qualifiedName, 0, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonTypeEntry.setTypeEntry(IIndex.TYPE_TYPEDEF, entryKind, qualifiedName, 0, fileNumber); + commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - serialize(indexEntry); + serialize(commonTypeEntry); } else if (binding instanceof ICPPNamespace) { - NamedEntry indexEntry = new NamedEntry(IIndex.NAMESPACE, entryKind, qualifiedName, 0, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonNamedEntry.setNamedEntry(IIndex.NAMESPACE, entryKind, qualifiedName, 0, fileNumber); + commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - serialize(indexEntry); + serialize(commonNamedEntry); } else if (binding instanceof IEnumerator) { - NamedEntry indexEntry = new NamedEntry(IIndex.ENUMTOR, entryKind, qualifiedName, 0, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonNamedEntry.setNamedEntry(IIndex.ENUMTOR, entryKind, qualifiedName, 0, fileNumber); + commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - serialize(indexEntry); + serialize(commonNamedEntry); } else if (binding instanceof IField) { int modifiers = 0; if (entryKind != IIndex.REFERENCE) { modifiers = IndexVisitorUtil.getModifiers(name, binding); } - NamedEntry indexEntry = new NamedEntry(IIndex.FIELD, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonNamedEntry.setNamedEntry(IIndex.FIELD, entryKind, qualifiedName, modifiers, fileNumber); + commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - serialize(indexEntry); + serialize(commonNamedEntry); } else if (binding instanceof IVariable && !(binding instanceof IParameter)) { @@ -284,10 +298,10 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor { if (entryKind != IIndex.REFERENCE) { modifiers = IndexVisitorUtil.getModifiers(name, binding); } - NamedEntry indexEntry = new NamedEntry(IIndex.VAR, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonNamedEntry.setNamedEntry(IIndex.VAR, entryKind, qualifiedName, modifiers, fileNumber); + commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - serialize(indexEntry); + serialize(commonNamedEntry); } } else if (binding instanceof ICPPMethod) { @@ -295,12 +309,12 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor { if (entryKind != IIndex.REFERENCE) { modifiers = IndexVisitorUtil.getModifiers(name, binding); } - FunctionEntry indexEntry = new FunctionEntry(IIndex.METHOD, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - indexEntry.setSignature(IndexVisitorUtil.getParameters((ICPPMethod) binding)); - indexEntry.setReturnType(IndexVisitorUtil.getReturnType((ICPPMethod) binding)); + commonFunctionEntry.setFunctionEntry(IIndex.METHOD, entryKind, qualifiedName, modifiers, fileNumber); + commonFunctionEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonFunctionEntry.setSignature(IndexVisitorUtil.getParameters((ICPPMethod) binding)); + commonFunctionEntry.setReturnType(IndexVisitorUtil.getReturnType((ICPPMethod) binding)); - serialize(indexEntry); + serialize(commonFunctionEntry); // TODO In case we want to add friend method declarations to index // if (isFriendDeclaration(name, binding)) { // entryType = IndexerOutputWrapper.FRIEND; @@ -311,12 +325,12 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor { if (entryKind != IIndex.REFERENCE) { modifiers = IndexVisitorUtil.getModifiers(name, binding); } - FunctionEntry indexEntry = new FunctionEntry(IIndex.FUNCTION, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - indexEntry.setSignature(IndexVisitorUtil.getParameters((IFunction) binding)); - indexEntry.setReturnType(IndexVisitorUtil.getReturnType((IFunction) binding)); + commonFunctionEntry.setFunctionEntry(IIndex.FUNCTION, entryKind, qualifiedName, modifiers, fileNumber); + commonFunctionEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + commonFunctionEntry.setSignature(IndexVisitorUtil.getParameters((IFunction) binding)); + commonFunctionEntry.setReturnType(IndexVisitorUtil.getReturnType((IFunction) binding)); - serialize(indexEntry); + serialize(commonFunctionEntry); // TODO In case we want to add friend function declarations to index // if (isFriendDeclaration(name, binding)) { // entryType = IndexerOutputWrapper.FRIEND; diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java index 17ecad0e3dc..93a0fe93090 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java @@ -59,7 +59,11 @@ import org.eclipse.core.runtime.Path; public class DOMSourceIndexerRunner extends AbstractIndexerRunner { private DOMSourceIndexer indexer; - + // Bug 124618: reuse NamedEntry & Visitor instances to reduce memory consumption + private NamedEntry commonNamedEntry; + static CGenerateIndexVisitor visitorC = null; + static CPPGenerateIndexVisitor visitorCPP = null; + // for running JUnit tests private static boolean skipScannerInfoTest=false; @@ -73,6 +77,7 @@ public class DOMSourceIndexerRunner extends AbstractIndexerRunner { public DOMSourceIndexerRunner(IFile resource, DOMSourceIndexer indexer) { this.resourceFile = resource; this.indexer = indexer; + commonNamedEntry = new NamedEntry(0, 0, new char[][] { null }, 0, 0); } /** @@ -118,18 +123,26 @@ public class DOMSourceIndexerRunner extends AbstractIndexerRunner { if (AbstractIndexerRunner.TIMING) parseTime = System.currentTimeMillis(); - + // first clear all problem markers on non-external include files clearProblemMarkers(tu.getIncludeDirectives()); ASTVisitor visitor = null; //C or CPP? if (tu.getParserLanguage() == ParserLanguage.CPP) { - visitor = new CPPGenerateIndexVisitor(this); + if (visitorCPP == null) + visitorCPP = new CPPGenerateIndexVisitor(this); + else + visitorCPP.setCPPGenerateIndexVisitor(this); + visitor = visitorCPP; } else { - visitor = new CGenerateIndexVisitor(this); + if (visitorC == null) + visitorC = new CGenerateIndexVisitor(this); + else + visitorC.setCGenerateIndexVisitor(this); + visitor = visitorC; } - + tu.accept(visitor); processMacroDefinitions(tu.getMacroDefinitions()); @@ -284,9 +297,9 @@ public class DOMSourceIndexerRunner extends AbstractIndexerRunner { getOutput().addRelatives(fileNumber, include, (parent != null) ? parent.getIncludeDirective().getPath() : null); - NamedEntry namedEntry = new NamedEntry(IIndex.INCLUDE, IIndex.REFERENCE, new char[][] {include.toCharArray()}, 0, fileNumber); - namedEntry.setNameOffset(1, 1, IIndex.OFFSET); - namedEntry.serialize(getOutput()); + commonNamedEntry.setNamedEntry(IIndex.INCLUDE, IIndex.REFERENCE, new char[][] {include.toCharArray()}, 0, fileNumber); + commonNamedEntry.setNameOffset(1, 1, IIndex.OFFSET); + commonNamedEntry.serialize(getOutput()); /* See if this file has been encountered before */ indexer.haveEncounteredHeader(resourceFile.getProject().getFullPath(), new Path(include), true); @@ -310,9 +323,9 @@ public class DOMSourceIndexerRunner extends AbstractIndexerRunner { IASTFileLocation loc = IndexEncoderUtil.getFileLocation(macro); int fileNumber = IndexEncoderUtil.calculateIndexFlags(this, loc); - NamedEntry namedEntry = new NamedEntry(IIndex.MACRO, IIndex.DECLARATION, new char[][] {macro.toCharArray()}, 0, fileNumber); - namedEntry.setNameOffset(loc.getNodeOffset(), loc.getNodeLength(), IIndex.OFFSET); - namedEntry.serialize(getOutput()); + commonNamedEntry.setNamedEntry(IIndex.MACRO, IIndex.DECLARATION, new char[][] {macro.toCharArray()}, 0, fileNumber); + commonNamedEntry.setNameOffset(loc.getNodeOffset(), loc.getNodeLength(), IIndex.OFFSET); + commonNamedEntry.serialize(getOutput()); } }