From fac58cefa1e23b4ac3e4ce525b1ffbaff1756ac0 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Thu, 3 May 2012 20:05:12 -0700 Subject: [PATCH 1/2] Cosmetics. --- .../eclipse/cdt/internal/core/pdom/IPDOM.java | 3 +- .../cdt/internal/core/pdom/db/Chunk.java | 131 +++++++++--------- .../cdt/internal/core/pdom/db/ChunkCache.java | 20 ++- .../cdt/internal/core/pdom/db/Database.java | 71 ++++------ .../core/pdom/db/IBTreeComparator.java | 5 +- .../internal/core/pdom/dom/PDOMInclude.java | 4 +- 6 files changed, 105 insertions(+), 129 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/IPDOM.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/IPDOM.java index 57e668b3735..26e417acd8c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/IPDOM.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/IPDOM.java @@ -6,7 +6,7 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * Markus Schorn - initial API and implementation + * Markus Schorn - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom; @@ -23,5 +23,4 @@ public interface IPDOM extends IIndexFragment { void addListener(PDOM.IListener listener); void removeListener(PDOM.IListener indexView); - } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Chunk.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Chunk.java index a7402792bfd..d4342da6751 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Chunk.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/Chunk.java @@ -6,9 +6,9 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * QNX - Initial API and implementation - * Markus Schorn (Wind River Systems) - * IBM Corporation + * QNX - Initial API and implementation + * Markus Schorn (Wind River Systems) + * IBM Corporation *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom.db; @@ -26,9 +26,9 @@ final class Chunk { final Database fDatabase; final int fSequenceNumber; - boolean fCacheHitFlag= false; - boolean fDirty= false; - boolean fLocked= false; // locked chunks must not be released from cache. + boolean fCacheHitFlag; + boolean fDirty; + boolean fLocked; // locked chunks must not be released from cache. int fCacheIndex= -1; Chunk(Database db, int sequenceNumber) { @@ -39,7 +39,7 @@ final class Chunk { void read() throws CoreException { try { final ByteBuffer buf= ByteBuffer.wrap(fBuffer); - fDatabase.read(buf, (long)fSequenceNumber*Database.CHUNK_SIZE); + fDatabase.read(buf, (long) fSequenceNumber*Database.CHUNK_SIZE); } catch (IOException e) { throw new CoreException(new DBStatus(e)); } @@ -48,52 +48,52 @@ final class Chunk { void flush() throws CoreException { try { final ByteBuffer buf= ByteBuffer.wrap(fBuffer); - fDatabase.write(buf, (long)fSequenceNumber*Database.CHUNK_SIZE); + fDatabase.write(buf, (long) fSequenceNumber*Database.CHUNK_SIZE); } catch (IOException e) { throw new CoreException(new DBStatus(e)); } fDirty= false; } - private static int recPtrToIndex( final long offset ) { - return (int)(offset & Database.OFFSET_IN_CHUNK_MASK ); + + private static int recPtrToIndex(final long offset) { + return (int) (offset & Database.OFFSET_IN_CHUNK_MASK); } public void putByte(final long offset, final byte value) { assert fLocked; fDirty= true; - fBuffer[recPtrToIndex( offset )]= value; + fBuffer[recPtrToIndex(offset)]= value; } public byte getByte(final long offset) { - return fBuffer[recPtrToIndex( offset )]; + return fBuffer[recPtrToIndex(offset)]; } public byte[] getBytes(final long offset, final int length) { final byte[] bytes = new byte[length]; - System.arraycopy(fBuffer, recPtrToIndex( offset ), bytes, 0, length); + System.arraycopy(fBuffer, recPtrToIndex(offset), bytes, 0, length); return bytes; } public void putBytes(final long offset, final byte[] bytes) { assert fLocked; fDirty= true; - System.arraycopy(bytes, 0, fBuffer, recPtrToIndex( offset ), bytes.length); + System.arraycopy(bytes, 0, fBuffer, recPtrToIndex(offset), bytes.length); } public void putInt(final long offset, final int value) { assert fLocked; fDirty= true; - int idx= recPtrToIndex( offset ); + int idx= recPtrToIndex(offset); putInt(value, fBuffer, idx); } static final void putInt(final int value, final byte[] buffer, int idx) { - buffer[idx]= (byte)(value >> 24); - buffer[++idx]= (byte)(value >> 16); - buffer[++idx]= (byte)(value >> 8); - buffer[++idx]= (byte)(value); + buffer[idx]= (byte) (value >> 24); + buffer[++idx]= (byte) (value >> 16); + buffer[++idx]= (byte) (value >> 8); + buffer[++idx]= (byte) (value); } - public int getInt(final long offset) { return getInt(fBuffer, recPtrToIndex(offset)); @@ -106,7 +106,6 @@ final class Chunk { ((buffer[++idx] & 0xff) << 0); } - /** * A free Record Pointer is a pointer to a raw block, i.e. the * pointer is not moved past the BLOCK_HEADER_SIZE. @@ -119,8 +118,8 @@ final class Chunk { } /** - * A free Record Pointer is a pointer to a raw block, i.e. the - * pointer is not moved past the BLOCK_HEADER_SIZE. + * A free Record Pointer is a pointer to a raw block, + * i.e. the pointer is not moved past the BLOCK_HEADER_SIZE. */ private static long expandToFreeRecPtr(int value) { /* @@ -134,7 +133,6 @@ final class Chunk { return address << Database.BLOCK_SIZE_DELTA_BITS; } - /** * A Record Pointer is a pointer as returned by Database.malloc(). * This is a pointer to a block + BLOCK_HEADER_SIZE. @@ -164,11 +162,10 @@ final class Chunk { int idx = recPtrToIndex(offset); putRecPtr(value, fBuffer, idx); } - /** - * A free Record Pointer is a pointer to a raw block, i.e. the - * pointer is not moved past the BLOCK_HEADER_SIZE. + * A free Record Pointer is a pointer to a raw block, + * i.e. the pointer is not moved past the BLOCK_HEADER_SIZE. */ public void putFreeRecPtr(final long offset, final long value) { assert fLocked; @@ -191,14 +188,14 @@ final class Chunk { public void put3ByteUnsignedInt(final long offset, final int value) { assert fLocked; fDirty= true; - int idx= recPtrToIndex( offset ); - fBuffer[idx]= (byte)(value >> 16); - fBuffer[++idx]= (byte)(value >> 8); - fBuffer[++idx]= (byte)(value); + int idx= recPtrToIndex(offset); + fBuffer[idx]= (byte) (value >> 16); + fBuffer[++idx]= (byte) (value >> 8); + fBuffer[++idx]= (byte) (value); } public int get3ByteUnsignedInt(final long offset) { - int idx= recPtrToIndex( offset ); + int idx= recPtrToIndex(offset); return ((fBuffer[idx] & 0xff) << 16) | ((fBuffer[++idx] & 0xff) << 8) | ((fBuffer[++idx] & 0xff) << 0); @@ -207,60 +204,60 @@ final class Chunk { public void putShort(final long offset, final short value) { assert fLocked; fDirty= true; - int idx= recPtrToIndex( offset ); - fBuffer[idx]= (byte)(value >> 8); - fBuffer[++idx]= (byte)(value); + int idx= recPtrToIndex(offset); + fBuffer[idx]= (byte) (value >> 8); + fBuffer[++idx]= (byte) (value); } public short getShort(final long offset) { - int idx= recPtrToIndex( offset ); + int idx= recPtrToIndex(offset); return (short) (((fBuffer[idx] << 8) | (fBuffer[++idx] & 0xff))); } public long getLong(final long offset) { - int idx= recPtrToIndex( offset ); - return ((((long)fBuffer[idx] & 0xff) << 56) | - (((long)fBuffer[++idx] & 0xff) << 48) | - (((long)fBuffer[++idx] & 0xff) << 40) | - (((long)fBuffer[++idx] & 0xff) << 32) | - (((long)fBuffer[++idx] & 0xff) << 24) | - (((long)fBuffer[++idx] & 0xff) << 16) | - (((long)fBuffer[++idx] & 0xff) << 8) | - (((long)fBuffer[++idx] & 0xff) << 0)); + int idx= recPtrToIndex(offset); + return ((((long) fBuffer[idx] & 0xff) << 56) | + (((long) fBuffer[++idx] & 0xff) << 48) | + (((long) fBuffer[++idx] & 0xff) << 40) | + (((long) fBuffer[++idx] & 0xff) << 32) | + (((long) fBuffer[++idx] & 0xff) << 24) | + (((long) fBuffer[++idx] & 0xff) << 16) | + (((long) fBuffer[++idx] & 0xff) << 8) | + (((long) fBuffer[++idx] & 0xff) << 0)); } public void putLong(final long offset, final long value) { assert fLocked; fDirty= true; - int idx= recPtrToIndex( offset ); + int idx= recPtrToIndex(offset); - fBuffer[idx]= (byte)(value >> 56); - fBuffer[++idx]= (byte)(value >> 48); - fBuffer[++idx]= (byte)(value >> 40); - fBuffer[++idx]= (byte)(value >> 32); - fBuffer[++idx]= (byte)(value >> 24); - fBuffer[++idx]= (byte)(value >> 16); - fBuffer[++idx]= (byte)(value >> 8); - fBuffer[++idx]= (byte)(value); + fBuffer[idx]= (byte) (value >> 56); + fBuffer[++idx]= (byte) (value >> 48); + fBuffer[++idx]= (byte) (value >> 40); + fBuffer[++idx]= (byte) (value >> 32); + fBuffer[++idx]= (byte) (value >> 24); + fBuffer[++idx]= (byte) (value >> 16); + fBuffer[++idx]= (byte) (value >> 8); + fBuffer[++idx]= (byte) (value); } public void putChar(final long offset, final char value) { assert fLocked; fDirty= true; - int idx= recPtrToIndex( offset ); - fBuffer[idx]= (byte)(value >> 8); - fBuffer[++idx]= (byte)(value); + int idx= recPtrToIndex(offset); + fBuffer[idx]= (byte) (value >> 8); + fBuffer[++idx]= (byte) (value); } public void putChars(final long offset, char[] chars, int start, int len) { assert fLocked; fDirty= true; int idx= recPtrToIndex(offset)-1; - final int end= start+len; + final int end= start + len; for (int i = start; i < end; i++) { char value= chars[i]; - fBuffer[++idx]= (byte)(value >> 8); - fBuffer[++idx]= (byte)(value); + fBuffer[++idx]= (byte) (value >> 8); + fBuffer[++idx]= (byte) (value); } } @@ -268,28 +265,28 @@ final class Chunk { assert fLocked; fDirty= true; int idx= recPtrToIndex(offset)-1; - final int end= start+len; + final int end= start + len; for (int i = start; i < end; i++) { char value= chars[i]; - fBuffer[++idx]= (byte)(value); + fBuffer[++idx]= (byte) (value); } } public char getChar(final long offset) { - int idx= recPtrToIndex( offset ); + int idx= recPtrToIndex(offset); return (char) (((fBuffer[idx] << 8) | (fBuffer[++idx] & 0xff))); } public void getChars(final long offset, final char[] result, int start, int len) { final ByteBuffer buf= ByteBuffer.wrap(fBuffer); - buf.position(recPtrToIndex( offset )); + buf.position(recPtrToIndex(offset)); buf.asCharBuffer().get(result, start, len); } public void getCharsFromBytes(final long offset, final char[] result, int start, int len) { final int pos = recPtrToIndex(offset); for (int i = 0; i < len; i++) { - result[start+i] = (char) (fBuffer[pos+i] & 0xff); + result[start + i] = (char) (fBuffer[pos + i] & 0xff); } } @@ -307,8 +304,8 @@ final class Chunk { assert fLocked; fDirty= true; int idx = recPtrToIndex(offset); - int i=0; - while (i ShortString.MAX_BYTE_LENGTH) + if (bytelen > ShortString.MAX_BYTE_LENGTH) { return new LongString(this, chars, useBytes); - else + } else { return new ShortString(this, chars, useBytes); + } } private boolean useBytes(char[] chars) { @@ -557,11 +551,9 @@ public class Database { return true; } - - public IString getString(long offset) throws CoreException { final int l = getInt(offset); - int bytelen= l<0 ? -l : 2*l; + int bytelen= l < 0 ? -l : 2 * l; if (bytelen > ShortString.MAX_BYTE_LENGTH) { return new LongString(this, offset); } @@ -661,24 +653,20 @@ public class Database { // locked chunk that has been removed from cache. if (chunk.fDirty) { dirtyChunks.add(chunk); // keep in fChunks until it is flushed. - } - else { + } else { chunk.fLocked= false; fChunks[i]= null; } - } - else if (chunk.fLocked) { + } else if (chunk.fLocked) { // locked chunk, still in cache. if (chunk.fDirty) { if (flush) { dirtyChunks.add(chunk); } - } - else { + } else { chunk.fLocked= false; } - } - else { + } else { assert !chunk.fDirty; // dirty chunks must be locked. } } @@ -698,8 +686,7 @@ public class Database { if (fExclusiveLock) { try { giveUpExclusiveLock(true); - } - finally { + } finally { setExclusiveLock(); } return; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IBTreeComparator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IBTreeComparator.java index 530b8d11c24..e1a7d24fb7a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IBTreeComparator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/db/IBTreeComparator.java @@ -6,7 +6,7 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * QNX - Initial API and implementation + * QNX - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom.db; @@ -14,13 +14,10 @@ import org.eclipse.core.runtime.CoreException; /** * @author Doug Schaefer - * */ public interface IBTreeComparator { - /** * Compare two records. Used for insert. */ public abstract int compare(long record1, long record2) throws CoreException; - } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMInclude.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMInclude.java index c95429ef55a..c5c086d5257 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMInclude.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMInclude.java @@ -53,8 +53,8 @@ public class PDOMInclude implements IIndexFragmentInclude { // Cached fields private String fName; - public PDOMInclude(PDOMLinkage pdom, long record) { - this.linkage = pdom; + public PDOMInclude(PDOMLinkage linkage, long record) { + this.linkage = linkage; this.record = record; } From 77442617cc7d23302e446a227726b4b0e42f8e81 Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Mon, 7 May 2012 01:04:30 -0400 Subject: [PATCH 2/2] bug 378589: [sd90] Scanner Discovery doesn't run on certain toolchains --- .../internal/core/InputType.java | 29 ++++++++--------- .../internal/core/ToolChain.java | 31 ++++++++++--------- .../ConfigurationDataProvider.java | 4 +-- .../plugin.xml | 21 +++++++------ 4 files changed, 45 insertions(+), 40 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/InputType.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/InputType.java index 63953098db2..8de96d8bffc 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/InputType.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/InputType.java @@ -1842,25 +1842,25 @@ public class InputType extends BuildObject implements IInputType { } /** - * Check if legacy scanner discovery method should be used. + * Check if legacy scanner discovery profiles should be used. */ - private boolean isLegacyScannerDiscovery() { - boolean isLanguageSettingsProvidersEnabled = false; + private boolean useLegacyScannerDiscoveryProfiles() { + boolean useLegacy = true; ITool tool = getParent(); - if (tool!=null) { - IBuildObject bo = tool.getParent(); - if (bo instanceof IToolChain) { - IConfiguration cfg = ((IToolChain) bo).getParent(); - if (cfg!=null) { + if (tool != null) { + IBuildObject toolchain = tool.getParent(); + if (toolchain instanceof IToolChain && ((IToolChain) toolchain).getDefaultLanguageSettingsProviderIds() != null) { + IConfiguration cfg = ((IToolChain) toolchain).getParent(); + if (cfg != null && cfg.getDefaultLanguageSettingsProviderIds() != null) { IResource rc = cfg.getOwner(); - if (rc!=null) { + if (rc != null) { IProject project = rc.getProject(); - isLanguageSettingsProvidersEnabled = ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project); + useLegacy = !ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project); } } } } - return !isLanguageSettingsProvidersEnabled; + return useLegacy; } /** @@ -1879,11 +1879,12 @@ public class InputType extends BuildObject implements IInputType { } public String getDiscoveryProfileIdAttribute() { - if (isLegacyScannerDiscovery()) { - return getLegacyDiscoveryProfileIdAttribute(); + String discoveryProfileAttribute = getDiscoveryProfileIdAttributeInternal(); + if (discoveryProfileAttribute == null && useLegacyScannerDiscoveryProfiles()) { + discoveryProfileAttribute = getLegacyDiscoveryProfileIdAttribute(); } - return getDiscoveryProfileIdAttributeInternal(); + return discoveryProfileAttribute; } /** diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java index 30f027a94c5..f19fed3634b 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java @@ -89,7 +89,7 @@ public class ToolChain extends HoldsOptions implements IToolChain, IMatchKeyProv private String secondaryOutputIds; private Boolean isAbstract; private String defaultLanguageSettingsProviderIds; - private String scannerConfigDiscoveryProfileId; + private String scannerConfigDiscoveryProfileId; private String versionsSupported; private String convertToId; private IConfigurationElement managedIsToolChainSupportedElement = null; @@ -1545,19 +1545,21 @@ public class ToolChain extends HoldsOptions implements IToolChain, IMatchKeyProv } /** - * Check if legacy scanner discovery method should be used. + * Check if legacy scanner discovery profiles should be used. */ - private boolean isLegacyScannerDiscovery() { - boolean isLanguageSettingsProvidersEnabled = false; - IConfiguration cfg = getParent(); - if (cfg != null) { - IResource rc = cfg.getOwner(); - if (rc != null) { - IProject project = rc.getProject(); - isLanguageSettingsProvidersEnabled = ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project); + private boolean useLegacyScannerDiscoveryProfiles() { + boolean useLegacy = true; + if (getDefaultLanguageSettingsProviderIds() != null) { + IConfiguration cfg = getParent(); + if (cfg != null && cfg.getDefaultLanguageSettingsProviderIds() != null) { + IResource rc = cfg.getOwner(); + if (rc != null) { + IProject project = rc.getProject(); + useLegacy = !ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project); + } } } - return !isLanguageSettingsProvidersEnabled; + return useLegacy; } /** @@ -1582,11 +1584,12 @@ public class ToolChain extends HoldsOptions implements IToolChain, IMatchKeyProv @Override public String getScannerConfigDiscoveryProfileId() { - if (isLegacyScannerDiscovery()) { - return getLegacyScannerConfigDiscoveryProfileId(); + String discoveryProfileId = getScannerConfigDiscoveryProfileIdInternal(); + if (discoveryProfileId == null && useLegacyScannerDiscoveryProfiles()) { + discoveryProfileId = getLegacyScannerConfigDiscoveryProfileId(); } - return getScannerConfigDiscoveryProfileIdInternal(); + return discoveryProfileId; } /** diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java index 5c29520d0b7..eae4fbff647 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java @@ -533,9 +533,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem } providers.add(provider); } - } - - if (providers.isEmpty()) { + } else { providers = ScannerDiscoveryLegacySupport.getDefaultProvidersLegacy(); } diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml index db5faa8aa54..34cbe8478f3 100644 --- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml +++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml @@ -1923,10 +1923,11 @@ + osList="macosx" + targetTool="cdt.managedbuild.tool.macosx.c.linker.macosx.base;cdt.managedbuild.tool.macosx.cpp.linker.macosx.base;cdt.managedbuild.tool.gnu.archiver"> + cleanCommand="rm -rf" + id="cdt.managedbuild.config.gnu.macosx.base" + languageSettingsProviders="org.eclipse.cdt.ui.UserLanguageSettingsProvider;org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider;${Toolchain};-org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"> + cleanCommand="rm -rf" + id="cdt.managedbuild.config.gnu.solaris.base" + languageSettingsProviders="org.eclipse.cdt.ui.UserLanguageSettingsProvider;org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider;${Toolchain};-org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser">