comparison graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java @ 13197:8569b9e047cd

change debug scopes implementation to prevent extra frames related to mechanism being added to call stack
author Doug Simon <doug.simon@oracle.com>
date Sat, 30 Nov 2013 01:16:55 +0100
parents e343d4623e47
children 210f58e992a1
comparison
equal deleted inserted replaced
13196:e343d4623e47 13197:8569b9e047cd
28 import static com.oracle.graal.phases.GraalOptions.*; 28 import static com.oracle.graal.phases.GraalOptions.*;
29 import static java.lang.reflect.Modifier.*; 29 import static java.lang.reflect.Modifier.*;
30 30
31 import java.lang.reflect.*; 31 import java.lang.reflect.*;
32 import java.util.*; 32 import java.util.*;
33 import java.util.concurrent.*;
34 33
35 import com.oracle.graal.api.code.*; 34 import com.oracle.graal.api.code.*;
36 import com.oracle.graal.api.code.Assumptions.Assumption; 35 import com.oracle.graal.api.code.Assumptions.Assumption;
37 import com.oracle.graal.api.meta.*; 36 import com.oracle.graal.api.meta.*;
38 import com.oracle.graal.api.meta.JavaTypeProfile.ProfiledType; 37 import com.oracle.graal.api.meta.JavaTypeProfile.ProfiledType;
39 import com.oracle.graal.api.meta.ResolvedJavaType.Representation; 38 import com.oracle.graal.api.meta.ResolvedJavaType.Representation;
40 import com.oracle.graal.debug.*; 39 import com.oracle.graal.debug.*;
40 import com.oracle.graal.debug.Debug.Scope;
41 import com.oracle.graal.graph.*; 41 import com.oracle.graal.graph.*;
42 import com.oracle.graal.graph.Graph.DuplicationReplacement; 42 import com.oracle.graal.graph.Graph.DuplicationReplacement;
43 import com.oracle.graal.graph.Node.ValueNumberable; 43 import com.oracle.graal.graph.Node.ValueNumberable;
44 import com.oracle.graal.graph.Node.Verbosity; 44 import com.oracle.graal.graph.Node.Verbosity;
45 import com.oracle.graal.nodes.*; 45 import com.oracle.graal.nodes.*;
171 } 171 }
172 return success; 172 return success;
173 } 173 }
174 174
175 public static void logInliningDecision(final String msg, final Object... args) { 175 public static void logInliningDecision(final String msg, final Object... args) {
176 Debug.scope(inliningDecisionsScopeString, new Runnable() { 176 try (Scope s = Debug.scope(inliningDecisionsScopeString)) {
177 177 Debug.log(msg, args);
178 public void run() { 178 }
179 Debug.log(msg, args);
180 }
181 });
182 } 179 }
183 180
184 private static boolean logNotInlinedMethod(Invoke invoke, String msg) { 181 private static boolean logNotInlinedMethod(Invoke invoke, String msg) {
185 if (shouldLogInliningDecision()) { 182 if (shouldLogInliningDecision()) {
186 String methodString = invoke.toString() + (invoke.callTarget() == null ? " callTarget=null" : invoke.callTarget().targetName()); 183 String methodString = invoke.toString() + (invoke.callTarget() == null ? " callTarget=null" : invoke.callTarget().targetName());
218 } 215 }
219 logInliningDecision(inliningMsg, args); 216 logInliningDecision(inliningMsg, args);
220 } 217 }
221 218
222 public static boolean shouldLogInliningDecision() { 219 public static boolean shouldLogInliningDecision() {
223 return Debug.scope(inliningDecisionsScopeString, new Callable<Boolean>() { 220 try (Scope s = Debug.scope(inliningDecisionsScopeString)) {
224 221 return Debug.isLogEnabled();
225 public Boolean call() { 222 }
226 return Debug.isLogEnabled();
227 }
228 });
229 } 223 }
230 224
231 private static String methodName(ResolvedJavaMethod method, Invoke invoke) { 225 private static String methodName(ResolvedJavaMethod method, Invoke invoke) {
232 if (invoke != null && invoke.stateAfter() != null) { 226 if (invoke != null && invoke.stateAfter() != null) {
233 return methodName(invoke.stateAfter(), invoke.bci()) + ": " + MetaUtil.format("%H.%n(%p):%r", method) + " (" + method.getCodeSize() + " bytes)"; 227 return methodName(invoke.stateAfter(), invoke.bci()) + ": " + MetaUtil.format("%H.%n(%p):%r", method) + " (" + method.getCodeSize() + " bytes)";