From b72c72dca6396bbe3d624ac40ecd542e010a8013 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Wed, 1 Mar 2017 17:30:20 +0300 Subject: [PATCH] capture speedup - no need to keep param values --- .../ui/breakpoints/StackCapturingLineBreakpoint.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/StackCapturingLineBreakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/StackCapturingLineBreakpoint.java index d35a3556cdae..ea58e14e33ca 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/StackCapturingLineBreakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/StackCapturingLineBreakpoint.java @@ -239,12 +239,14 @@ public class StackCapturingLineBreakpoint extends WildcardMethodBreakpoint { private static class MyEvaluator { private final String myExpression; private final boolean myCached; - ExpressionEvaluator myEvaluator; + private ExpressionEvaluator myEvaluator; + private final boolean myNeedKeepValue; public MyEvaluator(String expression, boolean cached) { myExpression = expression; int paramId = DecompiledLocalVariable.getParamId(myExpression); - if (paramId > -1) { + boolean paramEvaluator = paramId > -1; + if (paramEvaluator) { myEvaluator = new ExpressionEvaluatorImpl(new Evaluator() { @Override public Object evaluate(EvaluationContextImpl context) throws EvaluateException { @@ -258,6 +260,7 @@ public class StackCapturingLineBreakpoint extends WildcardMethodBreakpoint { }); cached = true; } + myNeedKeepValue = !paramEvaluator; myCached = cached; } @@ -274,7 +277,9 @@ public class StackCapturingLineBreakpoint extends WildcardMethodBreakpoint { } if (myEvaluator != null) { Value value = myEvaluator.evaluate(context); - DebuggerUtilsEx.keep(value, context); + if (myNeedKeepValue) { + DebuggerUtilsEx.keep(value, context); + } return value; } return null;