# HG changeset patch # User Thomas Wuerthinger # Date 1379557651 -7200 # Node ID 972f2e2c797a7dd149a6e320e65d1f7a0f084eba # Parent 0d16339188ef7e9b9ac9980625926cc12a84fad8 Fix a bug in the escape analysis of pi nodes. diff -r 0d16339188ef -r 972f2e2c797a graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java Thu Sep 19 04:11:20 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java Thu Sep 19 04:27:31 2013 +0200 @@ -70,6 +70,14 @@ public void virtualize(VirtualizerTool tool) { State state = tool.getObjectState(object); if (state != null && state.getState() == EscapeState.Virtual) { + ResolvedJavaType virtualObjectType = state.getVirtualObject().type(); + if (this.kind() == Kind.Object) { + ObjectStamp myStamp = ((ObjectStamp) this.stamp()); + ResolvedJavaType myType = myStamp.type(); + if (!myType.isAssignableFrom(virtualObjectType)) { + return; + } + } tool.replaceWithVirtual(state.getVirtualObject()); } }