src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationClosure.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationClosure.java	Fri Jul  7 09:31:54 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationClosure.java	Fri Jul  7 09:31:54 2017

*** 29,40 **** --- 29,40 ---- import java.util.Iterator; import java.util.List; import org.graalvm.compiler.core.common.cfg.Loop; import org.graalvm.compiler.core.common.spi.ConstantFieldProvider; import org.graalvm.compiler.debug.Debug; import org.graalvm.compiler.graph.Node; + import org.graalvm.compiler.nodes.AbstractBeginNode; import org.graalvm.compiler.nodes.FieldLocationIdentity; import org.graalvm.compiler.nodes.FixedNode; import org.graalvm.compiler.nodes.FixedWithNextNode; import org.graalvm.compiler.nodes.LoopBeginNode; import org.graalvm.compiler.nodes.LoopExitNode;
*** 43,55 **** --- 43,55 ---- import org.graalvm.compiler.nodes.ProxyNode; import org.graalvm.compiler.nodes.StructuredGraph.ScheduleResult; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.ValueProxyNode; import org.graalvm.compiler.nodes.cfg.Block; import org.graalvm.compiler.nodes.extended.UnboxNode; import org.graalvm.compiler.nodes.extended.RawLoadNode; import org.graalvm.compiler.nodes.extended.RawStoreNode; + import org.graalvm.compiler.nodes.extended.UnboxNode; import org.graalvm.compiler.nodes.java.ArrayLengthNode; import org.graalvm.compiler.nodes.java.LoadFieldNode; import org.graalvm.compiler.nodes.java.LoadIndexedNode; import org.graalvm.compiler.nodes.java.StoreFieldNode; import org.graalvm.compiler.nodes.java.StoreIndexedNode;
*** 89,99 **** --- 89,99 ---- super(schedule, metaAccess, constantReflection, constantFieldProvider, loweringProvider); } @Override protected PEReadEliminationBlockState getInitialState() { ! return new PEReadEliminationBlockState(tool.getOptions(), tool.getDebug()); } @Override protected boolean processNode(Node node, PEReadEliminationBlockState state, GraphEffectList effects, FixedWithNextNode lastFixedNode) { if (super.processNode(node, state, effects, lastFixedNode)) {
*** 115,129 **** --- 115,129 ---- } else if (node instanceof RawLoadNode) { return processUnsafeLoad((RawLoadNode) node, state, effects); } else if (node instanceof RawStoreNode) { return processUnsafeStore((RawStoreNode) node, state, effects); } else if (node instanceof MemoryCheckpoint.Single) { ! COUNTER_MEMORYCHECKPOINT.increment(node.getDebug()); LocationIdentity identity = ((MemoryCheckpoint.Single) node).getLocationIdentity(); processIdentity(state, identity); } else if (node instanceof MemoryCheckpoint.Multi) { ! COUNTER_MEMORYCHECKPOINT.increment(node.getDebug()); for (LocationIdentity identity : ((MemoryCheckpoint.Multi) node).getLocationIdentities()) { processIdentity(state, identity); } }
*** 424,434 **** --- 424,435 ---- // it is visited if (loopKilledLocations == null) { loopKilledLocations = new LoopKillCache(1/* 1.visit */); loopLocationKillCache.put(loop, loopKilledLocations); } else { ! OptionValues options = loop.getHeader().getBeginNode().getOptions(); ! AbstractBeginNode beginNode = loop.getHeader().getBeginNode(); + OptionValues options = beginNode.getOptions(); if (loopKilledLocations.visits() > ReadEliminationMaxLoopVisits.getValue(options)) { // we have processed the loop too many times, kill all locations so the inner // loop will never be processed more than once again on visit loopKilledLocations.setKillsAll(); } else {
*** 443,455 **** --- 444,456 ---- // every location that is alive before the loop but not after is killed by the // loop for (LocationIdentity location : forwardEndLiveLocations) { loopKilledLocations.rememberLoopKilledLocation(location); } ! if (Debug.isLogEnabled() && loopKilledLocations != null) { ! Debug.log("[Early Read Elimination] Setting loop killed locations of loop at node %s with %s", ! loop.getHeader().getBeginNode(), forwardEndLiveLocations); ! if (debug.isLogEnabled() && loopKilledLocations != null) { ! debug.log("[Early Read Elimination] Setting loop killed locations of loop at node %s with %s", ! beginNode, forwardEndLiveLocations); } } // remember the loop visit loopKilledLocations.visited(); }

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationClosure.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File