Mercurial > hg > truffle
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)"; |