Mercurial > hg > truffle
changeset 18566:b650870fe2fe
Backed out changeset: 3fb1231699de
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Thu, 27 Nov 2014 16:27:22 +0100 |
parents | b17e125f772f |
children | fb558b41d348 |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java |
diffstat | 2 files changed, 11 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java Thu Nov 27 16:25:44 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java Thu Nov 27 16:27:22 2014 +0100 @@ -57,7 +57,7 @@ protected MethodHandleNode(Invoke invoke) { super(invoke); - CallTargetNode callTarget = invoke.callTarget(); + MethodCallTargetNode callTarget = (MethodCallTargetNode) invoke.callTarget(); // See if we need to save some replacement method data. if (callTarget instanceof SelfReplacingMethodCallTargetNode) { @@ -237,6 +237,7 @@ */ private InvokeNode createTargetInvokeNode(ResolvedJavaMethod target, IntrinsicMethod intrinsicMethod) { InvokeKind targetInvokeKind = target.isStatic() ? InvokeKind.Static : InvokeKind.Special; + JavaType targetReturnType = target.getSignature().getReturnType(null); // MethodHandleLinkTo* nodes have a trailing MemberName argument which // needs to be popped. @@ -257,12 +258,12 @@ } // If there is already replacement information, use that instead. - CallTargetNode callTarget; + MethodCallTargetNode callTarget; if (replacementTargetMethod == null) { - callTarget = SelfReplacingMethodCallTargetNode.create(targetInvokeKind, target, targetArguments, getTargetMethod(), originalArguments, getReturnType()); + callTarget = SelfReplacingMethodCallTargetNode.create(targetInvokeKind, target, targetArguments, targetReturnType, getTargetMethod(), originalArguments, getReturnType()); } else { ValueNode[] args = replacementArguments.toArray(new ValueNode[replacementArguments.size()]); - callTarget = SelfReplacingMethodCallTargetNode.create(targetInvokeKind, target, targetArguments, replacementTargetMethod, args, replacementReturnType); + callTarget = SelfReplacingMethodCallTargetNode.create(targetInvokeKind, target, targetArguments, targetReturnType, replacementTargetMethod, args, replacementReturnType); } graph().add(callTarget);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java Thu Nov 27 16:25:44 2014 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java Thu Nov 27 16:27:22 2014 +0100 @@ -24,7 +24,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; -import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -38,21 +37,21 @@ * inlined. */ @NodeInfo -public class SelfReplacingMethodCallTargetNode extends CallTargetNode implements Lowerable { +public class SelfReplacingMethodCallTargetNode extends MethodCallTargetNode implements Lowerable { // Replacement method data protected final ResolvedJavaMethod replacementTargetMethod; protected final JavaType replacementReturnType; @Input NodeInputList<ValueNode> replacementArguments; - public static SelfReplacingMethodCallTargetNode create(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, ResolvedJavaMethod replacementTargetMethod, - ValueNode[] replacementArguments, JavaType replacementReturnType) { - return new SelfReplacingMethodCallTargetNode(invokeKind, targetMethod, arguments, replacementTargetMethod, replacementArguments, replacementReturnType); + public static SelfReplacingMethodCallTargetNode create(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType, + ResolvedJavaMethod replacementTargetMethod, ValueNode[] replacementArguments, JavaType replacementReturnType) { + return new SelfReplacingMethodCallTargetNode(invokeKind, targetMethod, arguments, returnType, replacementTargetMethod, replacementArguments, replacementReturnType); } - protected SelfReplacingMethodCallTargetNode(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, ResolvedJavaMethod replacementTargetMethod, + protected SelfReplacingMethodCallTargetNode(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType, ResolvedJavaMethod replacementTargetMethod, ValueNode[] replacementArguments, JavaType replacementReturnType) { - super(arguments, targetMethod, invokeKind); + super(invokeKind, targetMethod, arguments, returnType); this.replacementTargetMethod = replacementTargetMethod; this.replacementReturnType = replacementReturnType; this.replacementArguments = new NodeInputList<>(this, replacementArguments); @@ -84,22 +83,4 @@ public void generate(NodeLIRBuilderTool gen) { throw GraalInternalError.shouldNotReachHere("should have replaced itself"); } - - @Override - public Stamp returnStamp() { - Kind returnKind = targetMethod().getSignature().getReturnKind(); - if (returnKind == Kind.Object && replacementReturnType instanceof ResolvedJavaType) { - return StampFactory.declared((ResolvedJavaType) replacementReturnType); - } else { - return StampFactory.forKind(returnKind); - } - } - - @Override - public String targetName() { - if (targetMethod() == null) { - return "??Invalid!"; - } - return targetMethod().format("%h.%n"); - } }