1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 17:05:26 +02:00

Bug 196885, cache the "is the exe a binary" value.

This commit is contained in:
Ken Ryall 2009-06-04 12:35:21 +00:00
parent 16c0c77295
commit 4f7831b525

View file

@ -13,8 +13,10 @@
package org.eclipse.cdt.launch.ui;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.ICDescriptor;
@ -128,6 +130,8 @@ public class CMainTab extends CLaunchConfigurationTab {
/** @since 6.0 */
public static final int SPECIFY_CORE_FILE = 4;
private final Map<IPath, Boolean> fBinaryExeCache = new HashMap<IPath, Boolean>();
public CMainTab() {
this(WANTS_TERMINAL);
@ -790,8 +794,14 @@ public class CMainTab extends CLaunchConfigurationTab {
*/
protected boolean isBinary(IProject project, IPath exePath) throws CoreException {
try {
IBinaryObject exe = LaunchUtils.getBinary(project, exePath);
return exe != null;
Boolean binValue = fBinaryExeCache.get(exePath);
if (binValue == null)
{
IBinaryObject exe = LaunchUtils.getBinary(project, exePath);
binValue = exe != null;
fBinaryExeCache.put(exePath, binValue);
}
return binValue;
} catch (ClassCastException e) {
}
return false;