Mercurial > hg > graal-compiler
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) { |