From 35cae0899d9d04f8b67869f2aeec084748018c7b Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Fri, 29 Jul 2011 16:47:02 -0700 Subject: [PATCH] Optimized adaptBinding method for bindings whose owners that are composite bindings. --- .../cdt/internal/core/pdom/dom/PDOMLinkage.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java index 33d71c804e5..16e67f87efc 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java @@ -55,7 +55,6 @@ import org.eclipse.core.runtime.IProgressMonitor; * link time. These are generally global symbols specific to a given language. */ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage, IIndexBindingConstants { - // record offsets private static final int ID_OFFSET = PDOMNamedNode.RECORD_SIZE + 0; private static final int NEXT_OFFSET = PDOMNamedNode.RECORD_SIZE + 4; @@ -210,16 +209,16 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IIndexLinkage } protected final PDOMBinding attemptFastAdaptBinding(final IBinding binding) throws CoreException { - if (binding instanceof PDOMBinding) { - // there is no guarantee, that the binding is from the same PDOM object. - PDOMBinding pdomBinding = (PDOMBinding) binding; - if (pdomBinding.getPDOM() == getPDOM()) { - return pdomBinding; - } + PDOMBinding pdomBinding= (PDOMBinding) binding.getAdapter(PDOMBinding.class); + // There is no guarantee, that the binding is from the same PDOM object. + if (pdomBinding != null && pdomBinding.getPDOM() == getPDOM()) { + return pdomBinding; } return (PDOMBinding) fPDOM.getCachedResult(binding); } + public abstract PDOMBinding adaptBinding(IBinding binding) throws CoreException; + public abstract PDOMBinding addBinding(IASTName name) throws CoreException; final protected long getLocalToFileRec(PDOMNode parent, IBinding binding, PDOMBinding glob) throws CoreException {