# HG changeset patch # User Doug Simon # Date 1427461426 -3600 # Node ID 97dbe2c740736486b00fc038d6d813235b275b00 # Parent 116c600253e537b2cdfe24101c07e76a5d96f62c don't push MethodHandleNodes with void return type to the stack diff -r 116c600253e5 -r 97dbe2c74073 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java Fri Mar 27 14:03:04 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java Fri Mar 27 14:03:46 2015 +0100 @@ -110,10 +110,16 @@ if (invokeKind != InvokeKind.Static) { receiver.get(); } + JavaType invokeReturnType = b.getInvokeReturnType(); InvokeNode invoke = MethodHandleNode.tryResolveTargetInvoke(b.getAssumptions(), b.getConstantReflection().getMethodHandleAccess(), intrinsicMethod, targetMethod, - b.bci(), b.getInvokeReturnType(), argsIncludingReceiver); + b.bci(), invokeReturnType, argsIncludingReceiver); if (invoke == null) { - b.addPush(new MethodHandleNode(intrinsicMethod, invokeKind, targetMethod, b.bci(), b.getInvokeReturnType(), argsIncludingReceiver)); + MethodHandleNode methodHandleNode = new MethodHandleNode(intrinsicMethod, invokeKind, targetMethod, b.bci(), invokeReturnType, argsIncludingReceiver); + if (invokeReturnType.getKind() == Kind.Void) { + b.add(methodHandleNode); + } else { + b.addPush(methodHandleNode); + } } else { CallTargetNode callTarget = invoke.callTarget(); NodeInputList argumentsList = callTarget.arguments();