Mercurial > hg > graal-compiler
changeset 22689:87c6d0fe96e9
more accurate position for EnsureVirtual exception
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Wed, 23 Sep 2015 13:09:38 +0200 |
parents | 93859a908b32 |
children | fd2a8e6da876 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/EnsureVirtualizedNode.java |
diffstat | 1 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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); } }