Mercurial > hg > graal-compiler
changeset 10839:f3697f17f671
small fixes for early read elimination
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Mon, 22 Jul 2013 16:04:21 +0200 |
parents | 8b0c8fbbfa1c |
children | e43eb9fe98e5 |
files | graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java |
diffstat | 2 files changed, 4 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java Thu Jul 18 17:18:13 2013 +0200 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java Mon Jul 22 16:04:21 2013 +0200 @@ -70,7 +70,7 @@ ValueNode cachedValue = state.getReadCache(object, store.field()); ValueNode value = state.getScalarAlias(store.value()); - if (value == cachedValue) { + if (GraphUtil.unproxify(value) == GraphUtil.unproxify(cachedValue)) { effects.deleteFixedNode(store); deleted = true; }
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java Thu Jul 18 17:18:13 2013 +0200 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java Mon Jul 22 16:04:21 2013 +0200 @@ -36,8 +36,8 @@ import com.oracle.graal.nodes.util.*; import com.oracle.graal.phases.schedule.*; import com.oracle.graal.virtual.phases.ea.ReadEliminationBlockState.CacheEntry; +import com.oracle.graal.virtual.phases.ea.ReadEliminationBlockState.LoadCacheEntry; import com.oracle.graal.virtual.phases.ea.ReadEliminationBlockState.ReadCacheEntry; -import com.oracle.graal.virtual.phases.ea.ReadEliminationBlockState.LoadCacheEntry; public class ReadEliminationClosure extends EffectsClosure<ReadEliminationBlockState> { @@ -106,6 +106,8 @@ } state.killReadCache(write.location().getLocationIdentity()); state.addCacheEntry(identifier, value); + } else { + state.killReadCache(write.location().getLocationIdentity()); } } else if (node instanceof MemoryCheckpoint.Single) { processIdentity(state, ((MemoryCheckpoint.Single) node).getLocationIdentity());