src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/UseTrappingNullChecksPhase.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/UseTrappingNullChecksPhase.java

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/UseTrappingNullChecksPhase.java

Print this page

        

*** 24,35 **** import static org.graalvm.compiler.core.common.GraalOptions.OptImplicitNullChecks; import java.util.List; ! import org.graalvm.compiler.debug.Debug; ! import org.graalvm.compiler.debug.DebugCounter; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.nodeinfo.InputType; import org.graalvm.compiler.nodes.AbstractBeginNode; import org.graalvm.compiler.nodes.AbstractDeoptimizeNode; import org.graalvm.compiler.nodes.AbstractEndNode; --- 24,35 ---- import static org.graalvm.compiler.core.common.GraalOptions.OptImplicitNullChecks; import java.util.List; ! import org.graalvm.compiler.debug.CounterKey; ! import org.graalvm.compiler.debug.DebugContext; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.nodeinfo.InputType; import org.graalvm.compiler.nodes.AbstractBeginNode; import org.graalvm.compiler.nodes.AbstractDeoptimizeNode; import org.graalvm.compiler.nodes.AbstractEndNode;
*** 56,69 **** import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.MetaAccessProvider; public class UseTrappingNullChecksPhase extends BasePhase<LowTierContext> { ! private static final DebugCounter counterTrappingNullCheck = Debug.counter("TrappingNullCheck"); ! private static final DebugCounter counterTrappingNullCheckExistingRead = Debug.counter("TrappingNullCheckExistingRead"); ! private static final DebugCounter counterTrappingNullCheckUnreached = Debug.counter("TrappingNullCheckUnreached"); ! private static final DebugCounter counterTrappingNullCheckDynamicDeoptimize = Debug.counter("TrappingNullCheckDynamicDeoptimize"); @Override protected void run(StructuredGraph graph, LowTierContext context) { if (context.getTarget().implicitNullCheckLimit <= 0) { return; --- 56,69 ---- import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.MetaAccessProvider; public class UseTrappingNullChecksPhase extends BasePhase<LowTierContext> { ! private static final CounterKey counterTrappingNullCheck = DebugContext.counter("TrappingNullCheck"); ! private static final CounterKey counterTrappingNullCheckExistingRead = DebugContext.counter("TrappingNullCheckExistingRead"); ! private static final CounterKey counterTrappingNullCheckUnreached = DebugContext.counter("TrappingNullCheckUnreached"); ! private static final CounterKey counterTrappingNullCheckDynamicDeoptimize = DebugContext.counter("TrappingNullCheckDynamicDeoptimize"); @Override protected void run(StructuredGraph graph, LowTierContext context) { if (context.getTarget().implicitNullCheckLimit <= 0) { return;
*** 173,188 **** } } } private static void replaceWithTrappingNullCheck(AbstractDeoptimizeNode deopt, IfNode ifNode, LogicNode condition, DeoptimizationReason deoptimizationReason, long implicitNullCheckLimit) { ! counterTrappingNullCheck.increment(); if (deopt instanceof DynamicDeoptimizeNode) { ! counterTrappingNullCheckDynamicDeoptimize.increment(); } if (deoptimizationReason == DeoptimizationReason.UnreachedCode) { ! counterTrappingNullCheckUnreached.increment(); } IsNullNode isNullNode = (IsNullNode) condition; AbstractBeginNode nonTrappingContinuation = ifNode.falseSuccessor(); AbstractBeginNode trappingContinuation = ifNode.trueSuccessor(); --- 173,189 ---- } } } private static void replaceWithTrappingNullCheck(AbstractDeoptimizeNode deopt, IfNode ifNode, LogicNode condition, DeoptimizationReason deoptimizationReason, long implicitNullCheckLimit) { ! DebugContext debug = deopt.getDebug(); ! counterTrappingNullCheck.increment(debug); if (deopt instanceof DynamicDeoptimizeNode) { ! counterTrappingNullCheckDynamicDeoptimize.increment(debug); } if (deoptimizationReason == DeoptimizationReason.UnreachedCode) { ! counterTrappingNullCheckUnreached.increment(debug); } IsNullNode isNullNode = (IsNullNode) condition; AbstractBeginNode nonTrappingContinuation = ifNode.falseSuccessor(); AbstractBeginNode trappingContinuation = ifNode.trueSuccessor();
*** 200,210 **** // Opportunity for implicit null check as part of an existing read found! fixedAccessNode.setStateBefore(deopt.stateBefore()); fixedAccessNode.setNullCheck(true); deopt.graph().removeSplit(ifNode, nonTrappingContinuation); trappingNullCheck = fixedAccessNode; ! counterTrappingNullCheckExistingRead.increment(); } } } } --- 201,211 ---- // Opportunity for implicit null check as part of an existing read found! fixedAccessNode.setStateBefore(deopt.stateBefore()); fixedAccessNode.setNullCheck(true); deopt.graph().removeSplit(ifNode, nonTrappingContinuation); trappingNullCheck = fixedAccessNode; ! counterTrappingNullCheckExistingRead.increment(debug); } } } }
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/UseTrappingNullChecksPhase.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File