# HG changeset patch # User Lukas Stadler # Date 1361977156 -3600 # Node ID a58851061377af4594a9acdcfb1192feade07d6e # Parent 649379d3f88d0fe1c3d5a5b0eed1f51407fb8599 rename ValueProxyNode to ProxyNode diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java Wed Feb 27 15:51:34 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java Wed Feb 27 15:59:16 2013 +0100 @@ -104,7 +104,7 @@ LoopTransformations.peel(osrLoop); for (Node usage : osr.usages().snapshot()) { - ValueProxyNode proxy = (ValueProxyNode) usage; + ProxyNode proxy = (ProxyNode) usage; proxy.replaceAndDelete(proxy.value()); } FixedNode next = osr.next(); @@ -136,7 +136,7 @@ for (int i = 0; i < osrState.localsSize(); i++) { ValueNode value = osrState.localAt(i); if (value != null) { - ValueProxyNode proxy = (ValueProxyNode) value; + ProxyNode proxy = (ProxyNode) value; int size = FrameStateBuilder.stackSlots(value.kind()); int offset = localsOffset - (i + size - 1) * 8; UnsafeLoadNode load = graph.add(new UnsafeLoadNode(buffer, offset, ConstantNode.forInt(0, graph), value.kind())); diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.java/src/com/oracle/graal/java/FrameStateBuilder.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/FrameStateBuilder.java Wed Feb 27 15:51:34 2013 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/FrameStateBuilder.java Wed Feb 27 15:59:16 2013 +0100 @@ -203,16 +203,16 @@ } private void propagateDelete(FloatingNode node) { - assert node instanceof PhiNode || node instanceof ValueProxyNode; + assert node instanceof PhiNode || node instanceof ProxyNode; if (node.isDeleted()) { return; } // Collect all phi functions that use this phi so that we can delete them recursively (after // we delete ourselves to avoid circles). - List propagateUsages = node.usages().filter(FloatingNode.class).filter(isA(PhiNode.class).or(ValueProxyNode.class)).snapshot(); + List propagateUsages = node.usages().filter(FloatingNode.class).filter(isA(PhiNode.class).or(ProxyNode.class)).snapshot(); // Remove the phi function from all FrameStates where it is used and then delete it. - assert node.usages().filter(isNotA(FrameState.class).nor(PhiNode.class).nor(ValueProxyNode.class)).isEmpty() : "phi function that gets deletes must only be used in frame states"; + assert node.usages().filter(isNotA(FrameState.class).nor(PhiNode.class).nor(ProxyNode.class)).isEmpty() : "phi function that gets deletes must only be used in frame states"; node.replaceAtUsages(null); node.safeDelete(); @@ -235,21 +235,21 @@ ValueNode value = localAt(i); if (value != null && (!loopEntryState.contains(value) || loopExit.loopBegin().isPhiAtMerge(value))) { Debug.log(" inserting proxy for %s", value); - storeLocal(i, graph.unique(new ValueProxyNode(value, loopExit, PhiType.Value))); + storeLocal(i, graph.unique(new ProxyNode(value, loopExit, PhiType.Value))); } } for (int i = 0; i < stackSize(); i++) { ValueNode value = stackAt(i); if (value != null && (!loopEntryState.contains(value) || loopExit.loopBegin().isPhiAtMerge(value))) { Debug.log(" inserting proxy for %s", value); - storeStack(i, graph.unique(new ValueProxyNode(value, loopExit, PhiType.Value))); + storeStack(i, graph.unique(new ProxyNode(value, loopExit, PhiType.Value))); } } for (int i = 0; i < locks.length; i++) { ValueNode value = locks[i]; if (value != null && (!loopEntryState.contains(value) || loopExit.loopBegin().isPhiAtMerge(value))) { Debug.log(" inserting proxy for %s", value); - locks[i] = graph.unique(new ValueProxyNode(value, loopExit, PhiType.Value)); + locks[i] = graph.unique(new ProxyNode(value, loopExit, PhiType.Value)); } } } @@ -259,21 +259,21 @@ ValueNode value = localAt(i); if (value != null) { Debug.log(" inserting proxy for %s", value); - storeLocal(i, graph.unique(new ValueProxyNode(value, begin, PhiType.Value))); + storeLocal(i, graph.unique(new ProxyNode(value, begin, PhiType.Value))); } } for (int i = 0; i < stackSize(); i++) { ValueNode value = stackAt(i); if (value != null) { Debug.log(" inserting proxy for %s", value); - storeStack(i, graph.unique(new ValueProxyNode(value, begin, PhiType.Value))); + storeStack(i, graph.unique(new ProxyNode(value, begin, PhiType.Value))); } } for (int i = 0; i < locks.length; i++) { ValueNode value = locks[i]; if (value != null) { Debug.log(" inserting proxy for %s", value); - locks[i] = graph.unique(new ValueProxyNode(value, begin, PhiType.Value)); + locks[i] = graph.unique(new ProxyNode(value, begin, PhiType.Value)); } } } @@ -292,7 +292,7 @@ public void cleanupDeletedPhis() { for (int i = 0; i < localsSize(); i++) { if (localAt(i) != null && localAt(i).isDeleted()) { - assert localAt(i) instanceof PhiNode || localAt(i) instanceof ValueProxyNode : "Only phi and value proxies can be deleted during parsing: " + localAt(i); + assert localAt(i) instanceof PhiNode || localAt(i) instanceof ProxyNode : "Only phi and value proxies can be deleted during parsing: " + localAt(i); storeLocal(i, null); } } diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java Wed Feb 27 15:51:34 2013 +0100 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java Wed Feb 27 15:59:16 2013 +0100 @@ -179,7 +179,7 @@ }); } nodes.mark(earlyExit); - for (ValueProxyNode proxy : earlyExit.proxies()) { + for (ProxyNode proxy : earlyExit.proxies()) { nodes.mark(proxy); } } @@ -271,9 +271,9 @@ anchored.replaceFirstInput(earlyExit, merge); } - for (final ValueProxyNode vpn : earlyExit.proxies().snapshot()) { + for (final ProxyNode vpn : earlyExit.proxies().snapshot()) { final ValueNode replaceWith; - ValueProxyNode newVpn = getDuplicatedNode(vpn); + ProxyNode newVpn = getDuplicatedNode(vpn); if (newVpn != null) { PhiNode phi = graph.add(vpn.type() == PhiType.Value ? vpn.stamp() == StampFactory.virtual() ? new PhiNode(vpn.stamp(), merge) : new PhiNode(vpn.kind(), merge) : new PhiNode( vpn.type(), merge)); diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java Wed Feb 27 15:51:34 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java Wed Feb 27 15:59:16 2013 +0100 @@ -108,7 +108,7 @@ } public void removeProxies() { - for (ValueProxyNode vpn : proxies().snapshot()) { + for (ProxyNode vpn : proxies().snapshot()) { // can not use graph.replaceFloating because vpn.value may be null during killCFG vpn.replaceAtUsages(vpn.value()); vpn.safeDelete(); @@ -131,11 +131,11 @@ } public NodeIterable anchored() { - return usages().filter(isNotA(ValueProxyNode.class)); + return usages().filter(isNotA(ProxyNode.class)); } - public NodeIterable proxies() { - return usages().filter(ValueProxyNode.class); + public NodeIterable proxies() { + return usages().filter(ProxyNode.class); } public NodeIterable getBlockNodes() { diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java Wed Feb 27 15:59:16 2013 +0100 @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.nodes; + +import com.oracle.graal.graph.*; +import com.oracle.graal.graph.Node.ValueNumberable; +import com.oracle.graal.nodes.PhiNode.PhiType; +import com.oracle.graal.nodes.calc.*; +import com.oracle.graal.nodes.spi.*; +import com.oracle.graal.nodes.type.*; + +/** + * A value proxy that is inserted in the frame state of a loop exit for any value that is created + * inside the loop (i.e. was not live on entry to the loop) and is (potentially) used after the + * loop. + */ +@NodeInfo(nameTemplate = "{p#type/s}Proxy") +public class ProxyNode extends FloatingNode implements Node.IterableNodeType, ValueNumberable, Canonicalizable, Virtualizable, LIRLowerable { + + @Input(notDataflow = true) private BeginNode proxyPoint; + @Input private ValueNode value; + private final PhiType type; + + public ProxyNode(ValueNode value, BeginNode exit, PhiType type) { + super(type == PhiType.Value ? value.stamp() : type.stamp); + this.type = type; + assert exit != null; + this.proxyPoint = exit; + this.value = value; + } + + public ValueNode value() { + return value; + } + + @Override + public boolean inferStamp() { + return updateStamp(value.stamp()); + } + + @Override + public Stamp stamp() { + return value().stamp(); + } + + public BeginNode proxyPoint() { + return proxyPoint; + } + + public PhiType type() { + return type; + } + + @Override + public boolean verify() { + assert value != null; + assert proxyPoint != null; + return super.verify(); + } + + @Override + public void generate(LIRGeneratorTool generator) { + assert type == PhiType.Memory; + } + + @Override + public ValueNode canonical(CanonicalizerTool tool) { + if (type == PhiType.Value && value.isConstant()) { + return value; + } + return this; + } + + @Override + public void virtualize(VirtualizerTool tool) { + if (type == PhiType.Value) { + State state = tool.getObjectState(value); + if (state != null && state.getState() == EscapeState.Virtual) { + tool.replaceWithVirtual(state.getVirtualObject()); + } + } + } +} diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java Wed Feb 27 15:51:34 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package com.oracle.graal.nodes; - -import com.oracle.graal.graph.*; -import com.oracle.graal.graph.Node.ValueNumberable; -import com.oracle.graal.nodes.PhiNode.PhiType; -import com.oracle.graal.nodes.calc.*; -import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.nodes.type.*; - -/** - * A value proxy that is inserted in the frame state of a loop exit for any value that is created - * inside the loop (i.e. was not live on entry to the loop) and is (potentially) used after the - * loop. - */ -public class ValueProxyNode extends FloatingNode implements Node.IterableNodeType, ValueNumberable, Canonicalizable, Virtualizable, LIRLowerable { - - @Input(notDataflow = true) private BeginNode proxyPoint; - @Input private ValueNode value; - private final PhiType type; - - public ValueProxyNode(ValueNode value, BeginNode exit, PhiType type) { - super(type == PhiType.Value ? value.stamp() : type.stamp); - this.type = type; - assert exit != null; - this.proxyPoint = exit; - this.value = value; - } - - public ValueNode value() { - return value; - } - - @Override - public boolean inferStamp() { - return updateStamp(value.stamp()); - } - - @Override - public Stamp stamp() { - return value().stamp(); - } - - public BeginNode proxyPoint() { - return proxyPoint; - } - - public PhiType type() { - return type; - } - - @Override - public boolean verify() { - assert value != null; - assert proxyPoint != null; - return super.verify(); - } - - @Override - public void generate(LIRGeneratorTool generator) { - assert type == PhiType.Memory; - } - - @Override - public ValueNode canonical(CanonicalizerTool tool) { - if (type == PhiType.Value && value.isConstant()) { - return value; - } - return this; - } - - @Override - public void virtualize(VirtualizerTool tool) { - if (type == PhiType.Value) { - State state = tool.getObjectState(value); - if (state != null && state.getState() == EscapeState.Virtual) { - tool.replaceWithVirtual(state.getVirtualObject()); - } - } - } -} diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Wed Feb 27 15:51:34 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Wed Feb 27 15:59:16 2013 +0100 @@ -140,18 +140,18 @@ ValueNode singleValue = phiNode.singleValue(); if (singleValue != null) { Collection phiUsages = phiNode.usages().filter(PhiNode.class).snapshot(); - Collection proxyUsages = phiNode.usages().filter(ValueProxyNode.class).snapshot(); + Collection proxyUsages = phiNode.usages().filter(ProxyNode.class).snapshot(); ((StructuredGraph) phiNode.graph()).replaceFloating(phiNode, singleValue); for (PhiNode phi : phiUsages) { checkRedundantPhi(phi); } - for (ValueProxyNode proxy : proxyUsages) { + for (ProxyNode proxy : proxyUsages) { checkRedundantProxy(proxy); } } } - public static void checkRedundantProxy(ValueProxyNode vpn) { + public static void checkRedundantProxy(ProxyNode vpn) { BeginNode proxyPoint = vpn.proxyPoint(); if (proxyPoint instanceof LoopExitNode) { LoopExitNode exit = (LoopExitNode) proxyPoint; @@ -164,12 +164,12 @@ } if (vpnValue == v2) { Collection phiUsages = vpn.usages().filter(PhiNode.class).snapshot(); - Collection proxyUsages = vpn.usages().filter(ValueProxyNode.class).snapshot(); + Collection proxyUsages = vpn.usages().filter(ProxyNode.class).snapshot(); ((StructuredGraph) vpn.graph()).replaceFloating(vpn, vpnValue); for (PhiNode phi : phiUsages) { checkRedundantPhi(phi); } - for (ValueProxyNode proxy : proxyUsages) { + for (ProxyNode proxy : proxyUsages) { checkRedundantProxy(proxy); } return; @@ -185,7 +185,7 @@ GraphUtil.checkRedundantPhi(phi); } for (LoopExitNode exit : begin.loopExits()) { - for (ValueProxyNode vpn : exit.proxies().snapshot()) { + for (ProxyNode vpn : exit.proxies().snapshot()) { GraphUtil.checkRedundantProxy(vpn); } } @@ -259,8 +259,8 @@ public static ValueNode unProxify(ValueNode proxy) { ValueNode v = proxy; - while (v instanceof ValueProxyNode) { - v = ((ValueProxyNode) v).value(); + while (v instanceof ProxyNode) { + v = ((ProxyNode) v).value(); } return v; } @@ -293,8 +293,8 @@ public static ValueNode originalValue(ValueNode proxy) { ValueNode v = proxy; do { - if (v instanceof ValueProxyNode) { - v = ((ValueProxyNode) v).value(); + if (v instanceof ProxyNode) { + v = ((ProxyNode) v).value(); } else if (v instanceof PhiNode) { v = ((PhiNode) v).singleValue(); } else { @@ -308,8 +308,8 @@ NodeWorkList worklist = proxy.graph().createNodeWorkList(); worklist.add(proxy); for (Node node : worklist) { - if (node instanceof ValueProxyNode) { - worklist.add(((ValueProxyNode) node).value()); + if (node instanceof ProxyNode) { + worklist.add(((ProxyNode) node).value()); } else if (node instanceof PhiNode) { worklist.addAll(((PhiNode) node).values()); } else { diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java Wed Feb 27 15:51:34 2013 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java Wed Feb 27 15:59:16 2013 +0100 @@ -236,7 +236,7 @@ for (Object location : modifiedLocations) { ValueNode lastAccessAtExit = state.lastMemorySnapshot.get(location); if (lastAccessAtExit != null) { - state.lastMemorySnapshot.put(location, loop.graph().add(new ValueProxyNode(lastAccessAtExit, exit, PhiType.Memory))); + state.lastMemorySnapshot.put(location, loop.graph().add(new ProxyNode(lastAccessAtExit, exit, PhiType.Memory))); } } } diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ReadEliminationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ReadEliminationPhase.java Wed Feb 27 15:51:34 2013 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ReadEliminationPhase.java Wed Feb 27 15:59:16 2013 +0100 @@ -59,8 +59,8 @@ if (visited.isMarked(lastLocationAccess)) { return true; // dataflow loops must come from Phis assume them ok until proven wrong } - if (lastLocationAccess instanceof ValueProxyNode) { - return isWrites(n, ((ValueProxyNode) lastLocationAccess).value(), visited); + if (lastLocationAccess instanceof ProxyNode) { + return isWrites(n, ((ProxyNode) lastLocationAccess).value(), visited); } if (lastLocationAccess instanceof WriteNode) { WriteNode other = (WriteNode) lastLocationAccess; @@ -83,10 +83,10 @@ if (exisiting != null) { return exisiting; } - if (lastLocationAccess instanceof ValueProxyNode) { - ValueProxyNode proxy = (ValueProxyNode) lastLocationAccess; + if (lastLocationAccess instanceof ProxyNode) { + ProxyNode proxy = (ProxyNode) lastLocationAccess; ValueNode value = getValue(n, proxy.value(), nodeMap); - return lastLocationAccess.graph().add(new ValueProxyNode(value, proxy.proxyPoint(), PhiType.Value)); + return lastLocationAccess.graph().add(new ProxyNode(value, proxy.proxyPoint(), PhiType.Value)); } if (lastLocationAccess instanceof WriteNode) { return ((WriteNode) lastLocationAccess).value(); diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java Wed Feb 27 15:51:34 2013 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java Wed Feb 27 15:59:16 2013 +0100 @@ -30,7 +30,7 @@ @Override protected void run(StructuredGraph graph) { - for (ValueProxyNode vpn : graph.getNodes(ValueProxyNode.class)) { + for (ProxyNode vpn : graph.getNodes(ProxyNode.class)) { if (vpn.type() == PhiType.Value) { graph.replaceFloating(vpn, vpn.value()); } diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Wed Feb 27 15:51:34 2013 +0100 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Wed Feb 27 15:59:16 2013 +0100 @@ -584,7 +584,7 @@ if (usage instanceof VirtualState) { // only fixed nodes can have VirtualState -> no need to schedule them } else { - if (i instanceof LoopExitNode && usage instanceof ValueProxyNode) { + if (i instanceof LoopExitNode && usage instanceof ProxyNode) { // value proxies should be scheduled before the loopexit, not after } else { addToEarliestSorting(b, (ScheduledNode) usage, sortedInstructions, visited); @@ -593,11 +593,11 @@ } if (i instanceof BeginNode) { - ArrayList proxies = (i instanceof LoopExitNode) ? new ArrayList() : null; + ArrayList proxies = (i instanceof LoopExitNode) ? new ArrayList() : null; for (ScheduledNode inBlock : blockToNodesMap.get(b)) { if (!visited.isMarked(inBlock)) { - if (inBlock instanceof ValueProxyNode) { - proxies.add((ValueProxyNode) inBlock); + if (inBlock instanceof ProxyNode) { + proxies.add((ProxyNode) inBlock); } else { addToEarliestSorting(b, inBlock, sortedInstructions, visited); } diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetIntrinsificationPhase.java --- a/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetIntrinsificationPhase.java Wed Feb 27 15:51:34 2013 +0100 +++ b/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetIntrinsificationPhase.java Wed Feb 27 15:59:16 2013 +0100 @@ -364,7 +364,7 @@ if (newInstance instanceof ValueNode && (((ValueNode) newInstance).kind() != Kind.Object || ((ValueNode) newInstance).stamp() == StampFactory.forNodeIntrinsic())) { StructuredGraph graph = (StructuredGraph) newInstance.graph(); for (CheckCastNode checkCastNode : newInstance.usages().filter(CheckCastNode.class).snapshot()) { - for (ValueProxyNode vpn : checkCastNode.usages().filter(ValueProxyNode.class).snapshot()) { + for (ProxyNode vpn : checkCastNode.usages().filter(ProxyNode.class).snapshot()) { graph.replaceFloating(vpn, checkCastNode); } for (Node checkCastUsage : checkCastNode.usages().snapshot()) { diff -r 649379d3f88d -r a58851061377 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java Wed Feb 27 15:51:34 2013 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java Wed Feb 27 15:59:16 2013 +0100 @@ -457,9 +457,9 @@ } private void processLoopExit(LoopExitNode exitNode, BlockState initialState, BlockState exitState) { - HashMap proxies = new HashMap<>(); + HashMap proxies = new HashMap<>(); - for (ValueProxyNode proxy : exitNode.proxies()) { + for (ProxyNode proxy : exitNode.proxies()) { ObjectState obj = exitState.getObjectState(proxy.value()); if (obj != null) { proxies.put(obj.virtual, proxy); @@ -473,7 +473,7 @@ ObjectState valueObj = exitState.getObjectState(value); if (valueObj == null) { if ((value instanceof PhiNode && ((PhiNode) value).merge() == exitNode.loopBegin()) || initialObj == null || !initialObj.isVirtual() || initialObj.getEntry(i) != value) { - ValueProxyNode proxy = new ValueProxyNode(value, exitNode, PhiType.Value); + ProxyNode proxy = new ProxyNode(value, exitNode, PhiType.Value); obj.setEntry(i, proxy); effects.addFloatingNode(proxy); } @@ -481,9 +481,9 @@ } } else { if (initialObj == null || initialObj.isVirtual()) { - ValueProxyNode proxy = proxies.get(obj.virtual); + ProxyNode proxy = proxies.get(obj.virtual); if (proxy == null) { - proxy = new ValueProxyNode(obj.getMaterializedValue(), exitNode, PhiType.Value); + proxy = new ProxyNode(obj.getMaterializedValue(), exitNode, PhiType.Value); effects.addFloatingNode(proxy); } else { effects.replaceFirstInput(proxy, proxy.value(), obj.getMaterializedValue());