# HG changeset patch # User Lukas Stadler # Date 1443006578 -7200 # Node ID 87c6d0fe96e9299af9919b45e5f263d2ed3f71b1 # Parent 93859a908b3200f6296bb6d07c30d243d3465273 more accurate position for EnsureVirtual exception diff -r 93859a908b32 -r 87c6d0fe96e9 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/EnsureVirtualizedNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/EnsureVirtualizedNode.java Wed Sep 23 11:35:57 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/EnsureVirtualizedNode.java Wed Sep 23 13:09:38 2015 +0200 @@ -28,6 +28,7 @@ import com.oracle.graal.graph.NodeClass; import com.oracle.graal.graph.VerificationError; import com.oracle.graal.nodeinfo.NodeInfo; +import com.oracle.graal.nodes.AbstractEndNode; import com.oracle.graal.nodes.FixedWithNextNode; import com.oracle.graal.nodes.ValueNode; import com.oracle.graal.nodes.spi.Lowerable; @@ -71,6 +72,14 @@ public static void ensureVirtualFailure(Node location, Stamp stamp) { Throwable exception = new VerificationError("Object should not be materialized (stamp=%s):", stamp); - throw GraphUtil.approxSourceException(location, exception); + Node pos; + if (location instanceof FixedWithNextNode) { + pos = ((FixedWithNextNode) location).next(); + } else if (location instanceof AbstractEndNode) { + pos = ((AbstractEndNode) location).merge(); + } else { + pos = location; + } + throw GraphUtil.approxSourceException(pos, exception); } }