Mercurial > hg > graal-compiler
changeset 9942:de3653e68738
proper assertions in VirtualizerToolImpl.setVirtualEntry
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Fri, 07 Jun 2013 13:44:00 +0200 |
parents | 8448a4e15f95 |
children | 671bcaf13017 |
files | graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java Fri Jun 07 13:36:44 2013 +0200 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java Fri Jun 07 13:44:00 2013 +0200 @@ -87,16 +87,24 @@ ObjectState obj = (ObjectState) objectState; assert obj != null && obj.isVirtual() : "not virtual: " + obj; ObjectState valueState = state.getObjectState(value); + ValueNode newValue = value; if (valueState == null) { - obj.setEntry(index, getReplacedValue(value)); + newValue = getReplacedValue(value); + assert obj.getEntry(index) == null || obj.getEntry(index).kind() == newValue.kind() || (isObjectEntry(obj.getEntry(index)) && isObjectEntry(newValue)); } else { - ValueNode newValue = value; if (valueState.getState() != EscapeState.Virtual) { newValue = valueState.getMaterializedValue(); + assert newValue.kind() == Kind.Object; + } else { + newValue = valueState.getVirtualObject(); } - assert obj.getEntry(index) == null || obj.getEntry(index).kind() == newValue.kind(); - obj.setEntry(index, newValue); + assert obj.getEntry(index) == null || isObjectEntry(obj.getEntry(index)); } + obj.setEntry(index, newValue); + } + + private static boolean isObjectEntry(ValueNode value) { + return value.kind() == Kind.Object || value instanceof VirtualObjectNode; } @Override