Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2010-09-07 10:43:46 +0000
committerStephan Herrmann2010-09-07 10:43:46 +0000
commit2d1de526ae06d60d16dca844d4e62e8e94668689 (patch)
treec2090fb1afa2deb5bca6f1543510cdcf44fc75fa /plugins/org.eclipse.objectteams.otdt.debug
parent99b918aa3e87f1a71652625de67e87084b3b928a (diff)
downloadorg.eclipse.objectteams-2d1de526ae06d60d16dca844d4e62e8e94668689.tar.gz
org.eclipse.objectteams-2d1de526ae06d60d16dca844d4e62e8e94668689.tar.xz
org.eclipse.objectteams-2d1de526ae06d60d16dca844d4e62e8e94668689.zip
Avoid real work (here initializiing/setting classpath containers) during static initializers.
I saw deadlocks with involvment of the following stack-fragment: at org.eclipse.jdt.core.JavaCore.setClasspathVariable(JavaCore.java:4923) at org.eclipse.objectteams.otdt.core.ext.OTVariableInitializer.initialize(OTVariableInitializer.java:62) at org.eclipse.jdt.core.JavaCore.getClasspathVariable(JavaCore.java:2858) at org.eclipse.jdt.internal.core.JavaModelManager.getResolvedVariablePath(JavaModelManager.java:2411) at org.eclipse.jdt.core.JavaCore.getResolvedVariablePath(JavaCore.java:3400) at org.eclipse.objectteams.otdt.core.ext.OTDTPlugin.getResolvedVariablePath(OTDTPlugin.java:166) at org.eclipse.objectteams.otdt.core.ext.OTREContainer.<clinit>(OTREContainer.java:73) at org.eclipse.objectteams.otdt.core.ext.OTDTPlugin.start(OTDTPlugin.java:120) (initializing BCEL_PATH early is OK, we need the BundleContext and don't perform further computations)
Diffstat (limited to 'plugins/org.eclipse.objectteams.otdt.debug')
-rw-r--r--plugins/org.eclipse.objectteams.otdt.debug/src/org/eclipse/objectteams/otdt/debug/OTVMRunnerAdaptor.java18
1 files changed, 11 insertions, 7 deletions
diff --git a/plugins/org.eclipse.objectteams.otdt.debug/src/org/eclipse/objectteams/otdt/debug/OTVMRunnerAdaptor.java b/plugins/org.eclipse.objectteams.otdt.debug/src/org/eclipse/objectteams/otdt/debug/OTVMRunnerAdaptor.java
index b1f97dbbe..edf1b29a0 100644
--- a/plugins/org.eclipse.objectteams.otdt.debug/src/org/eclipse/objectteams/otdt/debug/OTVMRunnerAdaptor.java
+++ b/plugins/org.eclipse.objectteams.otdt.debug/src/org/eclipse/objectteams/otdt/debug/OTVMRunnerAdaptor.java
@@ -50,11 +50,6 @@ public class OTVMRunnerAdaptor
private static final String OT_DEBUG_CALLIN_STEPPING_VMARG = "-Dot.debug.callin.stepping";
private static final String OT_TEAMCONFIG_VMARG = "-Dot.teamconfig";
private static List<String> JPLIS_VMARGS;
- static {
- JPLIS_VMARGS = new ArrayList<String>();
- JPLIS_VMARGS.add("-Dot.otdt");
- JPLIS_VMARGS.add("-javaagent:" + "\""+OTREContainer.OTRE_AGENT_JAR_PATH.toOSString()+'"'); // support blanks in path
- }
private ILaunchConfiguration _launchConfig;
private String _mode;
@@ -139,7 +134,7 @@ public class OTVMRunnerAdaptor
String sep = " ";
StringBuffer result = new StringBuffer(vmArguments);
- for (String arg : JPLIS_VMARGS)
+ for (String arg : getJplisVmargs())
result.append(sep).append(arg);
String callinSteppingVMArg = getCallinSteppingVMArg();
@@ -155,6 +150,15 @@ public class OTVMRunnerAdaptor
return result.toString();
}
+ private List<String> getJplisVmargs() {
+ if (JPLIS_VMARGS == null) {
+ JPLIS_VMARGS = new ArrayList<String>();
+ JPLIS_VMARGS.add("-Dot.otdt");
+ JPLIS_VMARGS.add("-javaagent:" + "\""+OTREContainer.getOtreAgentJarPath().toOSString()+'"'); // support blanks in path
+ }
+ return JPLIS_VMARGS;
+ }
+
private String getCallinSteppingVMArg() {
String value = OTDebugPlugin.getDefault().getCallinSteppingConfig();
if (value == null) return null;
@@ -163,7 +167,7 @@ public class OTVMRunnerAdaptor
protected List<String> getOTVMArgs()
{
- return new ArrayList<String>(JPLIS_VMARGS);
+ return new ArrayList<String>(getJplisVmargs());
}
/**

Back to the top