summaryrefslogtreecommitdiff
path: root/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java')
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java40
1 files changed, 9 insertions, 31 deletions
diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java b/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java
index ed4d8296c381..bcd8257736c2 100644
--- a/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java
+++ b/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java
@@ -27,7 +27,6 @@ import com.intellij.debugger.impl.DebuggerUtilsEx;
import com.intellij.debugger.jdi.*;
import com.intellij.debugger.settings.DebuggerSettings;
import com.intellij.debugger.settings.NodeRendererSettings;
-import com.intellij.debugger.settings.ViewsGeneralSettings;
import com.intellij.debugger.ui.breakpoints.Breakpoint;
import com.intellij.debugger.ui.impl.FrameVariablesTree;
import com.intellij.debugger.ui.impl.watch.*;
@@ -47,6 +46,7 @@ import com.intellij.xdebugger.frame.XCompositeNode;
import com.intellij.xdebugger.frame.XStackFrame;
import com.intellij.xdebugger.frame.XValueChildrenList;
import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants;
+import com.intellij.xdebugger.settings.XDebuggerSettingsManager;
import com.sun.jdi.*;
import com.sun.jdi.event.Event;
import com.sun.jdi.event.ExceptionEvent;
@@ -66,7 +66,6 @@ public class JavaStackFrame extends XStackFrame {
private final DebugProcessImpl myDebugProcess;
private final XSourcePosition myXSourcePosition;
- private final SourcePosition mySourcePosition;
private final NodeManagerImpl myNodeManager;
private final StackFrameDescriptorImpl myDescriptor;
private static final JavaFramesListRenderer FRAME_RENDERER = new JavaFramesListRenderer();
@@ -74,43 +73,22 @@ public class JavaStackFrame extends XStackFrame {
public JavaStackFrame(@NotNull StackFrameProxyImpl stackFrameProxy, @NotNull DebugProcessImpl debugProcess, MethodsTracker tracker) {
myDebugProcess = debugProcess;
- Pair<SourcePosition, XSourcePosition> positions = calcSourcePosition(stackFrameProxy);
- mySourcePosition = positions.getFirst();
- myXSourcePosition = positions.getSecond();
myNodeManager = debugProcess.getXdebugProcess().getNodeManager();
myDescriptor = new StackFrameDescriptorImpl(stackFrameProxy, tracker);
myDescriptor.setContext(null);
myDescriptor.updateRepresentation(null, DescriptorLabelListener.DUMMY_LISTENER);
+ myXSourcePosition = ApplicationManager.getApplication().runReadAction(new Computable<XSourcePosition>() {
+ @Override
+ public XSourcePosition compute() {
+ return myDescriptor.getSourcePosition() != null ? DebuggerUtilsEx.toXSourcePosition(myDescriptor.getSourcePosition()) : null;
+ }
+ });
}
public StackFrameDescriptorImpl getDescriptor() {
return myDescriptor;
}
- private Pair<SourcePosition, XSourcePosition> calcSourcePosition(StackFrameProxyImpl stackFrameProxy) {
- final CompoundPositionManager positionManager = myDebugProcess.getPositionManager();
- if (positionManager == null) {
- // process already closed
- return null;
- }
- Location location = null;
- try {
- location = stackFrameProxy.location();
- }
- catch (Throwable e) {
- LOG.info(e);
- }
- final Location loc = location;
- return ApplicationManager.getApplication().runReadAction(new Computable<Pair<SourcePosition, XSourcePosition>>() {
- @Override
- public Pair<SourcePosition, XSourcePosition> compute() {
- SourcePosition position = positionManager.getSourcePosition(loc);
- XSourcePosition xSourcePosition = position != null ? DebuggerUtilsEx.toXSourcePosition(position) : null;
- return new Pair<SourcePosition, XSourcePosition>(position, xSourcePosition);
- }
- });
- }
-
@Nullable
@Override
public XDebuggerEvaluator getEvaluator() {
@@ -174,7 +152,7 @@ public class JavaStackFrame extends XStackFrame {
threadSuspendContext,
getStackFrameProxy().threadProxy(),
getStackFrameProxy());
- context.setPositionCache(mySourcePosition);
+ context.setPositionCache(myDescriptor.getSourcePosition());
context.initCaches();
}
return context;
@@ -293,7 +271,7 @@ public class JavaStackFrame extends XStackFrame {
}
try {
- if (!ViewsGeneralSettings.getInstance().ENABLE_AUTO_EXPRESSIONS && !myAutoWatchMode) {
+ if (!XDebuggerSettingsManager.getInstance().getDataViewSettings().isAutoExpressions() && !myAutoWatchMode) {
// optimization
superBuildVariables(evaluationContext, children);
}