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.java23
1 files changed, 15 insertions, 8 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 bcd8257736c2..db28c4bf34a7 100644
--- a/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java
+++ b/java/debugger/impl/src/com/intellij/debugger/engine/JavaStackFrame.java
@@ -71,9 +71,12 @@ public class JavaStackFrame extends XStackFrame {
private static final JavaFramesListRenderer FRAME_RENDERER = new JavaFramesListRenderer();
private JavaDebuggerEvaluator myEvaluator = null;
- public JavaStackFrame(@NotNull StackFrameProxyImpl stackFrameProxy, @NotNull DebugProcessImpl debugProcess, MethodsTracker tracker) {
+ public JavaStackFrame(@NotNull StackFrameProxyImpl stackFrameProxy,
+ @NotNull DebugProcessImpl debugProcess,
+ @NotNull MethodsTracker tracker,
+ @NotNull NodeManagerImpl nodeManager) {
myDebugProcess = debugProcess;
- myNodeManager = debugProcess.getXdebugProcess().getNodeManager();
+ myNodeManager = nodeManager;
myDescriptor = new StackFrameDescriptorImpl(stackFrameProxy, tracker);
myDescriptor.setContext(null);
myDescriptor.updateRepresentation(null, DescriptorLabelListener.DUMMY_LISTENER);
@@ -311,8 +314,7 @@ public class JavaStackFrame extends XStackFrame {
final Collection<Value> argValues = frame.getArgumentValues();
int index = 0;
for (Value argValue : argValues) {
- final ArgumentValueDescriptorImpl descriptor = myNodeManager.getArgumentValueDescriptor(null, index++, argValue, null);
- children.add(JavaValue.create(descriptor, evaluationContext, myNodeManager));
+ children.add(createArgumentValue(index++, argValue, null, evaluationContext));
}
node.setMessage(MessageDescriptor.LOCAL_VARIABLES_INFO_UNAVAILABLE.getLabel(), XDebuggerUIConstants.INFORMATION_MESSAGE_ICON, SimpleTextAttributes.REGULAR_ATTRIBUTES, null);
//myChildren.add(myNodeManager.createMessageNode(MessageDescriptor.LOCAL_VARIABLES_INFO_UNAVAILABLE));
@@ -323,9 +325,7 @@ public class JavaStackFrame extends XStackFrame {
try {
final Map<DecompiledLocalVariable, Value> values = LocalVariablesUtil.fetchValues(frame.getStackFrame(), decompiled);
for (DecompiledLocalVariable var : decompiled) {
- final Value value = values.get(var);
- final ArgumentValueDescriptorImpl descriptor = myNodeManager.getArgumentValueDescriptor(null, var.getSlot(), value, var.getName());
- children.add(JavaValue.create(descriptor, evaluationContext, myNodeManager));
+ children.add(createArgumentValue(var.getSlot(), values.get(var), var.getName(), evaluationContext));
}
}
catch (Exception ex) {
@@ -339,6 +339,13 @@ public class JavaStackFrame extends XStackFrame {
}
}
+ private JavaValue createArgumentValue(int index, Value value, String name, EvaluationContextImpl evaluationContext) {
+ ArgumentValueDescriptorImpl descriptor = myNodeManager.getArgumentValueDescriptor(null, index, value, name);
+ // setContext is required to calculate correct name
+ descriptor.setContext(evaluationContext);
+ return JavaValue.create(descriptor, evaluationContext, myNodeManager);
+ }
+
protected void superBuildVariables(final EvaluationContextImpl evaluationContext, XValueChildrenList children) throws EvaluateException {
final StackFrameProxyImpl frame = getStackFrameProxy();
for (final LocalVariableProxyImpl local : frame.visibleVariables()) {
@@ -354,6 +361,6 @@ public class JavaStackFrame extends XStackFrame {
@Nullable
@Override
public Object getEqualityObject() {
- return getStackFrameProxy().hashCode();
+ return myDescriptor.getMethod();
}
}