@@ -239,13 +239,22 @@ public ResolvedJavaMethod findMethod(Class<?> declaringClass, String name, Class
239239 }
240240 }
241241
242+ private NodeSourcePosition invokePosition (int invokeBci ) {
243+ if (graph .trackNodeSourcePosition ()) {
244+ NodeSourcePosition currentPosition = graph .currentNodeSourcePosition ();
245+ assert currentPosition .getCaller () == null : "The GraphKit currentPosition should be a top level position." ;
246+ return NodeSourcePosition .substitution (currentPosition .getMethod (), invokeBci );
247+ }
248+ return null ;
249+ }
250+
242251 /**
243252 * Creates and appends an {@link InvokeNode} for a call to a given method with a given set of
244253 * arguments.
245254 */
246255 @ SuppressWarnings ("try" )
247256 public InvokeNode createInvoke (ResolvedJavaMethod method , InvokeKind invokeKind , FrameStateBuilder frameStateBuilder , int bci , ValueNode ... args ) {
248- try (DebugCloseable context = graph .withNodeSourcePosition (NodeSourcePosition . substitution ( graph . currentNodeSourcePosition (), method ))) {
257+ try (DebugCloseable context = graph .withNodeSourcePosition (invokePosition ( bci ))) {
249258 assert method .isStatic () == (invokeKind == InvokeKind .Static );
250259 Signature signature = method .getSignature ();
251260 JavaType returnType = signature .getReturnType (null );
@@ -282,7 +291,7 @@ public InvokeNode createIntrinsicInvoke(ResolvedJavaMethod method, ValueNode...
282291 @ SuppressWarnings ("try" )
283292 public InvokeWithExceptionNode createInvokeWithExceptionAndUnwind (ResolvedJavaMethod method , InvokeKind invokeKind ,
284293 FrameStateBuilder frameStateBuilder , int invokeBci , ValueNode ... args ) {
285- try (DebugCloseable context = graph .withNodeSourcePosition (NodeSourcePosition . substitution ( graph . currentNodeSourcePosition (), method ))) {
294+ try (DebugCloseable context = graph .withNodeSourcePosition (invokePosition ( invokeBci ))) {
286295 InvokeWithExceptionNode result = startInvokeWithException (method , invokeKind , frameStateBuilder , invokeBci , args );
287296 exceptionPart ();
288297 ExceptionObjectNode exception = exceptionObject ();
@@ -294,7 +303,7 @@ public InvokeWithExceptionNode createInvokeWithExceptionAndUnwind(ResolvedJavaMe
294303
295304 @ SuppressWarnings ("try" )
296305 public InvokeWithExceptionNode createInvokeWithExceptionAndUnwind (MethodCallTargetNode callTarget , FrameStateBuilder frameStateBuilder , int invokeBci ) {
297- try (DebugCloseable context = graph .withNodeSourcePosition (NodeSourcePosition . substitution ( graph . currentNodeSourcePosition (), callTarget . targetMethod () ))) {
306+ try (DebugCloseable context = graph .withNodeSourcePosition (invokePosition ( invokeBci ))) {
298307 InvokeWithExceptionNode result = startInvokeWithException (callTarget , frameStateBuilder , invokeBci );
299308 exceptionPart ();
300309 ExceptionObjectNode exception = exceptionObject ();
0 commit comments