comparison graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java @ 20122:b9f65c441427

allow lowering of UnsafeLoadNode while guards are still floating
author Doug Simon <doug.simon@oracle.com>
date Wed, 01 Apr 2015 17:40:02 +0200
parents 5d069d341b7d
children cba35d171cd1
comparison
equal deleted inserted replaced
20121:5f533a5c2aaf 20122:b9f65c441427
325 state.lastMemorySnapshot.put(identity, checkpoint); 325 state.lastMemorySnapshot.put(identity, checkpoint);
326 } 326 }
327 327
328 private static void processFloatable(FloatableAccessNode accessNode, MemoryMapImpl state) { 328 private static void processFloatable(FloatableAccessNode accessNode, MemoryMapImpl state) {
329 StructuredGraph graph = accessNode.graph(); 329 StructuredGraph graph = accessNode.graph();
330 assert accessNode.getNullCheck() == false;
331 LocationIdentity locationIdentity = accessNode.location().getLocationIdentity(); 330 LocationIdentity locationIdentity = accessNode.location().getLocationIdentity();
332 if (accessNode.canFloat()) { 331 if (accessNode.canFloat()) {
332 assert accessNode.getNullCheck() == false;
333 MemoryNode lastLocationAccess = state.getLastLocationAccess(locationIdentity); 333 MemoryNode lastLocationAccess = state.getLastLocationAccess(locationIdentity);
334 FloatingAccessNode floatingNode = accessNode.asFloatingNode(lastLocationAccess); 334 FloatingAccessNode floatingNode = accessNode.asFloatingNode(lastLocationAccess);
335 ValueAnchorNode anchor = null; 335 ValueAnchorNode anchor = null;
336 GuardingNode guard = accessNode.getGuard(); 336 GuardingNode guard = accessNode.getGuard();
337 if (guard != null) { 337 if (guard != null) {