Mercurial > hg > graal-jvmci-8
changeset 18693:8d7ecba12c5d
Check for compatible stamps in read elimination.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Tue, 16 Dec 2014 14:04:51 +0100 |
parents | d6c33eb93b9f |
children | ec1b0b097d82 |
files | graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java |
diffstat | 1 files changed, 3 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java Tue Dec 16 10:59:29 2014 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java Tue Dec 16 14:04:51 2014 +0100 @@ -62,7 +62,7 @@ LoadCacheEntry identifier = new LoadCacheEntry(object, access.field()); ValueNode cachedValue = state.getCacheEntry(identifier); if (node instanceof LoadFieldNode) { - if (cachedValue != null) { + if (cachedValue != null && access.stamp().isCompatible(cachedValue.stamp())) { effects.replaceAtUsages(access, cachedValue); addScalarAlias(access, cachedValue); deleted = true; @@ -87,7 +87,7 @@ ValueNode object = GraphUtil.unproxify(read.object()); ReadCacheEntry identifier = new ReadCacheEntry(object, read.location()); ValueNode cachedValue = state.getCacheEntry(identifier); - if (cachedValue != null) { + if (cachedValue != null && read.stamp().isCompatible(cachedValue.stamp())) { if (read.getGuard() != null && !(read.getGuard() instanceof FixedNode)) { effects.addFixedNodeBefore(ValueAnchorNode.create((ValueNode) read.getGuard()), read); } @@ -122,7 +122,7 @@ ValueNode object = GraphUtil.unproxify(load.object()); UnsafeLoadCacheEntry identifier = new UnsafeLoadCacheEntry(object, load.offset(), load.getLocationIdentity()); ValueNode cachedValue = state.getCacheEntry(identifier); - if (cachedValue != null) { + if (cachedValue != null && load.stamp().isCompatible(cachedValue.stamp())) { effects.replaceAtUsages(load, cachedValue); addScalarAlias(load, cachedValue); deleted = true;