# HG changeset patch # User Bernhard Urban # Date 1376991038 -7200 # Node ID ece2cee9f85fb5925337664f0220bb0b9bcd822c # Parent 03fb03763b6329d86e3000a74ade2015f6616aee FloatingReadNode: don't use lastLocationAccess as anchor. use guard instead. diff -r 03fb03763b63 -r ece2cee9f85f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Tue Aug 20 09:31:27 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Tue Aug 20 11:30:38 2013 +0200 @@ -626,7 +626,7 @@ * when arrayClass is an object class, which might not be the case in other * parts of the compiled method. */ - FloatingReadNode arrayElementKlass = graph.unique(new FloatingReadNode(arrayClass, location, BeginNode.prevBegin(storeIndexed), StampFactory.forKind(wordKind()))); + FloatingReadNode arrayElementKlass = graph.unique(new FloatingReadNode(arrayClass, location, null, StampFactory.forKind(wordKind()), BeginNode.prevBegin(storeIndexed))); CheckCastDynamicNode checkcast = graph.add(new CheckCastDynamicNode(arrayElementKlass, value, true)); graph.addBeforeFixed(storeIndexed, checkcast); value = checkcast; diff -r 03fb03763b63 -r ece2cee9f85f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java Tue Aug 20 09:31:27 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java Tue Aug 20 11:30:38 2013 +0200 @@ -40,6 +40,10 @@ this(object, location, lastLocationAccess, stamp, null, BarrierType.NONE, false); } + public FloatingReadNode(ValueNode object, LocationNode location, Node lastLocationAccess, Stamp stamp, GuardingNode guard) { + this(object, location, lastLocationAccess, stamp, guard, BarrierType.NONE, false); + } + public FloatingReadNode(ValueNode object, LocationNode location, Node lastLocationAccess, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean compressible) { super(object, location, stamp, guard, barrierType, compressible); this.lastLocationAccess = lastLocationAccess;