Mercurial > hg > truffle
changeset 7895:f7b40e9d490c
ValueProxyNodes for memory locations at loop exits
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Wed, 27 Feb 2013 14:35:16 +0100 |
parents | fed868d1aefd |
children | 649379d3f88d |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java |
diffstat | 1 files changed, 10 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java Wed Feb 27 09:53:49 2013 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java Wed Feb 27 14:35:16 2013 +0100 @@ -230,6 +230,16 @@ phi.initializeValueAt(endIndex, entry.getValue().getLastLocationAccess(key)); } } + for (Map.Entry<LoopExitNode, MemoryMap> entry : loopInfo.exitStates.entrySet()) { + LoopExitNode exit = entry.getKey(); + MemoryMap state = entry.getValue(); + for (Object location : modifiedLocations) { + ValueNode lastAccessAtExit = state.lastMemorySnapshot.get(location); + if (lastAccessAtExit != null) { + state.lastMemorySnapshot.put(location, loop.graph().add(new ValueProxyNode(lastAccessAtExit, exit, PhiType.Memory))); + } + } + } return loopInfo.exitStates; } }