--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/FixReadsPhase.java 2017-11-03 23:57:25.313186345 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/FixReadsPhase.java 2017-11-03 23:57:24.986171711 -0700 @@ -221,7 +221,12 @@ EconomicMap endMap = endMaps.get(node); MapCursor entries = endMap.getEntries(); while (entries.advance()) { - if (registerNewValueStamp(entries.getKey(), entries.getValue())) { + ValueNode value = entries.getKey(); + if (value.isDeleted()) { + // nodes from this map can be deleted when a loop dies + continue; + } + if (registerNewValueStamp(value, entries.getValue())) { counterBetterMergedStamps.increment(debug); } }