diff options
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.java | 40 |
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); } |