hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/ConstantBindingParameterPlugin.java
--- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/ConstantBindingParameterPlugin.java Mon Dec 12 16:16:27 2016 +0300
+++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/ConstantBindingParameterPlugin.java Wed Mar 22 13:42:45 2017 -0700
@@ -57,7 +57,16 @@
if (arg != null) {
ConstantNode constantNode;
if (arg instanceof ConstantNode) {
- constantNode = (ConstantNode) arg;
+ ConstantNode otherCon = (ConstantNode) arg;
+ if (otherCon.graph() != b.getGraph()) {
+ /*
+ * This is a node from another graph, so copy over extra state into a new
+ * ConstantNode.
+ */
+ constantNode = ConstantNode.forConstant(stamp.getTrustedStamp(), otherCon.asConstant(), otherCon.getStableDimension(), otherCon.isDefaultStable(), metaAccess);
+ } else {
+ constantNode = otherCon;
+ }
} else if (arg instanceof Constant) {
constantNode = ConstantNode.forConstant(stamp.getTrustedStamp(), (Constant) arg, metaAccess);
} else {